String배열의 선언과 생성
String[] name = new String[3];
자료형 | 기본값 |
---|---|
boolean | false |
char | '\u0000' |
byte, short, int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d 또는 0.0 |
String배열의 초기화
String[] name = new String[3];
name[0] = "Kim";
name[1] = "Park";
name[2] = "Yi";
또는 {}를 통해 초기화도 가능하다.
String[] name = new String[]{"Kim", "Park", "Yi"};
String[] name = {"Kim", "Park", "Yi"};
배열에 실제 객체가 아닌 객체의 주소가 저장되어 있는 것을 볼 수 있다. 참조형 배열의 경우 배열에 저장되는 것은 객체의 주소이다.
package Array;
public class ArrayEx12 {
public static void main(String[] args) {
String[] names = {"Kim", "Park", "Yi"};
for(int i=0; i<names.length; i++) {
System.out.println("names["+i+"] : "+names[i]);
}
String tmp = names[2];
System.out.println("tmp: "+tmp);
names[0]="Yu";
for(String str : names)
System.out.println(str);
}
}
//결과
names[0] : Kim
names[1] : Park
names[2] : Yi
tmp: Yi
Yu
Park
Yi
16진수를 2진수로 변경
package Array;
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'];
}else {
result += binary[hex[i]-'A'+10];
}
}
System.out.println("hex:"+new String(hex));
System.out.println("binary:"+result);
}
}
//결과
hex:CAFE
binary:1100101011111110
char배열과 String 클래스
String클래스는 char배열에 기능(메서드)을 추가한 것이다.
String str = "Java";
str = str + "8";
System.out.println(str);
문자열은 변경할 수 없기에 str에 "Java8"이라는 문자가 새로 생성된 것이다.
String클래스의 주요 메서드
이름 | 설명 |
---|---|
char charAt(int index) | 문자열에서 해당 위치(index)에 있는 문자를 반환한다. |
int length() | 문자열의 길이를 반환한다. |
String substring(int from, int to) | 문자열에서 해당 범위(from~to)에 있는 문자열을 반환한다. (to는 범위에 포함되지 않음) |
boolean equals(object obj) | 문자열의 내용이 obj와 같은지 확인한다. 같으면 결과는 true, 다르면 false가 된다. |
char[] toCharArray() | 문자열을 문자배열(char[])로 변환해서 반환한다. |
char배열과 String클래스의 변환
char[] chArr = {'A', 'B', 'C'};
String str = new String(chArr); //char배열 -> String
char[] tmp = str.toCharArray(); //String -> char배열
package Array;
public class ArrayEx14 {
public static void main(String[] args) {
String src="ABCDE";
for(int i=0; i<src.length(); i++) {
char ch = src.charAt(i);
System.out.println("src.charAt("+i+") : "+ ch);
}
char[] chArr = src.toCharArray();
System.out.println(chArr);
}
}
//결과
src.charAt(0) : A
src.charAt(1) : B
src.charAt(2) : C
src.charAt(3) : D
src.charAt(4) : E
ABCDE
모르스부호 활용
package Array;
public class ArrayEx15 {
public static void main(String[] args) {
String source="SOSHELP";
String[] morse = {".-","-...","-.-","-..",".",
"..-.","--.","....","..",".---",
"-.-",".-..","--","-.","---",
".--.","--.-",".-.","...","-",
"..-","...-",".--","-..-","-.--",
"--.."};
String result="";
for(int i=0; i<source.length(); i++) {
result +=morse[source.charAt(i)-'A'];
}
System.out.println("source:"+source);
System.out.println("morse:"+result);
}
}
//결과
source:SOSHELP
morse:...---.........-...--.
커맨드 라인을 통해 입력받기
package Array;
public class ArrayEx16 {
public static void main(String[] args) {
System.out.println("매개변수의 개수: "+args.length);
for(int i=0; i<args.length; i++) {
System.out.println("args["+i+"] = \""+args[i]+"\"");
}
}
}
//결과
매개변수의 개수: 0
package Array;
public class ArrayEx17 {
public static void main(String[] args) {
if(args.length != 3) {
System.out.println("usage: java ArrayEx17 NUM1 OP NUM2");
System.exit(0);
}
int num1 = Integer.parseInt(args[0]);
char op = args[1].charAt(0);
int num2 = Integer.parseInt(args[2]);
int result = 0;
switch(op) { //swtich문의 수식으로 char타입의 변수도 가능하다.
case'+':
result = num1 + num2;
break;
case'-':
result = num1 - num2;
break;
case'x':
result = num1 * num2;
break;
case'/':
result = num1 / num2;
break;
default:
System.out.println("지원하지 않는 연산입니다");
}
System.out.println("결과: "+result);
}
}
출처 : JAVA의 정석 - (남궁성지음)