자바 질문있쓥니당!!!

package aaaa;
public class Box{
private int width,height;
private char fillChar;
public Box(){
this(10,1);
}
public Box(int width, int height){
this.width=width;
this.height=height;
}
public void draw(){
for(int i=0; i<height; i++){
for(int j=0; j<width; j++)
System.out.println(fillChar);
System.out.println(" ");
}
}
public void fill(char c){
this.fillChar=c;
}
public static void main(String[] args){
Box a = new Box();
Box b = new Box(20,3);
a.fill('*');
b.fill('%');
a.draw();
b.draw();
}
}


실행하면 
*
*
*
*
*
*
*
*
*
*

%
%
%
%
%
%
%
...

이렇게 \n 가 붙여지는데

나는 
**********
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
이렇게 표현하고싶은데 뭘 바꿔야할까?

19개의 댓글

println은 출력을 대상+줄바꿈으로 해주는 메서드임. print를 사용하면 됨.
0
2018.04.16
@알파스트라이크
오 땡큐땡큐 아까것도 도와줬지? 고마어!!
0
2018.04.16
@알파스트라이크
질문 하나 더 해도 될까?

저 제일위 클래스중에서 this 를 왜 써야하는거야? 어떻게 책찾아서 했는데 도저히 모르겠어... this 사용법을
0
@쏠탈플리즈
this는 클래스에서 이미 선언된 자기자신을 나타내는 지시자임.
자바에서 클래스 안의 멤버나 메서드를 사용할 때
System.out.print(출력할 값);
AAA.변수명 = 대입할 값;
BBB.메서드명();
이런 식으로 앞에 해당 객체(클래스)를 표기해서 나타내잖아.

