Java에서의 String 소개 - 1

2022. 2. 9. 17:00·Study/Java
728x90
반응형

오늘은 이전부터 편하게 사용해왔던 String에 대해 소개하려 한다.

 

나는 이전 몇몇 글에서도 자바에서 문자열은 객체라고 소개한 적이 있다.

 

코드를 예로 들면 내가 new String("Hello");와 같은 식으로 사용한 적도 있었다.

 

분명히 new라는 키워드는 객체를 생성할 때 사용하는 키워드이다.

 

그런데 한 번 더 생각해보자. 객체는 무엇이 있어야 생성되는가?

 

바로 클래스이다. 결국 String은 클래스였다는 소리다.

클래스는 C언어의 구조체와 비슷하지만, 이와 달리 변수(필드)와 함수(메소드)를 가질 수 있다고 설명했다.

 

그렇게 String이라는 클래스를 만든 Oracle이라는 회사에서 같이 제공해준 함수(메소드)가 있다.

 

오늘은 String class의 자주 쓰이는 함수(메소드)를 알아보겠다.

 

 

***지금부터 사용할 코드 블럭에는 Main class와 main method가 빠져 있을 것이다.

그리고 아래에 사용되는 코드 블럭들은 서로 같은 class와 method안에 있다고 생각하고 보도록 하자.

String str = new String("Hello");
//문자열은 매우 중요하고 자주 사용되는 값이기 때문에 축약표현이 제공됨.
//한 번 만들어진 String 객체의 문자열은 절대 변경 불가

축약표현은 내가 이전 다른 글에서도 몇 번 사용했지만 약간 뒤에 소개해보도록 하고

한 번 만들어진 String객체의 문자열은 변경 불가하다는 점을 생각해두도록 하자.

 

 

//1. 문자열 데이터의 길이(글자 수)를 리턴해주는 메소드
int len = str.length();
System.out.println("글자 수 : " + len);

String클래스의 length()라는 함수(메소드)이다.

 

함수 이름 그대로 내가 적은 문자열이 몇 글자인지 알려준다.

 

나는 위에서 str을 "Hello"했기 때문에 여기서 len이라는 변수의 값은 5가 될 것이다.

 

 

//2. 문자열 값의 비교
System.out.println(str == "Hello"); //주소비교
		
System.out.println(str.equals("Hello"));
		
String s = "Hello";
		
System.out.println(str.equals(s));

equals()라는 함수(메소드)가 필요한 이유에 대해 보여줄 코드이다.

 

"Hello"라는 문자열과 "Hello"라는 문자열이 서로 같다면 '같다!'라고 컴퓨터가 내게 알려줬으면 하는 상황이다.

 

하지만, 첫 문장처럼 ==연산자를 통해 비교를 한다면 어떻게 될까?

 

분명히 같다고 할 사람도 있을 것이다. 그건 아직 컴퓨터적인 관점으로 생각하지 않아서이다.

 

간단히 그림으로 그리자면 이와 같이 그려볼 수 있을 것이다.

 

str이라는 변수를 통해 "Hello"를 만들었고 이와 우리가 임의로 메모리 다른 어딘가에 만든 "Hello"와 비교한 것이다.

 

이 두 객체의 주소를 임의로 각각 100번지 200번지라고 했을 때 이 두 객체의 주소는 같지 않기 때문에 첫 문장은 false가 출력될 것이다.

 

하지만, 다음 문장에서 equals()라는 메소드(함수)는 그 객체가 가지고 있는 값을 비교하기 때문에

이 두 객체는 같은 "Hello"라는 값을 가지고 있어 true가 출력된다.

 

이와 같이 s라는 변수를 통해 "Hello"라는 값을 가진 객체를 만들고

str과 equals()메소드를 통해 비교한다면 true라는 결과 값을 얻을 수 있다.

 

 

//2-1. 대소문자 비교
System.out.println(str.equals("hello"));
System.out.println(str.equalsIgnoreCase(s));

이번에는 대소문자를 무시하는 메소드인 equalsIgnoreCase()를 소개한다.

 

짧은 예를 들면 많이 겪어봤을 법한 내용이다.

 

어떤 프로그램을 종료하려고 한다. 이 때 종료하려면 Y, 돌아가려면 N을 입력하라고 하는 상황이다.

그럼 이 때 사용자는 Y를 누르거나 y를 누르면 종료가 된다.

 

우리가 이런 상황에서 사용자라면 Caps lock을 누르고 나서 y를 누르진 않는다. 그저 소문자 y를 입력할 뿐이다.

 

그런데 위 코드처럼 equals()를 통해 두 문자열을 비교했다면 아마 프로그램이 종료되지 않을 것이다. Y와 y는 다르니까.

 

하지만, 사람이 보기에는 그냥 같은 Y이다. 그래서 이 때 대소문자 구분을 하고 싶지 않다면 equalsIgnoreCase()메소드를 사용하면 된다.

 

그럼 위 코드의 결과를 예측할 수 있을 것이다. equals()나 equalsIgnoreCase()나 결과로 boolean값을 리턴해준다.

값이 true, false로 나온다는 얘기다.

 

순서대로 false, true가 결과로 출력될 것이다.

 

이후 몇 글에 걸쳐 String 클래스에서 자주 사용되는 메소드들 몇 가지를 소개해보겠다.

728x90
반응형
저작자표시 (새창열림)

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

Java에서의 String 소개 - 3  (0) 2022.02.15
Java에서의 String 소개 - 2  (0) 2022.02.11
Java의 print와 scan  (0) 2022.02.03
짧은 객체지향 프로그래밍 소개  (0) 2022.02.01
Java 참조 자료형과 출력 예제  (0) 2022.01.29
'Study/Java' 카테고리의 다른 글
  • Java에서의 String 소개 - 3
  • Java에서의 String 소개 - 2
  • Java의 print와 scan
  • 짧은 객체지향 프로그래밍 소개
BonusTrack02.dev
BonusTrack02.dev
공부, 일상
  • BonusTrack02.dev
    BonusTrack02.dev
    BonusTrack02.dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (237)
      • Dev experience (85)
        • Android (84)
        • Kotlin (1)
      • Study (62)
        • Kotlin (26)
        • Swift (17)
        • Java (19)
      • 프로그래머스 (68)
      • 주저리주저리 (22)
        • 카페 (5)
        • 음식점 (4)
        • 컨퍼런스 (1)
        • 팝업스토어 (4)
        • 전시회 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    coroutines
    Kotlin
    코틀린
    LiveData
    databinding
    aac
    MVVM
    ViewModel
    자바
    jetpack
    daterangepicker
    programmers
    Observer
    Material
    viewModelScope
    ios
    프로그래머스
    안드로이드
    티스토리챌린지
    코루틴
    android
    스위프트
    room
    CodeLab
    오블완
    SWIFT
    Java
    getNumericValue
    PCCE
    배열
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
BonusTrack02.dev
Java에서의 String 소개 - 1
상단으로

티스토리툴바