TIL | Java - API java.lang 패키지

2022. 10. 19. 13:46·Java

JAVA API란?

(Application Programming Interface)
API뜻은 라이브러리라고 부르며 프로그램 개발에 자주 사용되는 클래스 및 인터페이스의 모음입니다. 더 간단히 말해 자바 프로그램 안에 미리 만들어져있는 있는 유용한 기능들입니다.
java.lang 패키지에 있는 클래스와 인터페이스는 import 구문 없이 사용할 수 있습니다.

 

jdk11 documents - java.lang
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/package-summary.html

아래의 메서드들을 외울 필요는 없습니다. 내용이 방대해서 어차피 다 까먹기 때문에 외우려고 하기 보다 메서드 보는 방법을 익히는게 좋습니다.

 

API 메서드 확인하는 방법

참조변수에 .을 찍어보면 사용할 수 있는 메서드가 나옵니다.

 

 

영어로 내용이 뜨는데 해석을 못하겠으면 구글 번역기에 검색해보거나,
메서드를 구글링하여 내용을 확인합니다!

CharSequence는 인터페이스이기에 문자열이 들어갈 수 있습니다.

- override, implement 해야될 메서드, 인터페이스 보기

- toString() 메서드도 자동 오버라이드 할 수 있습니다!

 


 

아래에 사용빈도가 높은 메서드들을 적어놓았지만,
그 중에서도 더욱 사용빈도가 높은 메서드 이름 앞에 ^표시 넣어놨습니다.

Object 클래스

^toString() : 멤버변수가 어떤 값을 갖고 있는지 문자열로 반환 오버라이딩 후 사용
^equals() : 객체 같은지 비교
clone()

