String 배열
1. String 배열의 선언과 생성
3개의 String 타입의 참조변수를 저장하기 위한 공간이 마련되고
참조형 변수의 기본값은 null이므로 각 요소의 값은 null로 초기화된다.
*null : 어떠한 객체도 가리키고 있지 않다는 뜻.
참조형은 기본값이 null이다. 그래서 기본값으로 null이 들어갔다.
2. String 배열의 초기화
new String[] 생략 가능
특별히 String 클래스만 "kim"과 같이 큰 따옴표로 간략히 표현하는 것이 허용된다.
하지만 원래 String은 클래스 이므로 왼쪽처럼 new 연산자를 통해 객체를 생성해줘야한다.
직접 값이 들어간 것처럼 그렸지만 문자열이 만들어지고 그 주소가 요소에 들어간다.
예12)
public class ArrayEx12 {
public static void main(String[] args) {
String[] names = {"Kim","Park", "Yi"};
//for문으로 String배열에 있는 모든 값 출력
for(int i=0; i<names.length; i++) {
System.out.println("names["+i+"]="+names[i]);
}
//배열 names의 세번째 요소를 tmp에 저장
String tmp = names[2];
System.out.println("tmp="+tmp);
names[0]="Yu"; //배열의 첫번째 요소 "Yu"로 바꿈
//향상된 for문
for(String str:names)
System.out.println(str);
}
}
//가위바위보 출력
public class ArrayEx12_1 {
public static void main(String[] args) {
// index : 0~3-1, 0~2
String[] game = { "가위", "바위", "보" };
// 임의의 수 출력. 10번 반복. 랜덤 3개
for (int i = 0; i < 10; i++) {
int n = (int) (Math.random() * 3);
System.out.println(game[n]);//임의의 수를 인덱스로 game배열에 넣음
}
}
}
예13) //16진수 ->2진수 **
public class ArrayEx13 {
public static void main(String[] args) {
char[] hex = {'C','A','F','E'};
String[] binary = { "0000", "0001", "0010", "0011"
, "0100", "0101", "0110", "0111"
, "1000", "1001", "1010", "1011"
, "1100", "1101", "1110", "1111" };
String result = "";
for(int i =0; i<hex.length; i++) {
if(hex[i] >='0' && hex[i] <='9') {
result +=binary[hex[i]-'0']; //'8'-'0'의 결과는 8이다.
}else { //A~F이면
result += binary[hex[i]-'A'+10]; // 'C'-'A'의 결과는 2
}
}
//String(char[] value)
System.out.println("hex:"+new String(hex));
System.out.println("binary:"+result);
}
}
먼저 변환하고자 하는 16진수를 배열 hex에 나열한다.
16진수에는 A~F까지 6개의 문자가 포함되므로 char배열로 처리하였다.
그리고 문자열 배열 binary에는 이진수 '0000'부터 '1111'(16진수로 0~F)까지 모두 16개의 값을 문자열로 저장하였다.
for문을 이용해서 배열 hex에 저장된 문자를 하나씩 읽어서 그에 해당하는 이진수 표현을 배열 binary에서 얻어 result에 덧붙이고 그 결과를 화면에 출력한다.
result += binary[hex[i]-'A'+10];
i의 값이 0일 때, hex[0]의 값은 'C'이므로, 위 문장은 다음과같이 계산된다.
-> result += binary[hex[0]-'A'+10]; //hex[0]은 'C'
-> result += binary['C'-'A'+10]; //'C'-'A' -> 67-65 ->2
-> result += binary[2+10];
-> result += binary[12];
-> result += "1100";
'JAVA > 배열(array)' 카테고리의 다른 글
[JAVA] 가변 배열 (0) | 2021.06.15 |
---|---|
[JAVA] char배열과 String클래스 (0) | 2021.06.15 |
[JAVA] 배열의 활용 예제/총합과 평균/ 최대값과 최소값/섞기/난수/정렬/빈도수 구하기 (0) | 2021.06.15 |
[JAVA] 배열의 복사 /System.arraycopy() (0) | 2021.06.15 |
[JAVA] Arrays.toString (0) | 2021.06.15 |