* 문자열 관리해주는 class - String, StringBuffer(String에 가기 전 임시저장소), StringBuilder
->char[]로 처리한다. -> length : 글자수
-> idx : 글자의 위치
String s = "Hello";
idx가 01234
만약에 s.charAt(4);//o 가 나온다.
char c1 = 'H';
char c2 = 'e';
char c3 = 'l';
char c4 = 'l';
char c5 = 'o';
char[] c = {'H','e','l','l','o'};
* String - 한번 객체가 만들어 지면 그 값은 절대 불변.
ex:
String s = "abc";//String s = new String("abc"); //한번 abc 문자열이 들어가면 죽을 때 까지 abc를 가지고 있는 객체가 된다.
s.concat("def"); //abc def가 따로 객체가 2개가 생긴다.
system.out.println(s); //결과 : abc
->값 : " "
객체 : String s = "abc";
String s = new String("abc");
* project : day23
package : string
class : StringTest
package string;
public class StringTest {
public static void main(String[] args) {
String s1 = "abcde";
String s2 = new String("abcde");
String s3 = "ABCDE";
//글자수를 조회하는 메소드
int strLength = s1.length();
System.out.println(strLength);
//두 String의 내용값이 같은지 비교
System.out.println("s1 == s2 : "+(s1 == s2));//주소값 비교 다른객체를 비교하니 결과 : false
System.out.println("s1.equals(s2) : "+s1.equals(s2));//내용값 비교 //내용이 같으니 결과 : true
System.out.println("s1.equals(s3) : "+s1.equals(s3)); //대소문자가 달라서 결과 : false
System.out.println("s1.equalsIgnoreCase(s3) : "+s1.equalsIgnoreCase(s3));//대소문자 무시하고 내용값 비교 //대소문자를 무시하니 결과 : true
//조회하는 메소드들
//특정문자열로 시작/끝나는지 비교
//시작
boolean flag = s1.startsWith("ab");//ab로 시작하는지?
System.out.println("s1.startsWith(\"ab\") : "+flag);
System.out.println("s1.endsWith(\"ef\") : "+s1.endsWith("ef"));
//특정 문자나 문자열이 몇번째 글자인지 조회
String s4 = "abc abc abcdef";//a : 0, 4, 8
int idx = s4.indexOf("a");
System.out.println("s4.indexOf(\"a\") : "+idx); //찾아서 a를 딱 찾으면 그 index만 리턴
System.out.println("s4.indexOf(\" abc\") : "+s4.indexOf(" abc")); //공백 index는 3번에 있다
//뒤에서부터 조회
System.out.println("s4.lastIndexOf(\"a\") : "+s4.lastIndexOf("a"));//뒤에서 부터 a를 찾으면 8번이 된다.
System.out.println("s4.lastIndexOf(\" abc\") : "+s4.lastIndexOf(" abc")); //뒤어서 부터 공백abc를 찾으면 7이 된다.
System.out.println("s4.indexOf(\"a\", 2) : "+s4.indexOf("a", 2));//2번 index에서부터 찾기 시작
//String 에서 특정 index의 문자를 조회
char c = s4.charAt(5);//5번 index의 char를 return
System.out.println("s4.charAt(5) : "+c); //5번에 있는 문자를 리턴해서 b리턴
//문자열 일부분을 조회
String s5 = "안녕하세요. Hello. 반갑습니다.";
//반 : 14 H : 7 , 12
String ss = s5.substring(14);//14번 index 부터 끝까지
System.out.println("s5.substring(14) : "+ss);//14번 index 부터 끝까지 결과 : 반갑습니다.
System.out.println("s5.substring(7, 12) : "+s5.substring(7, 12));//7~12-1 결과 : Hello
//변경 하는 메소드
//대문자->소문자
ss = s3.toLowerCase(); //객체가 따로 만들어 지므로 변수에 대입해야 한다. 결과 : abcde 문자열 전부 대문자로 바꾸기 ctrl + shift + x, 소문자로 바꾸기 ctrl + shift + y
System.out.println(s3+","+ss);
//소문자 -> 대문자
ss = s1.toUpperCase();
System.out.println(s1+","+ss);
//특정 char를 다른 char로 변경
String s6 = "ababaaabb";
//'a' -> 'k'
ss = s6.replace('a', 'k');
System.out.println(s6+","+ss);
//특정 문자열을 다른 문자열로 변경
ss = s5.replaceAll("Hello", "헬로");
System.out.println(s5+","+ss);
String s7 = "사과.배.귤,포도,딸기,메론,바나나";
//String [] fruit = s7.split("\\.");
String [] fruit = s7.split(",");
//String [] fruit = s7.split(" ");
System.out.println("------split() : 과일들----");
for(String str : fruit){
System.out.println(str);
}
}
}
//StringTest.java
-----------
================================================================
* project : day23
package : string
class : GetExention
package string;
public class GetExtention {
public static void main(String[] args) {
// command line argument로 파일명.확장자를 받아서 확장자만 출력하는 로직 구현
// abc.txt -> txt
// System.out.println(args[0]);
System.out.println(args[0]);
if(args.length!=1){
System.out.println("사용법 : java GetExtension");
return ;
}
String fileName = args[0];
int idx = args[0].lastIndexOf(".");
if(idx !=-1){
String str = args[0].substring(idx+1);
System.out.println(str);
}else{
System.out.println("확장자가 없습니다.");
}
}
}
------------------------
===========================================================================
* StringBuffer --
|->문자열을 다루기(변경) 위한 class
StringBuilder--
(->String을 만들기위해서 만든것)
String s = "abc";
String s2 = s.concat("def");
StringBuffer sb = new StringBuffer("abc");
sb.append("def");
system.out.println(sb); //결과 : abcdef
* 문자열을 붙일때는 String을 사용하면 여러개의 객체가 생겨서 좋지 않고, 임시적으로 데이터를 저장하기 위해서는 StringBuffer가 좋다. (중간에 문자열을 바꿔나갈때는 StringBuffer가 좋다. 결과는 마지막에 String에 담아 주면 된다.)
* 처음에 StringBuffer나 StringBuilder에 크기를 정해 놓고 할 수 있다. 미리 정해 두고 하는게 속도 측면에서 좋다. new StringBuffer("초기 문자열");
* 초기 문자열을 넣어두고 시작할 수 있다. new StringBuffer(10); //초기 문자열을 넣어두고 넘치면 그 글자수가 늘어난다.
'프로그래밍 > JAVA프로그래밍' 카테고리의 다른 글
난수구하기 및 수학함수 (0) | 2012.07.29 |
---|---|
java 시간 날짜 처리 (0) | 2012.07.29 |
boxing, unboxing, wrapperClass (0) | 2012.07.29 |
object클래스 (0) | 2012.07.29 |
제너릭 (0) | 2012.07.29 |