본문 바로가기
학습/JAVA

11. 기본 API 클래스(3)

by Elfen Lied 2022. 10. 31.
반응형

- String 생성자

import java.io.UnsupportedEncodingException;
import java.util.Arrays;

public class StringDemo {
	public static void main(String[] args) {
		
		// 문자열 -> 바이트배열
		String str = "Hello Java";
		byte[] hello = str.getBytes();
		System.out.println(Arrays.toString(hello));
		
		// 바이트 배열 -> 문자열
		byte[] bytes1 = {72, 101, 108, 108, 111, 32, 74, 97, 118, 97};
		String str2 = new String(bytes1);
		System.out.println(str2);
		
		// 6번 인덱스부터 4개 (...74, 97, 118, 97 -> 이부분 문자열로 변환)
		String str3 = new String(bytes1, 6, 4);
		System.out.println(str`3);
		
		// 지정한 문자셋으로 디코딩
		try {
			String str4 = new String(bytes1, "utf-8");
			System.out.println(str4);
			String str5 = new String(bytes1, 6, 4, "utf-8");
			System.out.println(str5);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		
	}
    
}

값
[72, 101, 108, 108, 111, 32, 74, 97, 118, 97]

Hello Java

Java

Hello Java

Java
import java.util.Arrays;

public class StringDemo2 {
	public static void main(String[] args) {
		// 문자열 -> char배열
		String str = "Hello Java";
		char[] charArray = str.toCharArray();
		System.out.println(Arrays.toString(charArray));
		
		// char배열 -> 문자열
		char[] chArr = {'H', 'e', 'l', 'l', 'o', ' ', 'J', 'a', 'v', 'a'};
		String str2 = new String(chArr);
		System.out.println(chArr);
		String str3 = new String(chArr, 6, 4);
		System.out.println(str3);
	}
}

값
[H, e, l, l, o,  , J, a, v, a]

Hello Java

Java

 

  • String 메소드 charAt(int)
import java.util.Arrays;

public class StringDemo3 {
	public static void main(String[] args) {
		String str = "가나다라마바사";
		
		for (int i = 0; i < str.length(); i++) {
			System.out.println(str.charAt(i));
		}
		
		System.out.println("===============");
		char charAt = str.charAt(0);
		System.out.println(charAt);
	}
}

값

가
나
다
라
마
바
사
===============
가

 

 

  • 문자열을 바이트 배열로 변환
import java.io.UnsupportedEncodingException;
import java.util.Arrays;

public class StringDemo4 {
	public static void main(String[] args) throws UnsupportedEncodingException {
		String str = "안녕하세요";
		byte[] bytes = str.getBytes();
		byte[] bytes2 = str.getBytes("utf-8");
		byte[] bytes3 = str.getBytes("EUC-KR");
		System.out.println(Arrays.toString(bytes2));
		System.out.println(Arrays.toString(bytes3));
		
		String decoStr1 = new String(bytes2);
		String decoStr2 = new String(bytes2, "utf-8");
		String decoStr3 = new String(bytes2, "EUC-KR");
		
		System.out.println(decoStr1); // MS949 디코딩
		System.out.println(decoStr2); // UTF-8 디코딩
		System.out.println(decoStr3); // EUC-KR 디코딩
	}
}

값
[-20, -107, -120, -21, -123, -107, -19, -107, -104, -20, -124, -72, -20, -102, -108]
[-66, -56, -77, -25, -57, -49, -68, -68, -65, -28]
?븞?뀞?븯?꽭?슂
안녕하세요
???????몄??

 

 

  • 문자열 찾기 indexOf()
public class StringDemo5 {
	public static void main(String[] args) {

		String message = "문자열이 시작되는 인덱스를 반환한다";

		int indexOf1 = message.indexOf("문자열");
		System.out.println(indexOf1);
		int indexOf2 = message.indexOf("시작");
		System.out.println(indexOf2);
		
		// 문자열을 찾지 못하면 -1 반환
		int indexOf3 = message.indexOf("Hello");
		System.out.println(indexOf3);

	}
}

값
0
5
-1

====================================================================

import java.util.ArrayList;
import java.util.List;

public class StringDemo6 {
	public static void main(String[] args) {

		String message = "문자열 Java 시작 Java 인덱스를 Java 반환한다.";
		
		// 왼쪽에서 오른쪽으로 검색
		// 최초로 일치하는 문자열의 시작 인덱스 반환
		int indexOf1 = message.indexOf("Java");
		System.out.println(indexOf1);
		int indexOf2 = message.indexOf("Java", 5);
		System.out.println(indexOf2);
		int indexOf3 = message.indexOf("Java", 13);
		System.out.println(indexOf3);
		
		List<Integer> list = new ArrayList<Integer>();
		int i = -1;
		do {
			int idx = message.indexOf("Java", i+1);
			if(idx != -1) {
				list.add(idx);
			}
			i = idx;
		} while (i != -1); 
		System.out.println(list);
		
		// 오른쪽에서 왼쪽으로 검색
		int lastIndexOf = message.lastIndexOf("Java");
		System.out.println(lastIndexOf);
	}
}

값

4
12
22
[4, 12, 22]
22

 

 

 

- 문자열 대치

  • replace(String, String)
public class StringDemo7 {
	public static void main(String[] args) {
		String oldStr = "자바는 객체지향 언어입니다. 자바는 풍부한 API를 지원합니다.";
		// replace(변경할 문자, 대체할 문자)
		String replace = oldStr.replace("자바", "Java");
		System.out.println(replace);
		
		// str1을 수정하는 것이 아님
		// String 객체는 불변객체
		String str1 = "개발자과정";
		str1 += "자바"; // 새로운 객체 생성
		str1 += "오라클"; // 새로운 객체 생성
		str1 += "JSP"; // 새로운 객체 생성
		System.out.println(str1);
	}
}

값
Java는 객체지향 언어입니다. Java는 풍부한 API를 지원합니다.

개발자과정자바오라클JSP

 

 

- 문자열 추출

  • substring(int)
  • substring(int,int)
public class StringDemo8 {
	public static void main(String[] args) {
		String ssn = "880815-1234567";
		
		// 인덱스2번부터 끝까지
		String substring1 = ssn.substring(2);
		System.out.println(substring1);
		
		// 인덱스7 ~ 인덱스13 (13은 포함하지 않음)
		String substring2 = ssn.substring(7, 13);
		System.out.println(substring2);
		
	}
}

값
0815-1234567
123456

 

 

  • 문자열 앞뒤 공백 잘라내기 trim()
public class StringDemo9 {
	public static void main(String[] args) {
		// 대소문자변경
		String str1 = "Java Programming";
		String str2 = "JAVA PROGRAMMING"; 
		// 작성시 변환할 문자열 드래그 한뒤 단축키 누름
		// ctrl + shif + x 대문자변경
		// ctrl + shif + y 소문자변경
		
		String upperCase = str1.toUpperCase(); // 대문자로 변경
		String lowerCase = str1.toLowerCase(); // 소문자로 변경
		System.out.println(upperCase);
		System.out.println(lowerCase);
		
		// 대소문자 관계 없이 동등비교
		System.out.println(str1.equalsIgnoreCase(str2));
		
		// 문자열 "ja"로 시작하는가?
		System.out.println(str1.startsWith("ja")); 
		// 문자열 "ing"로 끝나는가?
		System.out.println(str1.endsWith("ing"));
		
		// 앞뒤 공백제거
		String str3 = "            Java Programming    ";
		String trimStr3 = str3.trim();
		System.out.println(trimStr3);
	}
}

값
JAVA PROGRAMMING
java programming

true

false
true

Java Programming

 

 

  • 문자열 변환 String.valueOf()
public class StringDemo10 {
	public static void main(String[] args) {
		String str1 = 10 + "";
		String valueOf1 = String.valueOf(10);
		
		String str2 = 10.5 + "";
		String valueOf2 = String.valueOf(10.5);
		
		String str3 = 10.5f + "";
		String valueOf3 = String.valueOf(10.5f);
		
		String str4 = true + "";
		String valueOf4 = String.valueOf(true);
		
		String str5 = '가' + "";
		String valueOf5 = String.valueOf(str5);
		
		String test = "     "; // 공백문자
		
		System.out.println(valueOf1);
		System.out.println(valueOf2);
		System.out.println(valueOf3);
		System.out.println(valueOf4);
		System.out.println(valueOf5);
		System.out.println(test.isEmpty()); // 공백문자를 요소로 인정함
		System.out.println(test.isBlank()); // 공백문자를 요소로 인정하지 않음
	}
}

값

10
10.5
10.5
true
가

false
true

 

 

  • split() 메소드
import java.util.Arrays;

public class StringDemo11 {
	public static void main(String[] args) {
		String str = "홍길동&이수홍,박연수,김자바-최명호&김길동";
		String[] split1 = str.split("&|,|-");
		System.out.println(Arrays.toString(split1));
		
		String str2 = "abcdefg";
		String[] split2 = str2.split("");
		System.out.println(Arrays.toString(split2));
		
		String str3 = "01 0123 345 335 111 551";
		String[] split3 = str3.split(" ");
		System.out.println(Arrays.toString(split3));
		
		String str4 = "abcACdEeFfg123123123";
		String[] split4 = str4.split("[a-z|A-Z]");
		System.out.println(Arrays.toString(split4));
	}
}

값
[홍길동, 이수홍, 박연수, 김자바, 최명호, 김길동]
[a, b, c, d, e, f, g]
[01, 0123, 345, 335, 111, 551]
[, , , , , , , , , , , 123123123]

 

 

  • StringTokenizer 클래스
import java.util.StringTokenizer;

public class StringTokenDemo {
	public static void main(String[] args) {
		String str = "가/나/다/라/마/바/사";
		StringTokenizer st = new StringTokenizer(str, "/");
		
		while (st.hasMoreElements()) { // hasMoreElements() : 반복할 요소가 있다면
			String token = st.nextToken();
			System.out.println(token);
		}
		
	}
}

값

가
나
다
라
마
바
사

 

 

  • StringBuffer, StringBuilder 클래스 (Buffer,Builder 같음)
public class StringBuilderExam {
	public static void main(String[] args) {
		StringBuilder sb = new StringBuilder();
		sb.append("자바");
		sb.append("오라클");
		sb.append("JSP");
		System.out.println(sb);
		
		sb.insert(2, "abc"); // endIndex(미포함)
		System.out.println(sb);
		sb.replace(2, 5, "Spring");
		System.out.println(sb);
		sb.delete(2, 3);
		System.out.println(sb);
		
		System.out.println(sb.length());
	}
}

값

자바오라클JSP
자바abc오라클JSP
자바Spring오라클JSP
자바pring오라클JSP
13

- String 클래스는 변경 할수 없다. (String은 불변객체)

글을 수정하면 수정되는게 아니라 계속 생성을 한다.

 

- StringBuffer, StringBuilder 클래스는 변경가능

StringBuffer, StringBuilder 사용하면 하나만 생성하고 그 값을 바꾼다.

반응형

'학습 > JAVA' 카테고리의 다른 글

13. List 인터페이스 (ArrayList)  (0) 2022.11.07
11. 기본 API 클래스(2)  (0) 2022.10.27
11. 기본 API 클래스(1)  (0) 2022.10.26
10. 예외처리  (0) 2022.10.25
9. 중첩 클래스와 중첩 인터페이스  (0) 2022.10.24

댓글