Java

이것이 자바다 연습문제 Chap12

chaebideas77 2026. 6. 1. 10:33

<기록용 post>

private static void f5() {
		byte[] bytes = { -20, -107, -120, -21, -123, -107 };
		String str = null; // String이 초기화 되지 않았기 때문에 null로 설정
		try {
			str = new String(bytes,"UTF-8"); // UTF-8은 글자를 3byte로 처리함.
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("str: " + str);
		
		String str1 = "오늘은 월요일";
		try {
			byte[] arr = str1.getBytes("UTF-8");
			System.out.println(arr.length);
			System.out.println(Arrays.toString(arr));
			String str2 = new String(arr,"UTF-8");
			System.out.println(str2);
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

 

String이 편리하지만 StringBuilder를 이용해서 가변문자열을 처리해준다.

메모리 효율성에도 도움이 된다.

private static void f6() {
		
		// String은 고정문자열이다. +는 연결연산자로 문자열을 만들면 새로운 메모리에 문자열을 만들고 주소변경
		// StringBuilder는 가변문자열, 변경이 잦으면 String보다 빠름.
		long start1 = System.nanoTime();
		String str1 = "";
		for(int i=1; i<= 100; i++) {
			str1 += i;
		}
		
		long end1 = System.nanoTime();
		System.out.println(end1-start1);		
		
		long start = System.nanoTime();
		StringBuilder str2 = new StringBuilder();
		for(int i=1; i<= 100; i++) {
			str2.append(i);
		}
		
		long end = System.nanoTime();
		System.out.println(end-start);
	}

 

"," 기준으로 String data를 나눠서 출력하는 코드

split함수를 사용하면 배열로 받기 때문에 배열 처리

배열은 toString을 해야 출력값을 얻을 수 있음.

private static void f7() {
		String data = "아이디,이름,패스워드";
		StringTokenizer st = new StringTokenizer(data,",");
		while(st.hasMoreTokens()) {
			System.out.println(st.nextToken());
		}
		System.out.println("===end");
		
		String[] arr = data.split(",");
		System.out.println(Arrays.toString(arr));
	}

 

Integer 객체

Integer obj1 = new Integer(100); 는 사용 안함. // 단 객체인 거는 알아야 주소 비교인지 내용 비교인지 확인 가능.

private static void f8() {
		Integer obj1 = 100; // 127까지는 상수 pool
		Integer obj2 = 100;
		Integer obj3 = 300; // AutoBoxing new Integer(300)
		Integer obj4 = 300; // AutoBoxing new Integer(300) 
		System.out.println( obj1 == obj2 ); //주소비교
		System.out.println( obj3 == obj4 ); //주소비교
		
		System.out.println(obj1.equals(obj2)); //내용비교
		System.out.println(obj3.equals(obj4));
		
	}

'Java' 카테고리의 다른 글

스레드  (0) 2026.06.01
제네릭  (0) 2026.06.01
참조형 변수  (1) 2026.05.19
자바 - 변수  (0) 2026.05.14
자바 프로그램 실행 과정  (0) 2026.05.14