hyeonga_code

Java_58_API_lang 패키지, Object 클래스 메소드, String, 메소드 체인 본문

Java

Java_58_API_lang 패키지, Object 클래스 메소드, String, 메소드 체인

hyeonga 2023. 10. 24. 05:59
반응형


    - 'https://docs.oracle.com/javase/8/docs/api/index.html'
    - Deprecated_비추 > 다음 버전에서 사라질 수 있습니다.

- lang 패키지
    - 어떠한 클래스도 참조하지 않고 사용할 수 있는 메소드의 집합입니다.

- Object 클래스 메소드
    - 모든 클래스의 최고 상위 클래스입니다.
    - 자동으로 'extends Object'가 작성됩니다.
        - 사용하기 위해서는 오버라이드를 해야합니다.
        @Override
        public String to String(){}
    - 11 개의 메소드를 가지고 있습니다.
        - protected Object clone()
        - protected void finalize()
        - public Class getClass()
        - 적절한 오버라이딩이 필요합니다.
            - public boolean equals(Object obj)
            - public int hashCode()
            - public String toString()
        - 스레드와 관련된 메소드
            - public void notify()
            - public void wait()
            - public void wait(long timeout)
            - public void wait(long timeout, int names)

 - Java 는 상속 기반 클래스입니다.

    - 확장하지 않고 사용할 수 있는 기능
'adv.baseclass' 패키지 생성
'StringEx.java'
=====

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package adv.baseclass;
 
public class StringEx {
 
    public static void main(String[] args) {
        
        // 문자열 비교
        String word1 = "Java";
        String word2 = new String("Java");
        
        System.out.println("word1 == word2 : " + (word1==word2));
        System.out.println("word1.equals(word2) : " + word1.equals(word2));
            /*
                word1 == word2 : false
                    - String 값의 주소를 비교합니다.
                word1.equals(word2) : true
                    - String 값을 비교합니다.
             */
        
        // 문자열 연산
        String word3 = " Word";
        System.out.println("word1 + word3 : " + (word1 + word3));
        System.out.println("word2 + word3 : " + (word2 + word3));
            /*
                word1 + word3 : Java Word
                    - String Pool에 등록되어 Java, Word, Java Word 단어가 등록됩니다.
                word2 + word3 : Java Word
                    - Heap 공간에 저장되어 있는 값이 Java Word로 수정됩니다.
                - 문자열 연산에는 메모리를 고려해야 합니다.
                    - Heap 공간에 바로 작성하기 위해 String bupffer를 사용합니다.
             */
    }
}


- String
          - 한 번 생성되면 할당된 메모리 공간이 변하지 않습니다.
          - concat, + 연산자를 사용하여 기존에 생성된 클래스객체 말고 새로운 객체를 생성합니다.
          - new String 함수 : 주소를 나타내게 됨
          - 데이터 값을 비교
                    '원본'.equals('비교할 대상');
          - 문자열의 길이
                    '문자열'.length();
          - 문자열의 문자 1 개
                    '문자열'.charAt(n);
          - 문자열 byte 배열로 변환
                    byte[] by = '문자열'.getBytes();
          - byte 배열 문자열로 변환
                    String '문자열2' = new String(by);
          - 문자열 특정 위치
                    str.substring(n1);
                              - n1 부터 끝까지
                    str.substring(n1, n2);
                              - n1 부터 n2 까지
          - 메서드 체인
                    '공백을 제거할 문자열 1'.trim().equals('비교할 문자열 2');
                              -'공백을 제거할 문자열 1'의 값이 '비교할 문자열 2'와 같은 경우

          string.charAt(i)
          string.length()
          string.LowerCase() > 소문자
          stirng.trim() > 공백, 화이트 코드 제거
          string.substring(1,3) > 1 부터 3까지
          string.indexOf("") > 앞에서 i 위치
          stirng.lastIndexOf("") > 뒤에서 i 위치
                    - 찾는 내용 없는 경우 -1
=====

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.util.*;
 
