-
< Java > StringJava 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
'Java' 카테고리의 다른 글
< Java > 조건문 (if 문, else 문, else if 문 ) (0) 2023.08.26 < Java > EscapeSequence ( 특수문자, 이스케이프 문자) (0) 2023.08.26 <Java> Stream Optional (0) 2023.08.25 < Java > Stream (0) 2023.08.25 < Java > lamda (0) 2023.08.24