문자열(String)
- 연산으로 결합가능
- 불변 객체임
- new를 보통 안사용함 (최적화문제)
- 문자열풀을 이용함(해싱기반 맵 자료구조)
- new를 쓰면 새객체를 만들게됨(문자열풀을 사용안함)
String f1 = "asda";
String f2 = "asda";
String f3 = new String("asda");
//f1=f2이다(같은 문자열 풀임)
//f1 != f3 이다.(f3는 문자열풀에 없는 새 객체임)
String f4= f1+f2; //힙 영역에 새객체 생성
String f5= f1+f3; //힙 영역에 새객체 생성
문자열 변환
String s = "" + 10;
String s2 = Integer.valueOf(10).toString();
int n1 = Integer.parseInt(s);//int 반환
int n2 = Integer.valueOf(s); //Integer 반환
int n3 = Integer.valueOf(s).intValue();//Integer=> int 반환
문자열 메소드
- toLowerCase, toUpperCase는 반환은해주지만 원본은 변화시키지않음(불변객체)
String s = "asD";
System.out.println(s.toLowerCase()); // "asd"
System.out.println(s); // "asD"
- charAt으로 특정위치 반환
String s = "asD";
s.charAt(1); //s
s.toCharArray //['a','s','D']
- substring으로 일부 추출
String s = "asD";
s.substring(0,2)//as
s.substring(1) //sD
- repeat로 반복생성
String s = "asD";
s.repeat(2)//asDasD
- startsWith, endsWith 로 시작,끝 문자열 검사
String s = "asD";
s.startsWith("as") //true
s.endsWith("qq")//false
- equals, compareTo로 내부 비교
String s = new String("asD");
String s1 = new String("asD");
s==s1 //false
s.equals(s1) //true
s.compareTo(s1)//true 사전적 비교 숫자,대문자,소문자순
- indexOf로 등장위치검색
String s = "asD";
s.indexOf('s') //1
s.indexOf('s',시작위치)
s.indexOf("sD") //1
- replace로 바꾸기
String s = "asD";
s=s.replace('a','A') //AsD
- 공백지우기
- trim 양옆
- strip 양옆
- stripLeading 앞
- stripTrailing 뒤
문자열 결합
- 반복 +는 비효율 연산
- String.join(””,List)로 결합
StringBuffer, StringBuilder
- String 조작을 위해 사용함(기본은 불변객체라 불가능함)
- equals는 없기에 toString()으로 다시 바꿔야 비교가능
StringBuilder sb = new StringBuilder("Hello");
sb.reverse();
sb.toString(); //"olleH"
split,StringTokenizer
- 문자열 분리
String[] sts = "asd dq fa zc".split(" ");
StringTokenizer tk= new StringTokenizer("asd dq fa zc");//공백 분리
StringTokenizer tk= new StringTokenizer("asd dq fa zc"," ");//공백 분리
tk.hasMoreTokens() //다음토큰 존재확인bool
tk.nextToken() //다음토큰
'Language > JAVA' 카테고리의 다른 글
[Java] 열거형 (0) | 2024.12.03 |
---|---|
[Java] 배열 (0) | 2024.12.03 |
[JAVA] 빈 패턴(Bean Pattern) (0) | 2024.10.28 |