ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • String
    java 2020. 5. 7. 00:04

    String

    -String 클래스는 문자열에 대한 작업을 할 수 있도록 제공되는 클래스이다.

    -코드상에 " "로 묶인 문자열도 String 클래스의 객체이다.

    -" "로 묶인 문자열은 가상머신이 객체를 생성하고 소멸까지도 담당한다.

    -프로그래밍을 할 때는 " "로 쓰지만 컴파일을 하게 되면 실제로 String클래스로부터 객체를 생성하는 것으로 변경된다.

     

    주요 메서드

    -equals() : 문자열 내용을 비교

    -equalsIsIgnoreCase() : 대소문자를 무시한 문자열 비교

    -toUpperCase() : 소문자를 대문자로 변경

    -toLowerCase() : 대문자를 소문자로 변경

    -startsWith() : ~로 시작여부 검사

    -endsWith() : ~로 끝나는지 여부 검사

    -indexOf() : 문자열이 어디에 들어 있는지

    -getBytes() : 문자열을 바이트화 시킨다.

    -length() : 문자열 길이 측정

    -substring() : 문자열의 일부를 가지고 온다.

    -trim() : 좌우 공백 제거

     

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String str1 = "안녕하세요";

    //문자열 비교
    if(str1 == "안녕하세요") {
    System.out.println("문자열은 같습니다.");
    } else {
    System.out.println("문자열은 다릅니다.");
    }
    //str1에는 "안녕하세요"라는 문자열을 관리하는 스트링클래스의 객체이다.
    // 객체의 주소값을 str1이 담아놓는 것이다.
    // if(str1 == "안녕하세요")이렇게 작성을 하면 또다른 문자열 객체를 생성을 한다.
    // 즉, String str1 = "안녕하세요";에서 생성된 객체와
    // if(str1 == "안녕하세요")에서 생성된 객체는 다르다.
    // 그리고 객체의 주소값을 비교하는 것이기 때문에 다르다라고 나오는 것이 정상이다,
    // 하지만 출력된 결과는 같다고 나온다.
    // 만약 "안녕하세요"라는 글자를 100번 적었다고 가정하면,
    // 그때마다 안녕하세요 라는 문자를 관리하는 객체를 100개를 생성하게 되면
    // 메모리의 낭비가 된다. 똑같이 "안녕하세요" 라는 문자열을 관리하는데 그러한 객체를 똑같이 백개를 만들어 버리면,
    // 낭비가 생겨버린다. 그래서 운영체제는 그렇게 하지 않고 처음 안녕하세요 라는 글자를 사용할 때는 처음 사용하는 거기 때문에
    // 일단 객체를 생성을 한다. 그 다음 안녕하세요 라는 따옴표로 묶여있는 글자를 사용하게 되면,
    // 새로 생성하는 게 아니라 이미 만들어져 있는 것을 그냥 가져다가 쓴다. 
    // 즉, 안녕하세요로 적어두면 전에 만들어 놓은 안녕하세요 라는 객체 주소값을 가지고 와서
    // 사용을 하기 때문에 두개가 같은 문자열이다 라고 판단을 하게 된다.

    //문자열 객체 직접 생성
    String str2 = new String("안녕하세요");
    //"안녕하세요" 객체의 주소값을 가지고 있는 또다른 객체를 하나 만든 것.

    if(str1 == str2) {
    System.out.println("두 문자열의 주소값은 같습니다.");
    }else {
    System.out.println("두 문자열의 주소값은 다르다.");
    }
    //두 문자열은 다르다 라고 나온다.
    // 이 두개의 스트링 객체 str1과 str2는 각각 안녕하세요 라는 글자를 관리하고 있는데
    // str1은 안녕하세요 라는 문자를 관리하는 스트링 객체 주소값을 받아 놓은것이고
    // str2는 안녕하세요 라는 문자를 관리하는 스트링 객체의 주소값을 관리하는 또다른 스트링 클래스를 만든 것이다.
    // 또다른 스트링 클래스를 만든 다음에 주소값을 str2에다가 넣어 준것이다. 그래서 다르다라고 나오게 된다.

    String str3 = "안녕하세요";
    if(str1 == str3) {
    System.out.println("두 문자열의 주소값은 같습니다.");
    }else {
    System.out.println("두 문자열의 주소값은 다르다.");
    }

    //실제 내용값을 비교
    if(str1.equals(str2)) {
    System.out.println("두 문자열은 같습니다.");
    }else {
    System.out.println("두 문자열은 다릅니다.");
    }

    //대소문자 비교
    String eng1 = "abCDef";
    String eng2 = "ABcdef";

    //대소문자 무시 안했을 때
    if(eng1.equals(eng2)) {
    System.out.println("문자열의 내용은 같습니다.");
    }else {
    System.out.println("문자열의 내용은 다릅니다.");
    }
    //결과 : 다르다

    //대소문자 무시했을 때
    if(eng1.equalsIgnoreCase(eng2)) {
    System.out.println("대소문자를 무시하면 같다.");
    }else {
    System.out.println("대소문자를 무시해도 다르다.");
    }
    //결과 : 같다.

    //문자열을 전부 대소문자로 변경하는 법
    //대문자로
    String upperStr = eng1.toUpperCase();
    System.out.println(upperStr);
    //소문자로
    String lowerStr = eng1.toLowerCase();
    System.out.println(lowerStr);

    //문자열이 포함되어 있는지 여부
    String str4 = "abcdedf";
    if(str4.startsWith("abc")) {
    System.out.println("abc로 시작한다.");
    }else {
    System.out.println("abc로 시작하지 않는다.");
    }

    if(str4.endsWith("def")) {
    System.out.println("def로 끝납니다.");
    }else {
    System.out.println("def로 끝나지 않는다.");
    }

    System.out.println(str4.indexOf("c"));//결과 : 2 (abcdef에서 c가 몇번째 위치해 있는지.01234...순으로 센다.)
    System.out.println(str4.indexOf("cd"));
    System.out.println(str4.indexOf("ccc"));//없는 문자열의 경우 결과값은 -1이 나온다.

    //byte형태로 변환
    byte [] br = str4.getBytes();
    for(int i = 0; i< br.length ; i ++) {
    System.out.print(br[i] + " ");
    }
    System.out.println();
    //byte 형태로 변환 되어진 것을 다시 스트링 클래스로
    String str100 = new String(br);
    System.out.println(str100);

    //문자열의 일부 가져오기
    String str5 = str4.substring(2, 3);//두번째에서 3번째 까지(순서 : 0,1,2)
    System.out.println(str5);

    //문자열의 길이 측정
    System.out.println(str4.length());
    System.out.println("안녕하세요".length());

    //공백제거
    String str6 = "             안녕하세요             ";
    String str7 = str6.trim();
    System.out.println(str6);
    System.out.println(str7);

    }

     

    참조 : 인프런 - 안드로이드를 위한 Java - String

    'java' 카테고리의 다른 글

    StringTokenizer  (0) 2020.05.07
    StringBuffer  (0) 2020.05.07
    Runtime클래스  (0) 2020.05.06
    예외처리  (0) 2020.05.06
    thread 동기화  (0) 2020.05.06

    댓글

Designed by Tistory.