🔸 Object클래스는 모든 클래스의 최고 조상클래스이다.
protected Object clone(); // 객체에 저장된 값을 리턴(객체가 참조하고 있는 객체는 복사X) public boolean equals(Object object); // 객체의 참조변수를 매개변수로 받아서 같은 객체인지 (주소값이 같은 지) boolean으로 리턴 public Class getClass(); // 객체 자신이 속하는 클래스의 정보를 리턴 public int hashCode(); // 객체 자신의 해시코드를 리턴 public String toString(); // 객체 자신의 정보를 문자열로 리턴 protected Object clone(); // 객체를 복사 -> 얕은 복사(: 기존 객체의 참조값을 공유) --------쓰레드 관련 메서드--------------- public void notify(); public void notifyAll(); public void wait();
🔸 문자열을 저장하고 다루는데 필요한 메서드를 제공
🔸 한번 생성된 String인스턴스는 변경할 수 없다.(읽어올 수만 있다.)
➡️ 덧셈 연산자를 사용하여 문자열을 추가할 때는 새로운 인스턴스를 생성한다./* 문자열 리터럴을 지정해서 만들기 */ String str1 = "abc"; String str2 = "abc"; str1 == str2 // true str1.equals(str2) // true // 이미 존재하는 것을 재사용 -> 같은 주소값을 가진다. ---------------------------- /* 생성자를 사용해 만들기 */ String str1 = new String("abc"); String str2 = new String("abc"); str1 == str2 // false str2.equals(str2); // true // 새로운 인스턴스가 생성 -> 다른 주소값을 가진다.
String(char[] value); // value를 문자열로 가지는 String인스턴스를 생성 ↔️ toCharArray() String(StringBuffer buffer); // buffer의 문자열과 같은 내용을 가진 String인스턴스를 생성 char charAt(int index); // 해당 index에 있는 문자를 리턴 int compareTo(String str); // str과 사전순서로 비교(같으면 0, 이전이면 음수, 이후면 양수 리턴) String concat(String str); // str를 문자열 뒤에 추가 boolean contains(CharSequence s); // 해당 문자열(s)가 포함되어있는지 체크 boolean endsWith(String suffix); // suffix로 끝나는지 체크 ↔️ startWith(String prefix) boolean equals(Object object); // object와 String인스턴스의 문자열이 같은 지 비교 boolean equalsIgnoreCase(String str); // 대소문자 구분없이 비교 int indexOf(int ch); // 주어진 문자의 index를 리턴(못찾으면 -1) int lastIndexOf(int ch); // 주어진 문자를 오른쪽 끝에서부터 찾아서 index리턴 int length(); // 문자열의 길이 리턴 String replace(char a, char b); // a를 b로 바꾼 문자열 리턴 String[] split(String regex); // 문자열을 지정된 분리자(정규식)로 나누어서 문자열 배열로 리턴 ↔️ String join(구분자, String[] arr) String subString(int begin, int end); // 문자열의 일부를 자른다.(begin은 포함, end는 포함X) String toLowerCase(); // ↔️ toUpperCase(); String trim(); // 왼쪽 끝과 오른쪽 끝에 공백을 없애서 리턴(중간의 공백은 제거되지 않음)
🔹 StringJoiner
🔸 여러 문자열 사이에 구분자를 넣어서 결합
StringJoiner joiner = new StringJoiner(",", "[", "]"); String[] strArr = {"a", "b", "c"}; for(String str : strArr){ joiner.add(str); } System.out.println(joiner.toString()); // [a, b, c]
🔹 형변환
/* 기본형 -> String */ int a = 123; String str1 = String.ValueOf(a); // 빠름 String str2 = a + ""; // 편함 /* String -> 기본형 */ int i1 = Integer.paserInt("100"); // 옛날방법 int i2 = Integer.ValueOf("100"); // valueOf의 반환타입은 Wrapper클래스인데 오토박싱으로 인해 int형으로 자동변환된다.
🔸 StringBuffer클래스는 내부적으로 문자열 편집을 위한 버퍼를 가지고 있기 때문에 지정된 문자열의 변경이 가능하다.
🔸 StringBuffer클래스의 인스턴스 생성 시, char형 배열이 생성되고 이는 문자열을 저장하고 편집하는 공간으로 사용된다.
➡️ StringBuffer 생성 시, 생성자를 사용해서 여유있는 크기를 지정하는 것이 좋다.(기본값 : 16)
🔸 equals()를 오버라이딩하지 않기 때문에 ==로 비교한 것과 같은 결과가 나온다.
toString()으로 String인스턴스를 얻은 후 equals()를 사용해야 한다.StringBuffer sb1 = new StringBuffer("abc"); StringBuffer sb2 = new StringBuffer("abc"); String str1 = sb1.toString(); String str2 = sb2.toString(); str1.equals(str2);
static double abs(double a); // 절대값 반환 static double ceil(double a); // 올림 static double floor(double a); // 버림 static double max(double a, double b); // 두 값 중 큰 값 static double min(double a, double b); // 두 값 중 작은 값 static double random(); // 0.0 ~ 1.0(1.0 포함x)의 랜덤값 static long round(double a); // 소수 첫째자리에서 반올림한 정수값 반환
🔸 기본형 변수들(Primitive types)도 객체로 다루어야 하는 경우가 있다
➡️ 외부에서 데이터를 받아올 때, 값을 객체로 저장해야 할 때 등 기본형 변수 데이터를 객체로 포장해 주는 클래스
- boolean > Boolean
- char > Character
- byte > Byte
- short > Short
- int > Integer
- long > Long
- float > Float
- double > Double
☑️ BigInteger : long의 범위를 넘어서는 큰 정수
☑️ BigDecimal : double의 범위를 넘어서는 큰 부동 소수
🔸 문자열 ➡️ 숫자로 형변환 [ 타입.parse타입(String str) ]int i1 = Integer.parseInt("50"); // 문자열 -> 기본형 int i2 = Integer.valueOf("50"); // 문자열 -> 객체형(래퍼클래스) /* n진법 수로 변환 */ int i3 = Integer.parseInt("100", 2); // 100을 2진수로 : 4 int i4 = Integer.parseInt("100", 2); // 100을 16진수로 : 256