public class Person /*생략extends Object*/ implements Cloneable{
	private String name;
	Person(String name) {
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	//오버라이딩 - toString (이게 제일 많이 사용됨)
	//generate toString
	@Override
	//오버라이딩 하지 않으면 객체 주소만 나옴
	public String toString() { //객체가 갖고있는 멤버변수가 뭘 갖고 있는지(값)문자열로 반환
		return "Person [name=" + name + "]";
	}
	//멤버변수명이 같으면 true반환
	//더 유용한 정보를 반환하도록 오버라이드 내용 변경
	@Override
	public boolean equals(Object obj) {
		if(obj instanceof Person) {
			Person p = (Person)obj;
			String n = p.getName(); //person이 갖고있는 이름 나옴
		
			if(n.equals(this.name)) {
				System.out.println("이름이 같음");
				return true;
			}
		}
		return false;
	}
	//clone메서드를 사용하고 싶다면 override
	@Override
	protected Object clone() throws CloneNotSupportedException {
		return super.clone();
	}
}
	public static void main(String[] args) {
		Person p = new Person("홍길동");
		//오버라이딩 후 멤버변수의 값을 확인하느라 사용
		//못알아듣겠으면 번역기 사용
		
		//toString()
		System.out.println(p.toString());//반환ok //Person [name=홍길동]
		System.out.println(p);//Person [name=홍길동]
		
		//equals()
		Person p2 = new Person("홍길동");
		System.out.println(p.equals(p2)); //f
		//객체 주소가 다르기때문에 false
		
		//clone() - 객체 복사
		try {
			Object obj = p.clone(); //이름까지 동일하게 복사 (주소는 다르지만)
			Person p3 = (Person)obj;
			
			System.out.println("복사된 객체의 name :" + p3.getName());
			System.out.println(p3 == p); //false
		} catch (CloneNotSupportedException e) {
			e.printStackTrace();
		}
	}

System 클래스

System 클래스가 제공하는 메서드는 모두 static 메서드이므로 System 클래스 이름으로 바로 사용이 가능합니다.

exit() : 시스템 종료
gc() : 가비지 컬렉터 실행
currentTimeMillis() : 1970.1.1 이후의 현재까지의 나온 시간을 밀리초

System.out.println();
//System.exit(0);
//System.gc();

long start = System.currentTimeMillis(); 
//System.out.println(start);
//1970/1/1이후의 현재까지의 나온 시간을 밀리초로 

long sum = 0;
for(int i = 1; i <= 10000000000L; i++) {
	sum+=i;
}
long end = System.currentTimeMillis(); 
//System.out.println(end);

System.out.println((end - start)* 0.001 +"초 소요됨");

String 클래스

^charAt() : 특정 인덱스의 글자를 리턴
indexOf() : 특정 문자열의 시작 인덱스 값을 반환합니다. 만약 주어진 문자열이 포함되어 있지 않으면 -1 을 리턴합니다.
^replace( , ) : 특정 문자열을 변경합니다.
^substring() : 인덱스를 기준으로 그 앞의 문자열을 잘라줍니다. 만약 매개값으로 인덱스를 2개 주면 처음 매개값 이상 두 번째 매개값 미만의 문자열을 제외하고 나머지를 삭제합니다.
trim() : 문자열의 앞, 뒤 공백을 제거합니다.
split() : 특정 문자열 기준으로 잘라서 배열에 리턴.
contains() : 해당 문자열 포함여부
copyValueOf()
valueOf()

String s = "홍길동";
//char a = s.charAt(0);
//System.out.println(a);

//indexOf("문자열");
//길 문자를 찾으면 위치반환, 못찾으면 -1 반환
int index = s.indexOf("길");
System.out.println("길 시작위치:" + index);

//replace - 원본 문자는 안바뀜
//s = s.replace("길",""); -> 원본문자 바꾸기
String result = s.replace("길","");
System.out.println("결과:" + result);
System.out.println("원본문자열:" + s);

//substring
String s2 = "오늘은 날씨가 추워요";
String result2 = s2.substring(4); 
System.out.println(result2); //4미만 절삭

String result3 = s2.substring(4, 7);
System.out.println(result3); //4이상 7미만 추출

//trim - 앞뒤 공백 제거
System.out.println("   홍길동 ".trim());

//split - 문자열 자르기
System.out.println("-----------------------");
String[] result4 = s2.split(" ");
System.out.println(Arrays.toString(result4));

//매개변수 2개 주면 배열의 크기 제한
String[] result5 = "010-1234-5678".split("-", 2);
System.out.println(Arrays.toString(result5));

//문자열 포함여부
if(s.contains("홍")) {
	System.out.println("홍 이 포함됨");
}
								   //배열의 3번째 선언방법		
String result6 = String.copyValueOf(new char[] {'a','b','c'});
System.out.println(result6);
		
String result7 = String.valueOf(3);
System.out.println("문자열 바뀐 결과:" + result7);

StringBuilder, StringBuffer 클래스

String 클래스의 단점은 매번 새로운 객체를 생성하기에 메모리를 많이 소비하고 그로 인해 속도도 딜레이가 된다. String의 단점을 보완하여 만들어진 메서드가 바로 StringBuilder 와 StringBuffer 이다.(둘은 똑같다고 보면 된다.) StringBuilder 와 StringBuffer 는 기존 객체를 재활용하기에 매번 새로운 객체를 생성할 필요가 없기에 코드가 좀 더 간편해질 수 있고 속도가 좀 더 빠르다.

30만번의 객체를 만들 일은 없겠지만 속도차이를 보기 위해 극단적인 조건을 주어 속도를
출력해보니 StringBuilder, StringBuffer가 약 4초정도 더 빠른 것을 확인할 수 있었다.

public static void main(String[] args) {
		
		long start = System.currentTimeMillis();
		
		//String str = "";
		//for(int i = 1; i < 300000; i++) { //객체 str 30만번 생성
		//	str+="A";
		//}
		
		//시간 단축 
		StringBuffer sb = new StringBuffer("");
		for(int i = 1; i < 300000; i++) {
			sb.append("A");
		}
		
		long end = System.currentTimeMillis();
		
		System.out.println((end-start)*0.001);
		
	}

StringBuilder, StringBuffer 클래스의 메서드들을 살펴보자!

append() : 기존 문자열의 뒤에(마지막) 문자열을 추가
insert() : 특정 위치에 문자열을 추가
delete() : 문자열을 삭제
deleteCharAt() : 특정 인덱스의 문자 하나를 삭제
replace() : 문자열의 일부분을 다른 문자열로 대체
setCharAt() : 문자열에서 주어진 index의 문자를 다른 문자로 대체
toString() : StringBuilder 객체의 값을 문자열로 반환
reverse() : 문자열을 거꾸로

String str = new String("Java");

//StringBuffer  = StringBuilder (같음)
StringBuffer sb = new StringBuffer("Java");

System.out.println(str); //Java
System.out.println(sb); //Java

str = str + "Program"; //새로운 문자열 만듦
sb.append("Program"); //void 메서드고 붙이기만 했다.

System.out.println(str); //JavaProgram
System.out.println(sb); //JavaProgram
		
//문자열 마지막에 추가
sb.append("기존 문자열 마지막에 추가"); 
System.out.println(sb); //JavaProgram기존 문자열 마지막에 추가

//중간에 추가
sb.insert(11, "-");
System.out.println(sb); //JavaProgram-기존 문자열 마지막에 추가

//문자열 변경
sb.replace(0, 4, "자바"); //0이상 4미만
System.out.println(sb); //자바Program-기존 문자열 마지막에 추가

//문자열 삭제 
sb.delete(0, 2);
System.out.println(sb);//Program-기존 문자열 마지막에 추가

//문자열로 형변환
//System.out.println(str.equals(sb));에러 
String result = sb.toString();
		
//거꾸로
sb.reverse();
System.out.println(sb); //가추 에막지마 열자문 존기-margorP

Math 클래스

Math 클래스가 제공하는 메서드는 모두 static 메서드이므로 Math 클래스 이름으로 바로 사용이 가능합니다.

abs() : 절대값
ceil() : 올림값
floor() : 내림값
max() : 수를 비교하여 최대값 구하기
min() : 수를 비교하여 최소값 구하기
^random() : 랜덤값 구하기 (~이상~미만)
rint() : 현재 수에서 가까운 정수를 실수형태로 구하기
round() : 반올림값

//올림
double d = Math.ceil(1.3);
System.out.println(d);
		
//내림
double d2 = Math.floor(1.2);
System.out.println(d2);
		
//반올림
double d3 = Math.round(3.14);
System.out.println(d3);
		
//루트
double d4 = Math.sqrt(16);
System.out.println(d4);
		
//절대값
double d5 = Math.abs(-4);
System.out.println(d5);
		
//큰값
int i1 = Math.max(5, 3);
System.out.println(i1);

Wrapper 클래스 ⭐️

기본 타입(int,byte,String...)의 값을 갖는 객체를 생성할 수 있습니다.
기본 타입의 값을 포장 객체로 만드는 과정을 박싱(Boxing)이라 하며 포장 객체에서 기본 타입의 값을 얻어내는 과정을 언박싱(Unboxing)이라 합니다.
Byte, Short, Integer, Long, Float, Double, Boolean, Character

java의 정석 유튜브 캡쳐
//기본타입
int a = 100;
double b = 3.14;
long c = 200L;

//기본형 -> 객체형 포장하는 작업을 boxing
//생성자로 객체 생성
Integer val = new Integer(a);
System.out.println(val); //100, 주소가 아닌 값이 반환됨
Double val2 = new Double(b);
Long val3 = new Long(c);

Object[] arr = {val,val2,val3}; //객체형 변수를 Object배열에 저장
//배열은 참조형 변수에만 넣어 사용할 수 있어서
//출력시 Arrays.toString 메서드를 사용하여 출력해야 값을 출력할 수 있다.

//객체형 -> 기본형으로 변경 unboxing
int a1 = val.intValue();
double d1 = val2.doubleValue();
long c1 = val3.longValue();

java 1.8버전부터 Autoboxing(자동형변환)을 지원합니다.
아래와 같이 간단하게 적을 수 있습니다.

//Autoboxing -> 자동형변환
		
Integer obj = 100;//자동 박싱
int obj1  = obj;//자동 언박싱
		
int a = 100;
Integer val = a;
a = val;
		
Object[] arr = {1,2,3};
		
//문자열을 숫자형으로 형변환
int v1 = Integer.parseInt("3"); //매우 중요 외우기!
int v2 = Integer.parseInt("34"); 
System.out.println(v1+v2);//37
Double v3 = Double.parseDouble("3.14");
long v4 = Long.parseLong("23332423534");
		
System.out.println(v1+v2+v3+v4);
 

'Java' 카테고리의 다른 글

java | 문자열 날짜로 변환 (string -> date)  (0) 2023.04.16
TIL | compareTo(), compareToignorecase()  (0) 2022.10.25
TIL | Java - 예외처리  (0) 2022.10.19
TIL | Java - 인터페이스  (0) 2022.10.14
TIL | Java - abstract  (0) 2022.10.13
'Java' 카테고리의 다른 글
  • java | 문자열 날짜로 변환 (string -> date)
  • TIL | compareTo(), compareToignorecase()
  • TIL | Java - 예외처리
  • TIL | Java - 인터페이스
개발 공부
개발 공부
  • 개발 공부
    개발 공부
    개발 공부
  • 전체
    오늘
    어제
    • 전체보기 (163)
      • 프로젝트 (1)
      • JavaScript (46)
      • Node.js (3)
      • Next.js (5)
      • React (17)
      • NoSQL (0)
      • HTML,CSS (3)
      • CS (6)
      • Java (35)
      • Spring (6)
        • Spring의 정석 (1)
      • Spring boot (1)
      • MySQL (1)
      • 리눅스 (16)
      • JSP (9)
      • AWS (0)
      • git (2)
      • 알고리즘 (1)
      • ect (7)
      • Project (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자바
    Java
    티스토리챌린지
    Java의 정석
    오블완
    자바의 정석
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
개발 공부
TIL | Java - API java.lang 패키지
상단으로

티스토리툴바