public class ex0325 {
    public static void main(String[] args) {
        String a = "aaa";
        String b = "aaa";
        String c = new String("aaa");
        // 주소를 나타냄    
        String d = new String("aaa");
        // 주소를 나타냄
 
        System.out.println(a == b);    // TRUE
        System.out.println(a == c);    // FALSE
        System.out.println(a == d);    // FALSE
        System.out.println(c == d);    // FALSE
        // 주소가 다르므로 False
 
        System.out.println(a.equals(b));    // TRUE
        System.out.println(a.equals(c));    // TRUE
        System.out.println(a.equals(d));    // TRUE
        System.out.println(c.equals(d));    // TRUE
        // 데이터 값을 비교하므로 True
    }
}
 



 - 문자열 길이/ 한 글자씩
=====

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import java.util.*;
 
public class ex0325 {
    public static void main(String[] args) {
        String str = "Hello, Java!!";
        for (int i = 0; i < str.length(); ++i) {
            System.out.println(str.charAt(i));
        }
        System.out.println("Start with 'Hello'? " + str.startsWith("Hello"));    
            // Start with 'Hello'? true
        System.out.println("End with 'Java'? " + str.endsWith("Java"));    
            // End with 'Java'? false
    }
}




 - 문자열/byte
=====

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.*;
 
public class ex0325 {
    public static void main(String[] args) {
        String str = "Hello, Java!!";
 
        byte[] by = str.getBytes();
        // 문자열 byte 배열로 변환
        for (int i = 0; i < by.length++i) {
            System.out.println(by[i]);
        }
        String str2 = new String(by);
        // byte 배열 문자열로 변환
        System.out.println(str2);
    }
}




 - 위치
=====

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.*;
 
public class ex0325 {
    public static void main(String[] args) {
        String str = "Hello, Java!!";
        System.out.println("str.substring(7) = " + str.substring(7));    
            // str.substring(7) = Java!!
        // 매개 변수가 하나 : 해당 위치부터 끝까지
 
        System.out.println("str.substring(7,11) = " + str.substring(711));    
            // str.substring(7,11) = Java
        // 매개 변수가 두개 : 처음 위치부터 두 번째 위치 까지
 
        System.out.println(str.toUpperCase());    // HELLO, JAVA!!
        // 전부 대문자로 변환
        System.out.println(str.toLowerCase());    // hello, java!!
        // 전부 소문자로 변환
    }
}



 - 공백 제거
=====

1
2
3
4
5
6
7
8
9
10
11
12
import java.util.*;
 
public class ex0325 {
    public static void main(String[] args) {
        String str = "Hello, Java!!";
        String str2 = "Hello, Java!!";
 
        System.out.println(str);    // Hello, Java!!
        System.out.println(str2);    // Hello, Java!!
        System.out.println(str2.trim().equals(str)); // True
    }
}



 - 데이터 구분
=====

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.*;
 
public class ex0325 {
    public static void main(String[] args) {
        String data = "홍길동@123-1234@서울 강남구";
        // @ : 데이터를 구분하는 문자
 
        StringTokenizer st = new StringTokenizer(data, "@");
        while (st.hasMoreTokens()) {
            System.out.println(st.nextToken());
        }    // 잘 사용하지 않는 방법
 
        String[] member = data.split("@");
        for (int i = 0; i < member.length; i++) {
            System.out.println(member[i]);
        }
 
        Scanner in = new Scanner(data).useDelimiter("\\s*@\\s*");
        System.out.println("Name : " + in.next());
        System.out.println("Tel : " + in.next());
        System.out.println("Address: " + in.next());
    }
}




  - 문자열 입력 받아 각 알파벳이 몇 개 인지 출력
=====

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.*;
 
public class ex0325 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        System.out.println("Input sentence : ");
        String str = in.next();
        // 문자열 입력 받음
        
        int[] alpha = new int[26];
        // 알파벳 개수를 넣을 배열 생성
 
        str = str.toUpperCase();
        // 모두 대문자로 변경
        
        for(int i=0; i<str.length(); ++i) {
            char ch = str.charAt(i);            
            if(ch>='A' && ch<='Z') {
                alpha[ch-65]++;    //A = 0번방
            // else if(ch>='a' && ch<='z'){ alpha[ch-97]++;} _ Line 13 없을 경우
            }
        }
 
        for (int i=0; i<alpha.length; i++) {
            if(alpha[i] != 0) {
                System.out.println((char)(65+i) + " : " + alpha[i] );
            }
        }
        
    }
}

 

반응형