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