본문 바로가기
Back-End/Java

Java(4)

by newny 2023. 3. 16.
반응형

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

댓글