String클래스
- 클래스의 비교
public class StringTest01 {
public static void main(String[] args) {
String str1 = "java"; //리터럴의 형태로 접근
String str2 = "java";
String str3 = new String("java"); //객체 생성
String str4 = new String("java");
if(str1==str2) { //같다.
System.out.println("same");
}else {
System.out.println("not name");
}
if(str1==str3) {
System.out.println("same");
}else {
System.out.println("not name");
}
if(str3==str4) {
System.out.println("same");
}else {
System.out.println("not name");
}
}
}
* new 연산자는 새로운 주소값을 만들기 때문에 비교했을 때 false가 뜬다.
- String클래스 : 자주 사용하는 메소드
public class StringTest02 {
public static void main(String[] args) {
String str1 = new String("java programming");
String str2 = new String("재밌다..");
System.out.println(str1.charAt(1)); //0,1,2,3...
System.out.println(str1.concat(str2)); //연결
System.out.println(str1);
System.out.println(str2);
System.out.println(str1.indexOf('a')); //0부터시작
System.out.println(str1.indexOf("합"));
System.out.println(str1.lastIndexOf("a")); //뒤에서부터 a의
System.out.println(str1.length()); //문자열의 길이
System.out.println("===========================================");
System.out.println(str1.equals("java programming"));
System.out.println(str1.equals("Java programming"));
System.out.println(str1.equalsIgnoreCase("java programming"));
System.out.println(str1.equalsIgnoreCase("Java programming"));
System.out.println(str1.length());
System.out.println(str1.length());
System.out.println("===========================================");
}
}
public class StringTest03 {
public static void main(String[] args) {
String str1 = new String("Java programming");
String str2 = new String("재밌다..");
System.out.println(str1.startsWith("java")); // 자바로 시작하는지
System.out.println(str1.startsWith("test")); // 테스트로 시작하는지
System.out.println(str1.endsWith("java")); // 자바로 끝나는지
System.out.println(str1.endsWith("ing")); // ing로 끝나는지
System.out.println(str1.contains("ja")); // ja가 포함하는지
System.out.println(str1.toUpperCase()); // 대문자로
System.out.println(str1.toLowerCase()); // 소문자로
System.out.println(str1); // 원본은 변경되지 않음
System.out.println(str1.substring(5)); // start index
System.out.println(str1.substring(5,8)); // start ~ end-1 (5~7)
System.out.println(str1.replace('a','A')); // a를 A로 바꾸기
System.out.println(str1); // 원본은 변경되지 않음
}
}
- String클래스 : 데이터변환과 관련된 메소드들
package api.lang;
public class StringTest04 {
public static void main(String[] args) {
String s = "java programming";
String s2 = new String("java servlet spring android");
//1. String -> byte[]
byte[] data1 = s.getBytes();
for(int i=0; i<data1.length; i++) {
System.out.println(data1[i]); //ASKII값이 나옴
}
System.out.println();
//2. String ->char[]
char[] data2 = s.toCharArray();
for(int i=0; i<data2.length; i++) {
System.out.println(data2[i]);
}
System.out.println();
//3. String ->String[]
String[] data3 = s2.split(" ");
for(int i=0; i<data3.length; i++) {
System.out.println(data3[i]);
}
System.out.println();
//4. 기본형 -> String
//기본형을 감싸서 참조형으로 바꿔줌 (ex-Wrapper클래스가 있음 )
int i =100;
double d = 10.5;
test(String.valueOf(i));
test(String.valueOf(d));
test(i+"");
test(d+"");
} //end메인
public static void test(String data) {
System.out.println("변환된 데이터 "+data);
}
}
StringBuffer
- String은 원본이 변경되지 않는다. - 실행결과가 String객체로 생성
- StringBuffer는 원본이변경 된다(쓰레드처리o -> 무겁다).
- StringBuilder도 같은 원리(쓰레드처리x)
public class StringBufferTest {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("java programming");
System.out.println("원본 "+sb);
sb.append("재밌다"); // 추가하기
System.out.println("원본 "+sb);
sb.insert(2, "자바자바"); // 원하는 위치에 원하는 내용 추가하기
System.out.println("원본 "+sb);
sb.delete(2, 5); // start ~ end-1
System.out.println("원본 "+sb);
sb.reverse();
System.out.println("원본 "+sb);
}
}
[String과 StringBuffer의 성능비교(실행시간)]
package api.lang;
public class StringStringBufferTest {
// String객체를 만들어서 제어
public static void stringCheck(int count) {
// 시작 전에 시간체크 - nano초
long start = System.nanoTime(); // -> 1/10억초
String str = new String("java");
for (int i = 1; i <= count; i++) {
str = str + "java";
}
long end = System.nanoTime();
long time = end-start;
System.out.println("str = str + java");
System.out.println("수행시간 : "+time);
System.out.println(str);
}
// StringBuffer객체를 만들어서 제어
public static void stringBufferCheck(int count) {
long start = System.nanoTime(); // -> 1/10억초
StringBuffer sb = new StringBuffer("java");
for (int i = 1; i <= count; i++) {
sb.append("java");
}
long end = System.nanoTime();
long time = end-start;
System.out.println("sb.append('java')");
System.out.println("수행시간 : "+time);
System.out.println(sb);
}
public static void main(String[] args) {; // 실행시간 측정
int count = 10000;
System.out.println("실행횟수 : "+count);
stringCheck(count);
stringBufferCheck(count);
}
}
'JAVA' 카테고리의 다른 글
2022-10-24 Arrays클래스, Stack / Queue, 검색 알고리즘 - 선형검색, 이진검색, 정렬 알고리즘 - 단순 선택 정렬 (0) | 2022.10.24 |
---|---|
2022-10-21 컬렉션 프레임웍 ArrayList / Vector, 스택과 큐 (0) | 2022.10.23 |
2022-10-18 객체지향언어 - 인터페이스, 예외처리방법 1. try-catch / 2. 예외선언하기(throw, throws) (0) | 2022.10.22 |
2022-10-17 객체지향언어 - 다형성. 추상클래스, 제어자 fanal (0) | 2022.10.18 |
2022-10-14 객체지향언어 - 생성자, 상속 (0) | 2022.10.17 |
댓글