Java

< Java > String

98kg 2023. 8. 25. 20:42
String 이란? 

String  은 문자열이라고 불리는 클래스이다. 여기 클래스 라는 것을 명심하자.

String 은 클래스이기 때문에 기본자료형에 속하지 않는다는 것도 명심하자.

 

기본적으로 자주 사용하게 될 클래스인  String은 클래스 객체이지만

new 선언을 하여 인스턴스를 생성하지 않아도

사용이 가능하다.

String  클래스만에 독특한 특징이다

 

우선 String  생성자 에 종류에 대해 알아보겠다.

 


String  생성자

생성자 설명
String 디폴트 생성자. 문자열이 없는 객체를 생성한다.
String(String original) 다른 String 객체를 이용하여 문자열 생성한다.
String(char value[]) 문자 배열을 이용한 객체 생성한다.
String(char value[], int offset, int count) 문자 배열의 내용 중 첫 번째 인덱스부터 두번째 인덱스의 수 만큼의 내용을 객체로 생성한다.
String(int[] codePoints, int offset, int count) J2SE5) 유니코드 포인트를 포함하는 배열을 이용하여 객체 생성한다.
String(byte bytes[]) 바이트 배열을 이용해서 객체 생성한다.
String(byte bytes[], String charsetName) 바이트 배열의 내용을 지정된 Charset명을 이용하여 객체로 생성한다.
String(byte bytes[], Charset charset) 바이트 배열의 내용을 지정된 Charset을 이용하여 객체로 생성한다.
String(StringBuffer buffer) StringBuffer 객체를 이용해서 객체 생성
String(StringBuilder builder) (J2SE5) StringBuilder 객체를 이용해서 객체 생성한다.

오늘은 이 중에 default 생성자인  String에 대해 알아보겠습니다.

 

우선  String 선언 및 사용 방법부터 코드로 보여드리겠습니다.

  String s ="I like Java and Python and C.";
        System.out.println(s);

앞에서 설명했듯이 String 은 new 선언 후 인스턴스 생성 없이 사용이 가능합니다.

실행결과

이번에는 new 인스턴스 생성 하는 코드를 보여드리겠습니다.

        String a = new String();
        a="I like Java and Python and C.";
        System.out.println(a);

똑같은 실행결과가 나오는 것을 볼 수 있다.

위와 같이 똑같은 결과가 나온다.

결론적으로 인스턴스 생성 없이 사용 가능하다.


String Method

자주 사용되는  String 의 메서드를 보여드리겠습니다. 나머지 메서드들은  api를 참고 하시는 것을 추천드립니다.

 

Method 설명
a.replace("and",",") and를 ,로 변환
a.substring(7) 인덱스 기준 7부터 시작 (이전 내용은 삭제됨)
시작 위치부터 끝 위치 "직전" 까지
s.indexOf("Java")
"Java" 가 시작하는 위치를 인덱스 값으로 리턴
만약 중복되는 값이 있다면 처음으로 등장하는 값을 기준으로 잡는다.
값이 없을 경우 -1 리턴
trim() 불필요한 공백삭제
concat
문자열 결합
equal() 대소문자 구분있이 두 내용이 같으면  true 다르면 false
equalsIgnoreCase() 대소문자 구분없이 두 내용이 같으면 true 다르면 false
lastIndexOf() 중복되는 값이 있는 경우 젤 끝에 있는 값에 인덱스 값을 뽑아낸다.
값이 없을 경우 -1 리턴
s.split("and") and 를 기준으로 문자들을 나눠 배열에 저장합니다.

 


각 메서드를 이용한 코드와 그 결과 값을 보여드리겠습니다.

우선 String 객체를 하나 만들어 공통으로 사용하겠습니다.

 

 String str ="I like Java and Python and C.";

replace

System.out.println(str.replace(" and", ",")); //and 를 , 로 변환

replace 실행결과

substring

 System.out.println(s.substring(7));

substring 실행결과

indexOf

System.out.println(str.indexOf("Java"));

indexOf 실행결과

substring의 parameter  값을 indexOf  을 이용해 뽑아내는 코드를 보여드리겠습니다.

System.out.println(s.substring(s.indexOf("Java"),s.indexOf(".")));

"Java" 가 시작하는 위치부터, "."이 시작하는 위치 바로 앞까지 자른다.

substring과 indexOf 결합

lastIndexOf

 System.out.println(s.lastIndexOf("and")); // and가 마지막으로 등장하는 인덱스의 값을 출력

lastIndexOf 실행값

trim

        str ="       I love Java.    ";  
        System.out.println(str.trim()); // 불필요한 공백 제거( 앞뒤 공백 제거 )

trim 실행 결과

concat

 // 문자열 결합 
        String s1 ="Java";
        String s2 = "Python";
        System.out.println(s1 + s2);
        System.out.println(s1 + "," + s2);
        System.out.println(s1.concat(",").concat(s2));

s1 + s2  로 String 변수 끼리 "+" 연산자로 합치면 문자열 두 개가 하나로 붙여지는 것이 보이고

s1+ " ," + s2 로 하면 문자열 두개 사이에  "," 이 붙는 것이 보인다.

위의 결과들을 보면

concat 이라는 메서드를 통해 똑같이 출력 할 수 있다는 것을 보여준다.

 

split

String s ="I like Java and Python and C.";

String  []  arr = s.split("and");
String[] a = new String [arr.length]; // String 배열을 생성하여 arr에 저장된 값들의 크기와 같은 크기에 배열 생성
        for (int i = 0; i < arr.length; i++) {
			a[i] = arr[i];
			System.out.println(a[i]);
		}

split 결과


Quiz


어떤 한 사람의 주민등록번호가 
901234-1234567 이다.

이 주민등록 번호가 901234-1****** 로 표시되는 로직을 짜보자


결과


 


 

정답 아래에 힌트 있으니 한번 도전해보세요.

 

 

 

 

 


 

 

 

Answer


더보기
String BirthData = "901234-1234567";
       
String forwardNum = BirthData.substring(BirthData.lastIndexOf("2"));

String changbackNum= "";

for (int i = 0; i < forwardNum.length(); i++) {
    changbackNum += "*";
}
      
       
String registrationNumber = BirthData.substring(0,BirthData.indexOf("-") + 2 ).concat(changbackNum);
System.out.println(registrationNumber);

Hint


 

더보기

1. substring + lastIndexOf

2.substring + indexOf

3. for

4. concat