문자열(String)

임준철·2021년 1월 24일
0

JavaBasic

목록 보기
1/1

문자열(String)

문자열의 특징

  • 문자열은 내부적으로 클래스로 구성되어 있다.

  • 내부에는 문자의 배열로 된 데이터가 있다. (char[])

  • 문자열 편집은 String을 쓰지 않고 Builder나 Buffer 등을 사용한다.

  • 한번 만든 문자열은 변하지 않습니다. (Immutable)

    문자열

  • 문자열을 연결한다 했을 때, 하나의 문자열에 값을 더하는 것이 아니라 새로운 문자열이 생성되는 것이다.

문자열의 생성

  • String str1 = new String("abc") : 인스턴스로 생성되는 방식

  • String str2 = "abc" : String 상수풀에 있는 문자열을 가리킨다.

    String s1 = "문자열 생성 방법";
    String s2 = new String("문자열 생성 방법2"); //클래스 생성자 권장하지 않음.
    String s3 = "abcde"; // 상수풀에 있는 문자열을 공유한다.
    String s4 = "abcde"; // 상수풀에 있는 문자열을 공유한다.
    String s5 = new String("abcde");
    s3 == s4 : //true 메모리 참조값에 대한 것,문자열을 곧바로 생성할 경우 상수 풀에서 찾아 사용(상수 풀이라는 공간에 저장되어있음)
    s3 == s5 : //false 문자열을 클래스로 생성할 경우 새로운 값을 생성하므로 false.
    s3.equals(s4) // true
    s3.equals(s5) // true

문자열 안의 메소드

메소드사용방법메소드 선언설명
length()s.length()public int length()문자열의 길이를 나타냄
charAt()s.charAt(2)public char charAt(int index)index번째에 위치한 문자 출력
indexOf()s.indexOf('a')public int indexOf(char ch)ch가 위치한 index 출력. 없을 시 -1
equals()s.equals("This is a String")public boolean equals(Object anObject)anObject와 비교한 결과 출력
equalsIgnoreCase())s.equalsIgnoreCase("this is a string"))public boolean equalsIgnoreCase(String anotherString)대소문자 구분없이 anotherString과 비교 결과 출력
replace()s.replace('i','t')public String replace(char odlChar, char newChar)oldChar를 찾아 newChar로 변경된 문자열 출력
substring()s.substring(3,9)public String substring(int beginIndex, int endIndex)문자열을 beginIndex부터 endIndex-1까지 잘라서 출력
trim()s.trim()public String trim()문자열 좌우 공백을 없앤 결과를 출력
matches()s.matches(String regex)public boolean matches(String regex)문자열을 정규표현식 regex 확인 결과 출력
split()s.split(String regex)public String[] split(String regex)문자열을 정규표현식 형태로 나눈 후 배열로 출력
repeat()s.repeat(3)public String repeat​(int count)count만큼 문자열을 반복해주는 함수
toCharArray()s.toCharArray()public char[] toCharArray()문자열을 char형 배열로 바꿔주는 메소드

StrungBuilder와 StringBuffer

  • 가변적인 char형 배열로 멤버변수를 가지고 있는 클래스

  • 문자열을 변경하거나 연결하는 경우 사용하면 편리한 클래스

  • StringBuffer는 멀티 쓰레드 프로그래밍에서 동기화(Synchronisation)이 보장된다.
    단일 쓰레드 프로그래밍에서는 StringBuilder를 사용하는 것이 좋다.

  • StringBuilder,StringBuffer는 String타입이 아니기 때문에 toString() 메소드를 사용하여 String으로 반환해야한다.

profile
지금, 새로운 문을 열자! 문 저편에 무엇이 있을지 두렵더라도!!

0개의 댓글