java.lang
- 자바에서 가장 기본적인 동작을 수행하는 클래스들의 집합
- java.lang 클래스의 패키지는 import없이 사용 가능
java.lang.Object
- Object 클래스는 모든 자바 클래스의 최고 조상 클래스가 됨
- Object클래스는 필드없이 11개의 메서드로 구성됨
toString()
- 인스턴스에 대한 정보를 출력하는 메서드
- 메서드를 사용하면 객체의 클래스 이름과 함께 메모리 주소를 출력함
Car car01 = new Car();
Car car02 = new Car();
System.out.println(car01.toString());
System.out.println(car02.toString());
equals()
- 인스턴스를 매개변수로 전달받는 참조변수 "값"이 일치하는지 확인
Car car01 = new Car();
Car car02 = new Car();
System.out.println(car01.equals(car02));
car01 = car02;
System.out.println(car01.equals(car02));
clone()
- 인스턴스를 복제해 새로운 인스턴스를 반환하는 메서드
- shallow copy이기 때문에 만약 인스턴스 내부 필드값이 배열이나 인스턴스인 경우 clone() 메서드를 오버라이딩해 deep copy가 이루어지도록 재정의해야함
- clone() 메서드는 protected로 정의되어있기 때문에 실제 사용을 위해서는 clone() 메서드를 오버라이딩 해 재정의해야함
import java.util.*;
class Car implements Cloneable {
private String modelName;
private ArrayList<String> owners = new ArrayList<String>();
public String getModelName() { return this.modelName; }
public void setModelName(String modelName) { this.modelName = modelName; }
public ArrayList getOwners() { return this.owners; }
public void setOwners(String ownerName) { this.owners.add(ownerName); }
public Object clone() {
try {
Car clonedCar = (Car)super.clone();
return clonedCar;
} catch (CloneNotSupportedException ex) {
ex.printStackTrace();
return null;
}
}
}
public class Object03 {
public static void main(String[] args) {
Car car01 = new Car();
car01.setModelName("아반떼");
car01.setOwners("홍길동");
System.out.println("Car01 : " + car01.getModelName() + ", " + car01.getOwners() + "\n");
Car car02 = (Car)car01.clone();
car02.setOwners("이순신");
System.out.println("Car01 : " + car01.getModelName() + ", " + car01.getOwners());
System.out.println("Car02 : " + car02.getModelName() + ", " + car02.getOwners());
}
}
java.lang.String
- 자바에서는 문자열 처리를 위해 String 클래스를 별도로 제공함
- String 인스턴스는 불변 객체로, 한번 생성되면 값을 읽기만 할 수 있고, 변경할 수는 없음
charAt()
- 문자열의 특정 인덱스에 해당되는 문자를 반환하는 메서드
- 문자열의 범위를 벗어나는 인덱스가 들어오면 IndexOutOfBoundsException가 발생함
String str = new String("Java");
for (int i = 0; i < str.length(); i++) {
System.out.print(str.charAt(i) + " ");
}
compareTo()
- 문자열을 다른 문자열과 비교해주는 메서드
- 사전순으로 문자열을 비교하며 문자열이 같으면 0, 해당 문자열이 인수로 전달된 문자열보다 크면 양수, 작으면 음수를 반환함
- 대소문자를 비교하지 않는 경우에는 compareToIgnoreCase() 메서드 사용
String str = new String("abcd");
System.out.println(str.compareTo("bcef"));
System.out.println(str.compareTo("abcd") + "\n");
System.out.println(str.compareTo("Abcd"));
System.out.println(str.compareToIgnoreCase("Abcd"));
indexOf()
- 해당 문자열에서 특정 문자나 문자열이 처음 나오는 인덱스를 반환함
- 인수로 전달된 문자나 문자열이 없으면 -1 반환
String str = new String("Oracle Java");
System.out.println(str.indexOf('o'));
System.out.println(str.indexOf('a'));
System.out.println(str.indexOf("Java"));
trim()
- 문자열 앞뒤의 모든 공백문자를 제거해주는 메서드
String str = new String(" Java ");
System.out.println(str + '|');
System.out.println(str.trim() + '|');
toLowerCase(), toUpperCase()
String str = new String("Java");
System.out.println(str.toLowerCase());
System.out.println(str.toUpperCase());
java.lang.StringBuffer
- String 클래스 인스턴스는 한번 생성되면 그 값을 읽기만 할 수 있고, 변경할수는 없음 => 문자열 덧셈등을 시행시 객체를 합치기 때문에 속도가 저하됨
- 문자열의 잦은 조작이 필요하다면 가변 클래스인 StringBuffer를 사용
내부에 16개의 문자를 저장할 수 있는 버퍼를 가지기 때문에 문자열 조작시 속도향상에 도움이 됨
단 setter메서드로 인해 객체의 불변성이 보장되지 않음으로 이를 필요로 할때는 String 객체 사용
append()
- 문자열의 마지막에 주어진 인수값을 추가하는 메서드
- String의 concat와 동일한 역할을 하지만, 내부적인 처리 속도가 훨씬 빠름
StringBuffer str = new StringBuffer("Java");
str.append(" Class");
System.out.println(str);
capacity()
- StringBuffer 인스턴스의 현재 버퍼 크기를 반환함
- 생성자에 따로 지정하지 않는경우 버퍼 크기는 생성시 문자열 길이에 16을 더한 값이 됨
StringBuffer str01 = new StringBuffer();
StringBuffer str02 = new StringBuffer("Java");
System.out.println(str01.capacity());
System.out.println(str02.capacity());
delete()
- 주어진 인덱스의 문자열을 제거하는 메서드
- 만약 한개의 문자만을 제거하는 경우 deleteCharAt() tkdyd
StringBuffer str = new StringBuffer("Java Oracle");
System.out.println("원본 문자열 : " + str);
System.out.println(str.delete(4, 8));
System.out.println(str.deleteCharAt(1));
insert()
- 주어진 인덱스 위치에 문자열을 삽입하는 메서드
StringBuffer str = new StringBuffer("Java?");
str.insert(4, "Script");
System.out.println(str);
java.lang.Math
- 수학적인 계산 메서드를 모아둔 클래스
- 전부 static 메서드로 객체생성없이 바로 사용가능
random()
- 0에서 1 사이의 무작위의 double값 하나를 반환하는 메서드
System.out.println((int)(Math.random() * 100));
abs()
System.out.println(Math.abs(10));
System.out.println(Math.abs(-10));
System.out.println(Math.abs(-3.14));
floor(), celi(), round()
- 각각 소수점 이하 값을 버림, 올림, 반올림한 값을 반환하는 메서드
System.out.println(Math.ceil(10.0));
System.out.println(Math.ceil(10.1));
System.out.println(Math.ceil(10.000001));
System.out.println(Math.floor(10.0));
System.out.println(Math.floor(10.9));
System.out.println(Math.round(10.0));
System.out.println(Math.round(10.4));
System.out.println(Math.round(10.5));
max(), min()
- 각각 최대값과 최솟값을 반환하는 메서드
- 두개의 값만을 비교 가능함에 유의
System.out.println(Math.max(3.14, 3.14159));
System.out.println(Math.min(3.14, 3.14159));
System.out.println(Math.max(-10, -11));
System.out.println(Math.min(-10, -11));
pow(), sqrt()
System.out.println((int)Math.pow(5, 2));
System.out.println((int)Math.sqrt(25));
sin(), cos(), tan()
- 삼각함수 값을 반환하는 메서드
- 부동소수점 방식으로 인해 정확한 값이 아님에 유의
System.out.println(Math.sin(Math.toRadians(30)));
System.out.println(Math.sin(Math.PI / 6));
System.out.println(Math.tan(Math.toRadians(45)));
System.out.println(Math.tan(Math.PI / 4));
System.out.println(Math.cos(Math.toRadians(60)));
System.out.println(Math.cos(Math.PI / 3));
Wrapper

