반응형
String 관련 클래스
equals()
자바의 문자열은 좀 특별하다. 다른 참조타입들과 달리 자바의 문자열은 리터럴이 동일하다면 String객체를 공유하도록 설계되어있다.
하지만 new연산자로 생성된 객체는 다른 타입의 객체들과 마찬가지로 값과 상관없이 다른 객체가 된다. 그렇기때문에 문자열의 값 자체를 비교하기 위해서는 equals() 메소드를 사용해야한다.
public class equalsMethodExample {
public static void main(Stirng[] args) {
String hobby1 = "여행";
String hobby2 = new String("여행");
System.out.println(hobby1 == hobby2);
// false
System.out.println(hobby1.equals(hobby2));
// true
}
}
isEmpty()
문자열의 갯수가 0인지 확인하는 메소드
String str = "HAPPY";
if(str.isEmpty()) {
System.out.println("빈문자열");
} else {
System.out.println("빈문자열이 아님"); // 출력됨
}
split()
정규표현식을 구분문자로 해서 문자열을 분리하는 메소드
String str = new String("Gone With The Wind");
String[] words = str.split(" "); // 단어와 단어사이를 공백으로 분리시켜서 배열의 형태로 저장함
for(int i=0; i< words.length; i++) {
System.out.println(words[i]);
}
StringTokenizer
- java.util 패키지에 위치함
- 특정 문자를 기준으로 문자열 분리하는 클래스
- 문자열을 분리하기 위한 기준 문자의 구분자를 기재하지 않으면 기본값으로 공백(” “)을 구분자로 사용한다
String str = new String("Gone With The Wind");
StringTokenizer st = new StringTokenizer(str, " "); // 저장되는 방법 알아보기
while(st.hasMoreElements()) { //토큰할 문자가 있는지 확인
System.out.println(st.nextToken()); // sr.nextToken -> String 타입으로 토큰할 문자열 리턴
}
contains()
문자열 안에 특정문자의 포함여부를 boolean 타입 리턴하는 메소드
String str = "my java test";
System.out.println( str.contains("java") ); // true
System.out.println( str.contains(" my") ); // false
System.out.println( str.contains("JAVA") ); // false
System.out.println( str.contains("java test") ); // true
substring()
문자열의 인덱스로 해당 문자열을 추출하는 메소드
String str = "0123456789";
str.substring(5) // 56789 -> 해당 인덱스부터 끝까지 추출
str.substring(5, 8) // 567 -> 시작 인덱스부터 끝 인덱스-1 까지 추출
indexOf()
- 특정 문자열을 0인덱스부터 시작해서 마지막 인덱스까지 찾으면서, 처음 발견되는 특정 문자열의 인덱스를 반환
- 찾지 못했을 경우 -1 반환
String str = "HELLO";
System.out.println(str.indexOf("L")); // 2 반환
System.out.println(str.indexOf("l")); // -1 반환
lastIndexOf()
- 특정 문자열을 마지막 인덱스부터 시작해서 0인덱스까지 찾으면서, 처음 발견되는 특정 문자열의 인덱스를 반환
- 찾지 못했을 경우 -1 반환
String str = "HELLO";
System.out.println(str.lastIndexOf("L")); // 3 반환
System.out.println(str.lastIndexOf("l")); // -1 반환
문자열의 연산속도
- String < StringBuffer < StringBuilder
- String은 속도를 비교할 수 없을만큼 느리고, StringBuffer와 StringBuilder는 2배정도 차이가 난다고 한다.
String 클래스
문자열 연산
String s1 = "";
System.out.println(s1.length());
s1 = s1 + "SEOUL";
System.out.println(s1.length());
s1 = s1 + "JEJU";
System.out.println(s1.length());
s1 = s1 + "BUSAN";
System.out.println(s1.length());
System.out.println(s1);
모든 문자열 제거
s1 = "";
System.out.println(s1.length()); //0
StringBuilder 클래스(java.lang)
문자열 연산
append() 메소드 : 문자열 추가
StringBuilder s2 = new StringBuilder();
s2.append("SEOUL");
System.out.println(s2.length());
s2.append("JEJU");
System.out.println(s2.length());
s2.append("BUSAN");
System.out.println(s2.length());
System.out.println(s2);
모든 문자열 제거
s2.delete(0, s2.length());
System.out.println(s2.length()); //0
this
- 클래스가 자신을 가리키는 대명사
- 지역변수와 멤버변수를 구분하기 위해 사용
- 아래 예제의 생성자 안에 this를 이용하지 않고 멤버변수를 선언하면, 변수명이 같을경우 지역변수가 우선되기 때문에 멤버변수가 아닌 지역변수로 인식된다.
public class Score {
private String name = "손흥민 짱";
private int kor, eng, mat;
private int aver;
public Score(String name, int kor, int eng, int mat) {
// name -> 지역변수가 우선되기 때문에 매개변수 name 이 된다
this.name = name;
this.kor = kor;
this.eng = eng;
this.mat = mat;
}
}
static
- 변수, 메소드에 선언 가능
- 메모리 생성은 한번만 가능함
- 클래스명에 도트연산자로 직접 접근 가능함 (클래스명.변수, 클래스명.메소드())
public class Sawon {
static int SUDANG = 10;
}
public class Test05_static {
public static void main(String[] args) {
Sawon.SUDANG = Sawon.SUDANG + 1;
System.out.println(Sawon.SUDANG); // 클래스로 접근 추천
System.out.println(kim.SUDANG);
System.out.println(lee.SUDANG);
}
}
// static 변수이기 때문에
// 클래스를 통해 변수를 접근한것과
// 객체타입변수를 통해 접근했을 때의 값이
// 11로 같다
반응형
'Back-End > Java' 카테고리의 다른 글
Java 예제(2) (0) | 2023.03.16 |
---|---|
Java 과제 - 표준편차 구하기 (0) | 2023.03.15 |
Java(3) (0) | 2023.03.15 |
댓글