[Java] 문자열 자료형 (String)

2023. 2. 10. 17:48·Java/Base
728x90
728x90

String 자료형

  - 문자열을 저장하는 자료형

  - 반드시 쌍따옴표(" ")를 사용하여 값을 표기

  - 변수를 이용해 객체를 따로 생성하지 않아도 자료형을 사용할 수 있음

     (물론, 객체를 생성해서 사용할 수도 있음)

#  이스케이프 문자

  - 역슬래시(\)를 사용하여 문자열 내부에 특정 문자를 포함시킴

 

문법 기능
\t [Tab] 키만큼 띄움
\n 줄 바꿈
\" " 출력
\' ' 출력
\\ \ 출력

#  문자열의 값 비교 메서드

문자열1.equals(문자열2);

 

  - 문자열1과 문자열2의 '내용'이 완전히 동일하면 true 반환

#  문자열의 주소 값 비교 연산자

문자열1 == 문자열2;

 

  - 문자열1과 문자열2의 '주소 값'이 동일하면 true 반환

#  주소 값 확인

System.out.println(System.identityHashCode(변수));

#  char[]을 문자열로 변환

char[] charArray = { '문자1', '문자2', ... };
String str = new String(charArray);

 

String 자료형의 메모리 저장 방식

# 원래 형태

String 참조변수1 = new String("문자열");
String 참조변수2 = new String("문자열");

 

  - 해당 객체는 heap 메모리 영역에 저장됨

  - 참조변수1과 참조변수2는 주소 값이 다름 (객체들은 각자의 메모리 공간을 가짐)

  

# 간소화된 형태

String 변수1 = "문자열";
String 변수2 = "문자열";

 

  - 해당 변수는 상수 풀 영역에 메모리를 저장함

  - 변수1과 변수2에 같은 문자열을 저장하면 주소 값이 동일함

  - 문자열이 저장된 상태에서, 변수의 값을 다른 문자열로 초기화하면 주소 값이 달라짐

 

  ⇒ 상수 풀 영역에 한 번 생성된 문자열은 불변함 (Immutable)

  ⇒ 동일한 문자열을 생성한다면, 메모리 공간을 새로 생성하지 않고 기존의 문자열을 재활용함

 

  - String 클래스로 문자열을 생성하다 보면 계속해서 상수 풀 영역에서 메모리를 사용하게 됨

    → 문자열을 빈번하게 사용해야 하는 경우 or 메모리를 효율적으로 사용해야 하는 경우

         StringBuilder 클래스와 StringBuffer 클래스를 활용함

 

 

반응형
728x90

StringBuilder 자료형

  - 단일 쓰레드 프로그램에서 권장함

  - 문자열을 여러 번 연결/저장할 때 유용함

#  문자열 합치기 : append 메서드

// 객체 생성 이후
참조변수.append(추가문자열); // 기존 문자열 + 추가 문자열

#  StringBuilder 타입을 String 타입으로 형 변환하기 : toString 메서드

// toString 메서드 활용
String 변수 = 참조변수.toString();

// 문자열 연산 활용
String 변수 = 참조변수 + "문자열";

#  메모리 저장 방식

  - 변수에 저장된 문자열이 달라져도 주소 값이 동일함

      → String 클래스와 달리, 이미 만들어진 메모리 공간에 다시 접근해서 값을 변경함

          (새로운 메모리 공간 생성 X)

 

 


StringBuffer 자료형

  - 멀티 쓰레드 프로그램에서 동기화를 보장함

  - 문자열을 여러 번 연결/저장할 때 유용함 (append 메서드를 자주 사용할 때)

  - 메서드 방식은 위에 작성된 StringBuilder와 동일

 

 


 

 

320x100
반응형
저작자표시 비영리 변경금지 (새창열림)

'Java > Base' 카테고리의 다른 글

[Java] 추상 클래스  (0) 2023.02.11
[Java] final 키워드  (0) 2023.02.11
[Java] 상속 관계의 다형성과 참조형 형 변환  (0) 2023.02.09
[Java] 상속 관계와 메서드 오버라이드  (0) 2023.02.09
[Java] 배열  (0) 2023.02.09
'Java/Base' 카테고리의 다른 글
  • [Java] 추상 클래스
  • [Java] final 키워드
  • [Java] 상속 관계의 다형성과 참조형 형 변환
  • [Java] 상속 관계와 메서드 오버라이드
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (385)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (9)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • IT Notes (13)
      • Error Notes (17)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
      • etc. (0)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    SEO
    Swing
    오블완
    SQL
    C#
    cs
    Android
    티스토리챌린지
    개발일지
    SWAGGER
    Wordpress
    vuejs
    Codeigniter
    errorNote
    tailwindcss
    zapier
    php
    git
    Hotkeys
    typeScript
    SpringBoot
    jsp
    jQuery
    java
    js
    면접
    CSS
    http
    HTML
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[Java] 문자열 자료형 (String)
상단으로

티스토리툴바