기본 API란?
Application Programming Interface의 약자로 자주 사용되는 클래스 및 인터페이스의 모음집 느낌이다.
간단하게 자주 사용하는 것만 정리해보면
1. math 기능
math의 특징 : 모든 필드와 메소드가 static이다.
필드의 변수들은 모두 final(상수)이다.
생성자가 private이다. (값을 못바꾸게 일부러)
한번만 메모리에 올려놓고 재사용하는 개념 -> 싱글톤 패턴
public class A_math {
public void mathod01() {
//java.lang.math
//상수필드
System.out.println("파이 : " + Math.PI);
//절대값을 알고자 할 때
int num1 = -10;
System.out.println("절대값 : " + Math.abs(num1));
//올림 : ceil
double num2 = 4.349;
System.out.println("올림 : " + Math.ceil(num2));
//반올림 : round
System.out.println("반올림 : "+ Math.round(num2));
//버림 : floor
System.out.println("버림 : " + Math.floor(num2));
//가장 가까운 정수값을 알아낸 후 실수값을 반환하는 rint
System.out.println("가장 가까운 정수값 : " + Math.rint(num2));
//제곱근 (루트) : sqrt
System.out.println("4의 제곱근 : " + Math.sqrt(4));
//제곱 : pow
System.out.println("2의 10제곱 : " + Math.pow(2 , 10));
}
}
2. String 기능
String은 문자열을 다루는만큼 좀 많다..
쭉 읽어보시고 이런게 있다 생각하고 나중에 필요할 때 찾아쓰면 될 것 같다.
String 클래스 == 불변클래스(변하지 않는 클래스)
변경이 가능하지만 수정되는 개념이 아니라 새로 생성하여 교체
변경하는 순간 기존의 문자열 자리에서 변경되는게 아닌
새로운 곳을 참조하도록 됨 (새로운 주소값 부여받음 == 주소값 변경)
import java.util.StringTokenizer;
public class B_String {
public void mathod01() {
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1 + str2);
//String 클래스에 toString메소드 이미 오버라이딩 되어있음 !(실제 담긴 문을 반환하도록)
System.out.println(str1==str2 ); // (false) 주소값 비교라서
System.out.println(str1.equals(str2));
//String 클래스에 equals메소드는 이미 오버라이딩 되어있음(주소값 비교가 아닌 담긴 문자값을 비교하도록 오버라이딩 되어있음)
//String의 hashcode메소드 이미 오버라이딩 되어있다.
System.out.println(str1.hashCode());
System.out.println(str2.hashCode());
//주소값에 대한 hashcode가 알고 싶다면 메소드를 이용해야한다.
System.out.println(System.identityHashCode(str1));
System.out.println(System.identityHashCode(str2));
System.out.println("===========================================");
//문자열을 리터럴값으로 생성
String str3 = "hello";
String str4 = "hello";
//리터럴 제시시 리터럴 영역(상수풀)에 올라가 상수풀에 리터럴을 등록하고 가리킴
//만약 같은 리터럴값이 있다면 주소값도 같아진다.
System.out.println(str3);
System.out.println(str4);
System.out.println(str3.hashCode());
System.out.println(str3 == str4);
System.out.println(System.identityHashCode(str1));
System.out.println(System.identityHashCode(str2));
System.out.println(System.identityHashCode(str3));
System.out.println(System.identityHashCode(str4));
str4= "hi";
}
}
다음 API는 mathod02로 만들었다.
public void mathod02() {
String str1 = "Hello world";
//메소드명(매개변수) : 반환형
//1. 문자열.charAt(int index) : char
// 문자열에서 전달받은 index의 위치에 문자만을 추출해서 리턴
char ch = str1.charAt(3);
System.out.println(ch);
//2. 문자열.concat(String str) : String
// 문자열과 전달된 또 다른 문자열을 하나로 합쳐서 새로운 문자열로 리턴
String str2 = str1.concat("!!!"); //참조, 새로운 객체를 만들기 때문에 주소값이 다르다.
System.out.println("str2 : " + str2);
String str3 = str1 + "!!!"; //상수, 위에서 한 리터럴
System.out.println(str3);
//str2와 str3의 담긴 문자열은 일치하나 담겨있는 주소값은 다르다.
System.out.println("str2와 str3는 일치하는가 : " + (str2==str3));
//3. 문자열.equals(Object obj) : boolean
// 문자열과 전달된 문자열을 가지고 주소값 비교가 아닌 실제 문자열 값을 가지고 동등비교
System.out.println("str2와 str3는 일치하는가 : " + str2.equals(str3));
//4. 문자열.contains(Charsequence s) : boolean
System.out.println("str1에 Hello라는 문자열이 포함되어 있습니까 ? : " + str1.contains("Hello"));
System.out.println("str1에 bye라는 문자열이 포함되어 있습니까 ? : " + str1.contains("bye"));
//5. 문자열.length() : int
System.out.println("str1의 길이 : " + str1.length());
//6. 문자열.substring(int beginIndex) : String -> 문자열의 beginIndex위치에서부터 끝까지 문자열 추출해서 리턴
System.out.println(str1.substring(6));
System.out.println(str1.substring(6,9));
//7. 문자열.replace(char oldchar, char newchar) : String
// 문자열에서의 oldchar문자를 newchar문자로 변환한 새 문자열 리턴
String str4 = str1.replace('l', 'c');
System.out.println(str4);
//8. 문자열.toUpperCase() : String ->대문자변환
// 문자열.toLowerCase() : String ->소문자변환
//9. 문자열.trim() : String
// 문자열의 앞 뒤 공백을 제거시킨 새 문자열을 리턴
String str6 = "JA VA ";
System.out.println(str6.trim());
//10. 문자열.toCharArray() : char[]
char[] arr = str1.toCharArray();
for(char Arr : arr)
System.out.print(Arr+" ");
System.out.println(str6.valueOf(arr));
}
마지막 API 정리이다.
public void mathod03() {
String str = "Java,Oracle,JDBC,HTML,CSS,Spring";
//구분자를 기준으로 문자열을 분리시키는 방법.
//방법 1. 분리된 문자열을 String[] 배열에 차곡차곡 담고싶을 때
// String클래스에 제공하는 split 메소드 이용
// 문자열.split(구분자) : String[]
String[] arr = str.split(","); //자를게 없으면 그냥 리턴. 최소로 1개 반환됨(자기자신)
System.out.println("배열의 길이 : " + arr.length);
for(String s : arr) {
System.out.println(s);
}
//방법 2. 분리된 문자열들을 각각 토큰으로써 관리하고자 할 때
// java.util.Stringtokenizer 클래스 이용하는 방법
StringTokenizer st = new StringTokenizer(str,",");
int j = st.countTokens();
for(int i = 0; i<j;i++)
System.out.println(st.nextToken());
System.out.println(st.countTokens());
//방법 2, while문 안에 hasmore에 값이 남아있으면 true 없으면 false임
while(st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
}
솔직히 다 외우려하면 양이 너무 방대하기 때문에 어려운 것 같다.
그래서 쭉 한 번씩 사용해보며 이런 기능이 있구나 생각해서 머리에 담아 나중에 필요할 때 찾아써서 반복숙달하는게
좋은 방법인 것 같다.
'JAVA 정리노트' 카테고리의 다른 글
JAVA [GC, Garbage Collection] 정리본 (0) | 2024.02.03 |
---|---|
JAVA I/O, stream에 대하여 (0) | 2024.02.02 |
JAVA RuntimeException(예외처리) (4) | 2024.01.31 |
JAVA 추상메소드,클래스와 인터페이스 (0) | 2024.01.29 |
JAVA 의 다형성 (0) | 2024.01.24 |