본문 바로가기
이론/Data Structure , Algorithm

[210614] 자바 문제 리딩, static

by 6161990 2021. 6. 14.

 

static은 객체를 생성하지 않고 사용하기 위해 만든 키워드이다. 
static이 붙은 메서드나 변수는 "클래스 이름. 메서드"나 "클래스 이름, 변수" 처럼 사용한다.

 

 

 CardUtil 클래스

 

6    "H"나 "C" suit(슈트)를 갖도록 SUIT 배열로 선언한다. 

static 이므로 객체를 생성하지 않고 사용할 수 있다.

SUIT의 length는 2다. 

 

7    "A"에서 "T"사이의 valu(밸류)를 갖도록 VALU 배열로 선언한다. 

static 이므로 객체를 생성하지 않고 사용할 수 있다.

VALU의 length는 10이다.

 

6-7   "H"나 "C" suit(슈트)에 대해 

"A"에서 "T"사이의 valu(밸류)를 조합하여 20개의 카드값을 만들도록 한다. 

"CA", "C2" ,....... ,"CT" , "HA", "H2",......, "HT"

 

 

9-11    카드값의 [1]번째 값을 정수값으로 변환한다. 
카드값이 "H6"일 때 '6'을 6으로 변환하여 정수값을 얻는다.

 

13-15    카드값의 index번째 값을 얻는다. 

"H6"일 때, index가 0이면 'H'를, index가 1이면 '6'을 얻는다. 

그리고 index가 1일 때 정수값으로 변환한다. 

 

 

17-34  입력받은 밸류값은 char 타입이다. 
'A'일 때, 1
'T'일 때, 10
'2'에서 '9'는 '2'-'0'=2 ..... '9'-'0'='9'와 같이 

2에서 9의 값을 변환한다.

 


 

Card 클래스 

 

 

 카드의 중요 데이터로 카드값을 문자열 타입을 선언한다.
접근 제한자를 private으로 선언하여 데이터 보호한다.

 

8-10    카드값을 외부로 반환하는 메서드 선언

12-20    기본 생성자 선언

15    SUIT 배열은 static이므로 객체를 생성하지 않고 사용할 수 있다.
Math.random()*CardUtil.SUIT.length 은 2이므로
suit값은 0~1사이 임의의 정수를 반환한다.

17   VALU 배열도 static이므로 객체를 생성하지 않고 사용할 수 있다.
Math.random()*CardUtil.VALU.length 은 10이므로
valu는 0~9사이 임의의 정수를 반환한다.


19  SUIT 배열에서 0또는 1인 suit와 

VALU 배열에서 0~9사이의 값인 valu 값을 조합하여 카드값을 만든다.
예로, suit가 0이면 "H", valu가 5면 "6"을 얻고 , 이들을 붙이면 "H6"카드값 갖는 카드가 만들어진다.

 

 


 

CardMain 클래스

 

8    Card c3 = new Card(c1); 

"H4" 카드값을 가지면서 c1과 다른 카드를 생성한다.


11-12  c1,c2의 해시코드를 출력한다.

new로 생성한 객체는 해시코드가 같을 수 없다.

 

20  System.out.println(c1.equals(c3));

복사 생성자는 카드값이 같지만 해시코드가 다른 객체를 생성한다.

 

24-31  2x10 =20개의 카드 객체를 생성하여 카드값을 출력한다. 

new로 생성했으므로 모든 카드의 해시코드가 다르다. 

다시 말해 서로 다른 객체 20개를 생성했다. 

단, 카드값은 중복될 수 있다. 

 

 

출력 결과