API Package[Java]

SnowCat·2023년 6월 5일
0

Java - Language

목록 보기
10/17
post-thumbnail

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()); // Car@15db9742
System.out.println(car02.toString()); // Car@6d06d69c

equals()

  • 인스턴스를 매개변수로 전달받는 참조변수 "값"이 일치하는지 확인
Car car01 = new Car();
Car car02 = new Car();

System.out.println(car01.equals(car02)); // 두 참조변수의 주소는 다르기 때문에 false

car01 = car02;
System.out.println(car01.equals(car02)); // true

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(); // clonedCar.owners = (ArrayList)owners.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("홍길동");
       // Car01 : 아반떼, [홍길동]
       System.out.println("Car01 : " + car01.getModelName() + ", " + car01.getOwners() + "\n");

       Car car02 = (Car)car01.clone();
       car02.setOwners("이순신");
       // Car02 : 아반떼, [홍길동, 이순신]
       System.out.println("Car01 : " + car01.getModelName() + ", " + car01.getOwners());
       // Car02 : 아반떼, [홍길동, 이순신]
       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) + " "); // J a v a
}

compareTo()

  • 문자열을 다른 문자열과 비교해주는 메서드
  • 사전순으로 문자열을 비교하며 문자열이 같으면 0, 해당 문자열이 인수로 전달된 문자열보다 크면 양수, 작으면 음수를 반환함
  • 대소문자를 비교하지 않는 경우에는 compareToIgnoreCase() 메서드 사용
String str = new String("abcd");

System.out.println(str.compareTo("bcef")); // -1
System.out.println(str.compareTo("abcd") + "\n"); // 0

System.out.println(str.compareTo("Abcd")); // 32
System.out.println(str.compareToIgnoreCase("Abcd")); // 0

indexOf()

  • 해당 문자열에서 특정 문자나 문자열이 처음 나오는 인덱스를 반환함
  • 인수로 전달된 문자나 문자열이 없으면 -1 반환
String str = new String("Oracle Java");

System.out.println(str.indexOf('o')); // -1
System.out.println(str.indexOf('a')); // 2
System.out.println(str.indexOf("Java")); // 7

trim()

  • 문자열 앞뒤의 모든 공백문자를 제거해주는 메서드
String str = new String(" Java     ");

System.out.println(str + '|'); // "  Java        |"
System.out.println(str.trim() + '|'); // "Java|"

toLowerCase(), toUpperCase()

  • 문자열을 전부 소문자/대문자로 바꾸는 메서드
String str = new String("Java");

System.out.println(str.toLowerCase()); //java
System.out.println(str.toUpperCase()); //JAVA

java.lang.StringBuffer

  • String 클래스 인스턴스는 한번 생성되면 그 값을 읽기만 할 수 있고, 변경할수는 없음 => 문자열 덧셈등을 시행시 객체를 합치기 때문에 속도가 저하됨
  • 문자열의 잦은 조작이 필요하다면 가변 클래스인 StringBuffer를 사용
    내부에 16개의 문자를 저장할 수 있는 버퍼를 가지기 때문에 문자열 조작시 속도향상에 도움이 됨
    단 setter메서드로 인해 객체의 불변성이 보장되지 않음으로 이를 필요로 할때는 String 객체 사용

append()

  • 문자열의 마지막에 주어진 인수값을 추가하는 메서드
  • String의 concat와 동일한 역할을 하지만, 내부적인 처리 속도가 훨씬 빠름
StringBuffer str = new StringBuffer("Java");
str.append(" Class");
 
System.out.println(str); //Java Class

capacity()

  • StringBuffer 인스턴스의 현재 버퍼 크기를 반환함
  • 생성자에 따로 지정하지 않는경우 버퍼 크기는 생성시 문자열 길이에 16을 더한 값이 됨
StringBuffer str01 = new StringBuffer();
StringBuffer str02 = new StringBuffer("Java");

System.out.println(str01.capacity()); // 16
System.out.println(str02.capacity()); // 20