- 메서드의 인스턴스로 기본 타입, 또는 객체만을 요구하는 경우 기본 타입을 박싱하거나, 박싱된 클래스를 언박싱 해야 하는 경우가 있음
- 이 때 타입명은 파스칼 케이스로 작성하면 되나, int와 char는 Integer, Character로 이름이 달라짐에 유의
- 자바 1.5부터는 자동으로 이를 처리해줌
java.lang.Enum
- 자바 1.5부터 enum 클래스를 사용할 수 있음
- 열거체를 사용하면 실제 값과 타입까지 체크를 해주고, 상수값이 재정의되도 다시 컴파일할 필요가 없다는 장점이 생김
- enum 클래스를 생성해 열거체를 사용할 수 있음
enum Rainbow { RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET }
enum Rainbow {
RED(3), ORANGE(10), YELLOW(21), GREEN(5), BLUE(1), INDIGO(-1), VIOLET(-11);
}
Rainbow.RED
values()
- 열거체의 모든 상수값을 담은 배열을 반환하는 메서드
enum Rainbow { RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET }
public class Enum01 {
public static void main(String[] args) {
Rainbow[] arr = Rainbow.values();
}
}
valueOf()
- 주어진 값이 열거체에 있는지 확인하고 있으면 값을 반환, 없으면 예외를 발생시키는 메서드
enum Rainbow { RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET }
public class Enum02 {
public static void main(String[] args) {
Rainbow rb = Rainbow.valueOf("GREEN");
System.out.println(rb);
}
}
ordinal()
- 주어진 값이 열거체에서 나열된 순서를 반환하는 메서드
- enum값이 아님에 유의
enum Rainbow {
RED(3), ORANGE(10), YELLOW(21), GREEN(5), BLUE(1), INDIGO(-1), VIOLET(-11);
private final int value;
Rainbow(int value) { this.value = value; }
public int getValue() { return value; }
}
public class Enum04 {
public static void main(String[] args) {
System.out.println(Rainbow.YELLOW.ordinal());
}
}
java.util.Arrays
- 배열을 다루는 다양한 메서드가 있는 클래스
- 전부 static method이기 때문에 객체 생성없이 바로 사용 가능
binarySearch()
- 이분 탐색으로 배열에서 주어진 값을 찾아주는 메서드
- 값이 정렬되어있어야만 제대로 동작함에 유의
int[] arr = new int[1000];
for(int i = 0; i < arr.length; i++) {
arr[i] = i;
}
System.out.println(Arrays.binarySearch(arr, 437));
copyOf()
- 주어진 배열을 시작점부터 주어진 길이만큼 복사하는 메서드
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = Arrays.copyOf(arr1, 3);
for (int i = 0; i < arr2.length; i++) {
System.out.print(arr2[i] + " ");
}
int[] arr3 = Arrays.copyOf(arr1, 10);
for (int i = 0; i < arr3.length; i++) {
System.out.print(arr3[i] + " ");
}
copyOfRange()
- 주어진 배열의 지정된 범위의 요소를 새로운 배열로 복사해서 반환하는 메서드
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = Arrays.copyOfRange(arr1, 2, 4);
for (int i = 0; i < arr2.length; i++) {
System.out.print(arr2[i] + " ");
}
fill()
- 전달받은 배열의 모든 요소를 특정 값으로 초기화시키는 메서드
int[] arr = new int[10];
Arrays.fill(arr, 7);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
sort()
int[] arr = {5, 3, 4, 1, 2};
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
출처:
http://www.tcpschool.com/java/java_api_object