자바 - API (String)

빵제이·2023년 8월 2일
0

자바

목록 보기
32/37

[ ex01 ]

public static void ex01() {
    
    // 문자열 리터럴(Literal)
    // 문자열 표현 방법:큰 따옴표로 문자열을 묶는다.
    String name1 = "tom";
    String name2 = "tom";
    
    // 문자열 리터럴은 Java에 의해서 최적화되기 때문에
    // 동일한 리터럴이 2번 이상 나타나면 기존 리터럴을 재사용한다.
    //
    //       ┌--------------┐
    //  name1│  0x12345678  │
    //       │--------------│
    //  name2│  0x12345678  │
    //       │--------------│
    //       │      ...     │
    //       │--------------│
    //       │      tom     │0x12345678
    //       │--------------│
    //       │      ...     │
    //       └--------------┘
    
    // 문자열 리터럴 비교
    // name1과 name2의 참조값이 동일하다.
    boolean isEqual = name1 == name2;
    System.out.println(isEqual);
  }

[ ex02 ]

public static void ex02() {
  
// 문자열 객체(Object)
  String name1 = new String("tom");
  String name2 = new String("tom");
  
//문자열 객체는 항상 새로 생성된다.
  //
  //       ┌--------------┐
  //  name1│  0x12345678  │
  //       │--------------│
  //  name2│  0x98765432  │
  //       │--------------│
  //       │      ...     │
  //       │--------------│
  //       │      tom     │0x12345678
  //       │--------------│
  //       │      ...     │
  //       │--------------│
  //       │      tom     │0x98765432
  //       │--------------│
  //       │      ...     │
  //       └--------------┘
  
// 문자열 객체 비교
  // name1과 name2의 참조값이 다르다.
  boolean isEqual = name1 == name2;
  System.out.println(isEqual);
}

[ ex03 ]

public static void ex03() {
  
 // equals 메소드
 // 문자열이 동일하면 true, 아니면 false 반환
  
  String name1 = new String("tom");
  String name2 = new String("tom");
  String name3 = new String("Tom");
  
  boolean isEqual = name1.equals(name2);
  System.out.println(isEqual);
  
  boolean isEqual2 = name1.equals(name3); // 대소문자도 일치해야 동일한 문자열로 인식한다.
  System.out.println(isEqual);
  
  boolean isEqual3 = name1.equalsIgnoreCase(name3); // 대소문자를 무시하고 문자열을 비교한다.
  System.out.println(isEqual3);
}

[ ex04 ]

public static void ex04() {
  
  // toUpperCase 메소드 : 모두 대문자로 변환
  // toLowerCase 메소드 : 모두 소문자로 변환
  
  String name = "Tom";
  
  System.out.println(name.toUpperCase());
  System.out.println(name.toLowerCase()); 
}

[ ex05 ]

public static void ex05() {
  
  // length 메소드 : 문자열의 길이(글자수)를 반환
  
  String name = "Tom cruise\n";
  
  int length = name.length();
  System.out.println(length);
}

[ ex06 ]

public static void ex06() {
 
   // charAt 메소드
   // 문자열의 특정 인덱스(Index)의 문자를 반환
   
   String name = "tom";
   
   char ch1 = name.charAt(0);
   char ch2 = name.charAt(1);
   char ch3 = name.charAt(2);
   
   System.out.println(ch1 + "," + ch2 + "," + ch3);
 }

[ ex07 ]

public static void ex07() {
    
  // substring 메소드
  // 문자열의 일부 문자열을 반환
  
  // substring 사용법 (중요★)
  // 1. substring(int begin) : 인덱스 begin부터 끝까지 반환
  // 2. substring(int begin, int end) : 인덱스 begin부터 end 이전까지 반환(begin <= 추출범위 < end)

  String name = "tom cruise";
  
  String firstName = name.substring(0, 3);  // tom;
  String lastName  = name.substring(4); // cruise
  
  System.out.println(firstName);
  System.out.println(lastName); 
}

[ ex08 ]

public static void ex08() {
  
  // indexOf 메소드
  // 1. 특정 문자열의 인덱스를 반환
  // 2. 특정 문자열이 2개 이상 존재하는 경우 발견된 첫 번째 문자열의 인덱스를 반환
  // 3. 발견되지 않으면 -1을 반환
  
  // indexOf 사용법
  // 1. indexOf(String str) : 인덱스 0부터 String str을 검색
  // 2. indexOf(String str, int index) : 인덱스 index부터 String str을 검색
  
  String statement = "걱정한다고 걱정이 없어지면 걱정이 없겠네";
  
  int idx1 = statement.indexOf("걱정"); // 0
  int idx2 = statement.indexOf("걱정", idx1 + 1); // 6
  int idx3 = statement.indexOf("걱정", idx2 + 1); // 15
  int idx4 = statement.indexOf("tom");  // -1
  
  System.out.println(idx1);
  System.out.println(idx2);
  System.out.println(idx3);
  System.out.println(idx4);
}

