JAVA/JAVA 기초

[JAVA 기초] String 배열화

큐범 2021. 8. 3. 13:52

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의 정석 - (남궁성지음)