hyeonga_code
Java_58_API_lang 패키지, Object 클래스 메소드, String, 메소드 체인 본문
- '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(7, 11));
// 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] );
}
}
}
}
|
'Java' 카테고리의 다른 글
Java_60_API_스트링 버퍼, 스트링 빌더_StringBuffer, String Builder (0) | 2023.10.24 |
---|---|
Java_59_API_스레드_생명 주기, 멀티 스레드, 메소드, 스레드 종류, 스케줄링 방식, 스레드 스케줄러, 동기화 (0) | 2023.10.24 |
Java_57_Log_로그 처리 (0) | 2023.10.17 |
Java_56_예외 처리 (0) | 2023.10.16 |
Java_55_타입 추론, var (0) | 2023.10.16 |