[ ex09 ]

public static void ex09() {
  
  // lastIndexOf 메소드
  // 1. 발견된 마지막 문자열의 인덱스를 반환
  // 2. 나머지 특징은 indexOf와 동일함
  
  String statement = "걱정한다고 걱정이 없어지면 걱정이 없겠네";
  
  int idx = statement.lastIndexOf("걱정"); //15
  System.out.println(idx);
}

[ ex10 ]

public static void ex10() {
  
// contains 메소드
// 지정된 CharSequence(String, char[] 등)가 포함되어 있으면 true 반환, 아니면 false
  
String email = "admin@naver.com";
    
// @가 포함되어 있는가?
if(email.contains("@")) {
  System.out.println("@가 포함되어 있다.");
} else {
  System.out.println("@가 포함되어 있지 않다.");
}
  
}

[ ex11 ]

public static void ex11() {
  
  // isEmpty 메소드
  // 1. 빈 문자열이면 true 반환, 아니면 false 반환
  // 2. 빈 문자열 : ""처럼 문자열의 길이가 0인 문자열
  
  String name = "";
  if(name.isEmpty()) {
    System.out.println("이름이 없다.");
  } else {
    System.out.println("이름이 있다.");
  }

  // isBlank 메소드
  // 1. 빈 문자열이거나, 공백 문자로 구성되었다면 true 반환, 아니면 false
  // 2. JDK 11 이후 버전에서 사용 가능
  if(name.isBlank()) {
    System.out.println("이름이 없다.");
  } else {
    System.out.println("이름이 있다.");
  }
}

[ ex12 ]

public static void ex12() {
  
  // format 메소드
  // 1. 문자열을 지정한 형식으로 반환
  // 2. 클래스 메소드이므로 String 클래스를 이용해서 호출함
  
  // 숫자 형식
  int number = 100; // 10진수 100
  System.out.println(String.format("%o", number));  // %o : 8진수로 표시
  System.out.println(String.format("%d", number));  // %d : 10진수로 표시
  System.out.println(String.format("%x", number));  // %x : 16진수로 표시(0~9, a~f)
  System.out.println(String.format("%X", number));  // %X : 16진수로 표시(0~9, A~F)
  
  // 문자열 형식
  String str = "hello";
  System.out.println(String.format("%s", str));  // %s : 문자열로 표시
  
  // 출력 폭 조정
  System.out.println(String.format("%5d", number));   // 5자리 10진수로 표시, 숫자를 오른쪽 정렬.
  System.out.println(String.format("%-5d", number));  // 5자리 10진수로 표시, 숫자를 왼쪽 정렬.
  System.out.println(String.format("%05d", number));  // 5자리 10진수로 표시, 숫자를 오른쪽 정렬, 빈 자리를 0으로 채움
  System.out.println(String.format("%10s", str));   
  System.out.println(String.format("%-10s", str));    // 5자리  
}

[ ex13 ]

public static void ex13() {
   
   // 정규식을 활용한 메소드
   // 1. startWith  : 지정된 정규식 패턴으로 시작하면 true 반환
   // 2. endWith    : 지정된 정규식 패턴으로 끝나면 true 반환
   // 3. matCh      : 지정된 정규식 패턴을 포함하면 true 반환
   // 4. replaceAll : 지정된 정규식 패턴을 만족하는 부분을 다른 문자열로 변환.
   // 5. split      : 지정된 정규식 패턴으로 문자열을 분리하여 분리된 String 배열을 반환
   
   String ip = "192.168.0.101";
   
   String str = ip.replaceAll(".", "_"); // 192_168_0_101 을 기대하지만 정규식 패턴에서 .는 모든 문자를 의미하므로 원하는 결과를 얻을 수 없다.
   System.out.println(str);
   
   // strip 메소드
   // 앞 뒤에 포함된 공백 문자 제거
   String name = "\n tom \n";
   String str1 = name.strip();
   System.out.println(str1.length());  // 3
   
   // trim 메소드
   // 앞 뒤에 포함된 공백 문자 제거
   String str2 = name.trim();
   System.out.println(str2.length());  // 3
   
 }

[ ex14 ]

public static void ex14() {
  
	// replace 메소드
  // 1. 지정된 문자열을 다른 문자열로 변환
  // 2. 발견된 모든 문자열을 변환
  
  String ip = "192.168.0.101";
  String str = ip.replace(".", "_");
  System.out.println(str);
}

[ 메인 메소드 ]

public static void main(String[] args) {
  ex14();
 }
}
profile
개인 아카이브

0개의 댓글