프로그래밍 공부

참조 자료형 본문

Programming/JAVA

참조 자료형

khj1999 2024. 10. 8. 08:05

String Class

GPT한테 설명해달라 한 스트링 클래스

String Class

  • 불변 형태의 문자열임(한번 생성되면 내용 변경 불가능)
  • 즉 문자열의 내용의 변경 불가능
  • 문자열을 자주 변경할 경우 새로운 객체가 계속 생성됨으로 성능에 영향
  • 문자열이 변경되지 않는 경우에 주로 사용

StringBuffer Class

  • 객체 생성 후에도 내용 변경이 가능
  • 동기화가 되어 있어 여러 스레드가 동시에 접근해도 안전
  • 동기화로 인해 성능이 약간 떨어질 수 있음
  • 멀티스레드 환경에서 문자열을 안전하게 조작할 때 사용

StringBuilder Class

  • 객체 생성 후에도 내용 변경이 가능
  • 동기화 되지 않음 → 여러 스레드가 동시에 접근하면 언전하지 않음
  • 동기화가 없기 때문에 StringBuffer보다 성능이 좋음
  • 단일 스레드 환경에서 문자열을 조작할 떄 유용함

요약

  • String: 불변성을 가지며, 주로 문자열이 변경되지 않는 경우에 사용.
  • StringBuffer: 가변성을 가지며, 멀티스레드 환경에서 안전하게 문자열을 조작할 때 사용.
  • StringBuilder: 가변성을 가지며, 단일 스레드 환경에서 성능을 중요시할 때 사용.

Wrapper Class

  • 자바에서는 각각의 기본 타입에 상응하는 클래스가 있음
  • 이 클래스를 레퍼 클래스라고 함
  • 사용하는 이유
    • 추가적인 옵션을 다양하게 지원
    • 유틸리티 메서드를 제공
    • 기본 값들을 컬렉션에 저장할 수 있음
  • 스트링 클래스와 동일하게 래퍼 클래스도 불변성을 가짐

생성

// 생성자를 이용해 생성, 스트링도 가능 "1234"
Integer interger = new Integer(5);

// valueOf 메서드 사용
Integer integer1 = Integer.valueOf(5);

// 예제
Float float1 = new Float(3.14);
Float float2 = new Float(3.14f);
Float float3 = new Float("3.14f");

Character c1 = new Character('A');
Character c2 = new Character(123); // <- error

Boolean b = new Boolean(true);
// TRUE true TrUe등 true 가 주어지면 true고
// 이외의 값은 전부 false
  • 생성 방법 선택
    • valueOf를 사용하면 이미 동일한 값을 가지고 있는 객차가 존재 할 시에 그 값을 사용함
    • 래퍼 클레스는 불변이기 때문에 다른 참조 변수가 동일한 객체를 가르켜도 문제가 없음

Auto Boxing과 몇가지 Constants

Auto Boxing

// 같은 결과임
Integer num = Integer.valueOf(1);

Integer num1 = 7;

Constants

Integer.MAX_VALUE -> 2147483647

Integer.MIN_VALUE -> -2147483648

Integer.SIZE -> 32

Integer.BYTE -> 4
Comments