자바 질문있쓥니당!!!

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
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
180025 [컴퓨터] 이거 모니터 고장난건가 EPS 0 1 시간 전 20
180024 [컴퓨터] 수냉쿨러 없었으면 덕트 쪽으로 컴터개발이 이루어 졋을듯 2 침혜랄 0 1 시간 전 53
180023 [컴퓨터] 요즘 보드들은 wifi가 신기하게 나오네 2 교미짝짓기 0 1 시간 전 104
180022 [잡담] 맥북 병은 사야 치료됨 8 장난없는사람 0 4 시간 전 196
180021 [컴퓨터] 모니터 이 둘 중이 뭐가 더 나음? 5 XDLOL 0 4 시간 전 87
180020 [컴퓨터] 모니터질문 or 추천좀용 10 20202021 0 6 시간 전 84
180019 [잡담] AI 요약 개웃기네 3 아도크 1 6 시간 전 240
180018 [컴퓨터] 모니터 사야하는데 11 XDLOL 0 6 시간 전 97
180017 [잡담] 크로미움 브라우저들 엔비디아 화면 깨지는 글리치 더 심해지네 1 ye 1 7 시간 전 98
180016 [잡담] s23 OneUI 6.1 업뎃 떴다 2 아도크 0 7 시간 전 276
180015 [컴퓨터] 영상편집용으로 프레데터 헬리오스 어떳슴까?? 2 으라야야 0 8 시간 전 76
180014 [잡담] 최근에 유튭프리미엄 우회 해본사람? 14 itx 0 9 시간 전 271
180013 [컴퓨터] 그래픽카드 하나 선물 해줘야 할거같은데 추천좀 12 침혜랄 0 9 시간 전 168
180012 [컴퓨터] g304 왤케 비쌈....ㄷ 16 스카이락 1 9 시간 전 241
180011 [잡담] 독거미 저건 뭐 어떻게되먹은거냐 4 쌉가능충 0 10 시간 전 267
180010 [잡담] 헤드셋 질문 4 하이람쥐썬더 0 10 시간 전 46
180009 [견적] 무선 이어폰 헤드셋 추천좀요 9 프갤갤갤갤 0 10 시간 전 82
180008 [모바일] 테블릿 키보드 미인식 어떻게 해야할까요?.. 4 匠人 0 10 시간 전 55
180007 [잡담] 타오직구 레이니왔다 11 짤랑이짤랑 0 11 시간 전 213
180006 [잡담] 혹시 드렁크디어 a75 쓰시는분 있으신가요? 3 백형 0 12 시간 전 48