그럼 클래스내에서 자기 클래스 자신을 나타낼 땐 어떻게 할까? 그럴 때 this를 쓰는거임.
0
2018.04.16
@알파스트라이크
public Box(){
this(10,1);
}
public Box(int width, int height){
this.width=width;
this.height=height;
}
요것중에 this(10,1)은 그럼 어떤 함수를 불러온거야???
진짜 미안해 빡대가리라 이해가 잘 안가 ㅠ
군대다녀와서 할라니까ㅜ
그래도 c랑 c++은 a+이었는데 ㅠㅠ
0
@쏠탈플리즈
간단해 this가 클래스 자기 자신이라 했잖아. Box 클래스 내에서 쓰이니 당연히 this(숫자, 숫자)면 밖에서 볼 때 Box(숫자, 숫자) 랑 같다는 소리임.
즉 Box()로 매개변수를 안쓴 생성자를 사용할 때는 this(10, 1) 즉 Box(10, 1)이거로 보겠단 거임.
0
2018.04.16
@알파스트라이크
오오 조금 뭔가 알거같아!
0
@쏠탈플리즈
예를 들면 위 코드에서 8, 9, 10행을 보면
public Box(int width, int height){

this.width=width;

this.height=height;

이잖아?

생성자인데(해당 객체를 사용할 때 객체를 생성, 초기화 하는 내용을 알려주는 거라 보면 됨)
앞의 this.width와 this.height는 세 번째 줄에서 선언한 선언한 클래스의 멤버 private int width, height;임. 뒤에 = width; =height;는 8번째 출에서 생성자 구분의 매개변수로 들어가 있는 값이고. 표기를 둘다 똑같이 width, height로 해서 같아서 헷갈릴 수 있는데 두개가 서로 다름.

즉 3번째 줄, 8, 9, 10줄을 말로 하자면 '나 클래스 Box는 private 멤버 인트형 width, height 가지고 있음(세번째 줄) 그리고 Box a = new Box(width, height);로 날 생성하면(8번째 줄)
나(this)의 width 멤버엔(this.width) 첫번째 매개변수로 전해준 width를 넣고 나의 height멤버엔(this.height) 두번째 매개변수 변수로 전해준 height를 넣겠음.(9, 10번째 줄)
이거임.
0
2018.04.16
@알파스트라이크
아하 그러니까 this.width=width는 제일 위에 private에있는 wideth 에다가 매개변수로 받은 width를 넣으라는 뜻인거지??

여기서 this를 쓰는 이유가 width가 매개변수를 칭하는건지 젤위에 private로 선언한 width인지 몰라서 쓰는거란 말이지?

그럼 private에 만약에 wid라고 선언했으면

똑같은자리에 wid= width; 쓰면 가능한문장이야?
0
@쏠탈플리즈
앞부분에 this는 써 줘야지
0
2018.04.16
@알파스트라이크
아하 this는 꼭 써줘야 하는구나??
0
@쏠탈플리즈
ㅇㅇ 그냥 main 안에 임의로 만든 혼자 노는 변수가 아니라 클래스가 자기 단위로 가지고 있는 변수 즉, 멤버 잖아. 따라서 소속을 언급해 주는 셈이지. 그리고 저 경우엔 자기 클래스 안에서 언급하는 거니 그 클래스 언급을 this로 하는거고.

함수와 메서드의 관계도 역시 마찬가지. 메서드는 클래스 소속이니 앞에 클래스명을 써 주는거.

System.out.println() 같이 지금 그냥 쓰고 있는 함수들도 죄다 그렇게 호출되는 거임. System이란 객체 내에 out 안에 있는 println()이란 메서드를 불러오는 거.
0
2018.04.16
@알파스트라이크
아하!~ System도 클래스였던거였네!?
System 클래스 안에 out 클래스 안에 있는 println함수를 불러온거구나?
0
2018.04.16
@쏠탈플리즈
아 private는 왜쓰는건지 또 질문해도 돼?
0
@쏠탈플리즈
ㅇㅇ 내가 아는건 답해줄 수 있음
private는 접근 제한자. public을 쓰면 클래스 밖에서도 접근이 가능하고 private를 쓰면 클래스 밖에서 직접 접근이 안됨.
0
2018.04.16
@알파스트라이크
너 참 설명 잘한다
잘 아는거랑 설명 잘하는거랑은 다른건데

물론 잘 알아야 잘 설명하는건 맞는데
아주아주 정확히 알아야 설명할 수 있잖아

너의 실력이 부럽다 고마워 도움 정말 많이 됐어
0
@쏠탈플리즈
조금 더 첨언하자면

예를 들면 위에 Box의 private 멤버로 width, height를 선언하고 값 대입은 생성자 Box() 또는 Box(m, n)으로 하잖아?
그런데 별도로 Box a = new Box(); 한 뒤 a.width = k; 같은 식으로 직접 private멤버인 width를 언급해서 변경이 안됨.

반면 그 아래 생성자 Box(), Box(int width, int height)와 draw, fill 메서드는 public으로 선언되어 있잖아?

저 경우는 클래스 밖에서 접근이 가능하단 소리지.
즉 밖에서 Box b = new Box(20, 3);으로 생성이 가능하고
fill은 public이니 b.fill(캐릭터); 형태로 메서드 사용이 가능.

만약 private로 선언된 멤버나 메서드를 외부에서 어떻게든 접근하려면 public으로 접근 가능한 메서드를 '클래스 안에' 만들어서 클래스가 직접 이를 불러오고 변경하는 방식 즉 간접적으로 접근해야 함.
즉 저 class Box 안에 public void changeWidth(int m_wide){ this.width = m_width; } 같은 메서드를 만들어주고 밖에서 a.changeWidth(4); 이런식으로 써야 함.
0
@쏠탈플리즈
ㅎㅎ 칭찬 고마워 사실 나도 잘안다기 보단 처음 배울 때 누구나 많이 헷갈리잖아. 그런거 파다보면 나중에 아 누가 나한테도 이렇게 가르쳐줬으면 이해 잘됐겠다 생각이 들어서 그런건지도.
0
2018.04.16
고마워 할 줄 아는 사람
0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
180526 [정보] G마켓에서 검색을 하면 검색이 안되고 그냥 메인페이지가 새... r33156 0 7 분 전 10
180525 [컴퓨터] 메인보드에 맞는 그래픽 카드 좀 추천해줘 10 갠챠나 0 1 시간 전 54
180524 [잡담] 개드립접속시 css 차단인가 광고차단 풀라고 하는데 2 스시오 0 1 시간 전 42
180523 [컴퓨터] 님들 모니터암 이거 호환 될거같음? 7 저는기어다닐거에요 0 1 시간 전 60
180522 [잡담] 리얼포스 45g 10만원에 파는데 5 짬지 0 2 시간 전 136
180521 [모바일] 내 s20+ 망가짐 4 모코하와이 0 4 시간 전 117
180520 [잡담] 왜 웹 발전은 거꾸로 가는가 1 노보케인 0 9 시간 전 253
180519 [컴퓨터] 이 정도면 이륙 가능함? 2 Cat드립미어캣 0 9 시간 전 99
180518 [컴퓨터] 씨퓨 온도상승으로 인한 쿨러작동 관련하여 질문드려용 ㅠㅠ 8 납븐연 0 10 시간 전 106
180517 [모바일] 뉴진스 혜린이 배경화면 3 Benetton 0 11 시간 전 221
180516 [모바일] 𝙄𝙑𝙀 배경화면 1 Benetton 0 11 시간 전 155
180515 [잡담] 개드립에올라왔던 새로운마우스 괴기 0 12 시간 전 149
180514 [컴퓨터] 외장 하드 추천좀 5 ㄴㅇㄹ 0 13 시간 전 78
180513 [프로그래밍] 의사는 뽑는 인원 제한하는데 부캠은 왜 제한 안 할까 5 조강현 0 13 시간 전 227
180512 [잡담] 제품좀 찾아줄 수 있음? 1 SNRB 0 13 시간 전 76
180511 [컴퓨터] 듀얼모니터 쓰는데 3 아잠시만내손으로... 0 14 시간 전 116
180510 [컴퓨터] 엠프리스 무접점 쓰다가 이번에 우연히 8bitdo 구매해서 쓰는데 울려대는사이렌 0 14 시간 전 109
180509 [컴퓨터] 아이맥 프로는 소리소문없이 사라졌네 chopin19 0 14 시간 전 113
180508 [컴퓨터] LTSC 쓰면 안됨? 3 가스가면스 0 15 시간 전 81
180507 [컴퓨터] 바브삼 개좋네 2 취업했다 0 16 시간 전 123