[JAVA] Api (String)

Gabriela·2023년 7월 31일
0

JAVA

목록 보기
16/24
post-thumbnail

API


String 클래스의 주요 메서드


문자열 리터럴(Literal)

  • 문자열 리터럴은 Java에 의해서 최적화되기 때문에 동일한 리터럴이 2번 이상 나타나면 기존 리터럴을 재사용한다.
    String name1 = "tom";
    String name2 = "tom";
  • 도식으로 이해하기
  • 문자열 리터럴 비교
    : 참조값 비교시 true
    // name1 과 name2의 참조값이 동일하다.
    boolean isEqual = name1 == name2; // 참조값 비교
    System.out.println(isEqual);  // true

문자열 객체(Object)

  • 문자열 객체는 항상 새로 생성된다.
    String name1 = new String("tom");
    String name2 = new String("tom");
  • 도식으로 이해하기
  • 문자열 객체 비교
    : 참조값 비교시 false
    // name1과 name2의 참조값이 다르다.
    boolean isEqual = name1 == name2; // 참조값 비교
    System.out.println(isEqual);  // false

equals 메소드

  • 문자열이 동일하면 true, 아니면 false를 반환
    String name1 = new String("tom");
    String name2 = new String("tom");
    String name3 = new String("Tom");
   
	// "tom"과 "tom" 문자열 비교
    boolean isEqual1 = name1.equals(name2);  // true
    System.out.println(isEqual1);  
   
	// 대소문자도 일치해야 동일한 문자열로 인식한다.
    boolean isEqual2 = name1.equals(name3);  // false
    System.out.println(isEqual2);  
   
    // 대소문자를 무시하고 문자열을 비교 (Case : upper case, lower case)
    boolean isEqual3 = name1.equalsIgnoreCase(name3);  // true  
    System.out.println(isEqual3); 

toUpperCase / toLowerCase 메소드

  • toUpperCase 메소드 : 모두 대문자로 변환
  • toLowerCase 메소드 : 모두 소문자로 변환
    String name = "Tom";
   
    System.out.println(name.toUpperCase()); // TOM
    System.out.println(name.toLowerCase()); // tom

length 메소드

  • 문자열의 길이(글자수)를 반환
    String name = "Tom cruise\n"; // 이스케이프 문자(\n 줄바꿈)는 1글자로 계산하여 글자수에 포함된다.
   
    int length = name.length();   // 11글자
    System.out.println(length);

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);  // t, o, m

substring 메소드

  • 문자열의 일부 문자열반환

substring 사용법

  • substring(int begin) : 인덱스 begin부터 끝까지 반환
  • 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);

indexOf 메소드

  • 특정 문자열의 인덱스를 반환
  • 특정 문자열이 2개 이상 존재하는 경우 발견된 첫 번째 문자열의 인덱스를 반환
  • 발견되지 않으면 -1을 반환

indexOf 사용법

  • indexOf(String str) : 인덱스 0부터 String str을 검색
  • 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);

lastIndexOf 메소드

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

contains 메소드

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

isEmpty / isBlank 메소드

isEmpty 메소드

  • 빈 문자열이면 true 반환, 아니면 false 반환
  • 빈 문자열 : ""처럼 문자열의 길이가 0인 문자열
    String name = "";
    if(name.isEmpty()) {
      System.out.println("이름이 없다.");
    } else {
      System.out.println("이름이 있다.");
    }

isBlank 메소드

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

format 메소드

  • 문자열을 지정한 형식으로 반환
  • 클래스 메소드이므로 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));   // 10자리 문자열 표시, 문자열을 오른쪽 정렬 처리
    System.out.println(String.format("%-10s", str));   // 10자리 문자열 표시, 문자열을 왼쪽 정렬 처리

strip / trim 메소드

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

replace 메소드

  • 지정된 문자열을 다른 문자열로 변환
  • 발견된 모든 문자열을 변환
    String ip = "192.168.0.101";

    String str = ip.replace(".", "_"); // 192_468_0_101
    System.out.println(str);

(replace : 문자열을 전달해서 변환 / replaceAll : 정규식 패턴을 전달하여 변환)


StringBuffer 클래스

  • Java.lang.StringBuffer
  • JDK 1.0부터 사용 가능하다.
  • String연결하는 클래스이다. (문자열 연결 연산자 +를 대체하는 클래스)
  • synchronized(동기화) 처리되어 멀티스레드 환경에서 사용할 수 있다.
  • 동작이 느리다.
  • String 클래스에 비해서 메모리 낭비가 적다.
    // StringBuffer 객체 선언
    StringBuffer sb;
   
    // StringBuffer 객체 생성
    sb = new StringBuffer();
   
    // append 메소드를 이용한 문자열 연결
    sb.append("ha");
    sb.append("va");
    sb.append("na");
   
    // StringBuffer 객체에 저장된 문자열을 String으로 변환
    String str = sb.toString();	// havana
    System.out.println(str);

StringBuilder 클래스

  • Java.lang.StringBuilder
  • JDK 1.5부터 사용 가능하다.
  • String을 연결하는 클래스이다. (문자열 연결 연산자 +를 대체하는 클래스)
  • synchronized(동기화) 처리가 되지 않아 싱글스레드 환경에서 사용할 수 있다.
  • String 클래스에 비해서 메모리 낭비가 적다.
    // StringBuilder 객체 선언
    StringBuilder sb;
   
    // StringBuilder 객체 생성
    sb = new StringBuilder();
   
    // append 메소드를 이용한 문자열 연결
    sb.append("ha");
    sb.append("va");
    sb.append("na");
   
    // StringBuilder 객체에 저장된 문자열을 String으로 변환
    String str = sb.toString();	// havana
    System.out.println(str);

profile
개발이 세상에서 제일 재밌어요

0개의 댓글

관련 채용 정보