static은 객체를 생성하지 않고 사용하기 위해 만든 키워드이다.
static이 붙은 메서드나 변수는 "클래스 이름. 메서드"나 "클래스 이름, 변수" 처럼 사용한다.
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의 값을 변환한다.
5 카드의 중요 데이터로 카드값을 문자열 타입을 선언한다.
접근 제한자를 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"카드값 갖는 카드가 만들어진다.
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개를 생성했다.
단, 카드값은 중복될 수 있다.
'이론 > Data Structure , Algorithm' 카테고리의 다른 글
[210915] 백준 2798번 문제 풀이 / 블랙잭 (0) | 2021.09.15 |
---|---|
[210915] 백준 2920번 문제 풀이 / 음계 (0) | 2021.09.15 |
[210614] 자바 문제 리딩, 객체와 은닉화 (0) | 2021.06.14 |
[210601] 자바 문제 리딩, 전치 행렬 (0) | 2021.06.01 |
[210530] 자바 문제 리딩 , 배열에서 가장 큰 값과 작은 값 구하기 (0) | 2021.05.30 |