delete()

  • 주어진 인덱스의 문자열을 제거하는 메서드
  • 만약 한개의 문자만을 제거하는 경우 deleteCharAt() tkdyd
StringBuffer str = new StringBuffer("Java Oracle");
System.out.println("원본 문자열 : " + str);

System.out.println(str.delete(4, 8)); // Javacle
System.out.println(str.deleteCharAt(1)); // Jvacle

insert()

  • 주어진 인덱스 위치에 문자열을 삽입하는 메서드
StringBuffer str = new StringBuffer("Java?");
str.insert(4, "Script");
System.out.println(str); //JavaScript

java.lang.Math

  • 수학적인 계산 메서드를 모아둔 클래스
  • 전부 static 메서드로 객체생성없이 바로 사용가능

random()

  • 0에서 1 사이의 무작위의 double값 하나를 반환하는 메서드
// 0에서 100사이의 값 하나를 반환함
System.out.println((int)(Math.random() * 100)); // 0 ~ 99

abs()

  • 절대값을 반환하는 메서드
System.out.println(Math.abs(10));    // 10
System.out.println(Math.abs(-10));   // 10
System.out.println(Math.abs(-3.14)); // 3.14

floor(), celi(), round()

  • 각각 소수점 이하 값을 버림, 올림, 반올림한 값을 반환하는 메서드
System.out.println(Math.ceil(10.0));      // 10.0
System.out.println(Math.ceil(10.1));      // 11.0
System.out.println(Math.ceil(10.000001)); // 11.0

System.out.println(Math.floor(10.0));     // 10.0
System.out.println(Math.floor(10.9));     // 10.0

System.out.println(Math.round(10.0));     // 10
System.out.println(Math.round(10.4));     // 10
System.out.println(Math.round(10.5));     // 11

max(), min()

  • 각각 최대값과 최솟값을 반환하는 메서드
  • 두개의 값만을 비교 가능함에 유의
System.out.println(Math.max(3.14, 3.14159)); // 3.14159
System.out.println(Math.min(3.14, 3.14159)); // 3.14
System.out.println(Math.max(-10, -11));      // -10
System.out.println(Math.min(-10, -11));      // -11

pow(), sqrt()

  • 각각 제곱값과 제곱근의 값을 반환하는 메서드
System.out.println((int)Math.pow(5, 2)); // 25
System.out.println((int)Math.sqrt(25));  // 5

sin(), cos(), tan()

  • 삼각함수 값을 반환하는 메서드
  • 부동소수점 방식으로 인해 정확한 값이 아님에 유의
// 0.49999999999999994
System.out.println(Math.sin(Math.toRadians(30)));
System.out.println(Math.sin(Math.PI / 6));

// 0.9999999999999999
System.out.println(Math.tan(Math.toRadians(45)));
System.out.println(Math.tan(Math.PI / 4));

// 0.5000000000000001
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 선언, 상수값은 0부터 시작해 1씩 증가함
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(); // [RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET]
    }
}

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); //GREEN
    }
}

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()); // 2
    }
}

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)); // 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] + " "); // 1 2 3
}

int[] arr3 = Arrays.copyOf(arr1, 10);
for (int i = 0; i < arr3.length; i++) {
    System.out.print(arr3[i] + " "); // 1 2 3 4 5 0 0 0 0 0
}

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] + " "); // 3 4
}

fill()

  • 전달받은 배열의 모든 요소를 특정 값으로 초기화시키는 메서드
int[] arr = new int[10];
 
Arrays.fill(arr, 7);
for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i] + " "); // 7 7 7 7 7 7 7 7 7 7
}

sort()

  • 배열을 오름차순으로 정렬하는 메서드
int[] arr = {5, 3, 4, 1, 2};

Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i] + " "); // 1 2 3 4 5
}

출처:
http://www.tcpschool.com/java/java_api_object

profile
냐아아아아아아아아앙

0개의 댓글