클래스 | 용도 |
---|---|
🧩 Object | 자바 클래스의 최상위 클래스 로 사용 |
🧩System | 📍표준 입력 장치(키보드)로부터 데이터를 입력받을 때 사용 |
📍표준 출력 장치(모니터)로 출력하지 위해 사용 | |
📍자바 가상 기계를 종료할 떄 사용 | |
📍쓰레기 쉽기를 실행 요청할 때 사용 | |
🧩Class | 클래스를 메모리로 로딩할 댸때 사용 |
🧩String | 문자열을 저장하고 여러 가지 정보를 얻을 때 사용 |
🧩Wrapper | 📍기본 타입의 데이터를 갖는 객체를 만들 때 사용 |
📍문자열을 기본 타입으로 변환할 때 사용 | |
📍입력값 검사에 사용 | |
🧩Math | 수학 함수를 이용할 때 사용 |
📍Wrapper
Byte, Short, Character, Integer, Float, Double, Boolean, Long
나타냄
🍀자바의 최상위 부모 클래스
🍀Object 클래스의 메소드는 모든 자바 객체에서 사용할 수 있음
🍀모든 클래스는 Object 클래스의 자식이거나 자손 클래스이다.
📍객체 동등 비교 (equals() 메소드)
public class Member {
public String id;
public Member(String id) {
this.id = id;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof Member) { ==> 매개값이 Member 타입인지 확인
Member member = (Member) obj; --
if(id.eqials(member.id)) { | <== Member 타입으로 강제 타입변환
return true; | id 필드 값이 동일한지 검사 후,
} -- 동일하다면 true를 리턴
}
return false; <== 매개값이 Member 타입이 아니거나 id 필드값이 다른 경우
false를 리턴
}
}
🍀 equals() 메소드는 두 객체를 비교해서 논리적으로 동등하면 true를 리턴하고, 그렇지 않으면 false를 리턴한다.
🍀Object 클래스의 hashCode() 메소드는 객체의 메모리 번지를 이용
하여 해시코드를 만들어 리턴
하기 때문에 객체마다 다른 값을 가지고 있다.
🍀논리적 동등 비교 시 hashCode() 를 오버라이딩 할 필요가 있다.
==>HashSet
, HashMap
, Hashtable
은 두 객체가 동등한 지 비교한다.
📍다른 키로 인식
<public class KeyExample {
public static void main(String args[]) {
//key 객체를 식별키로 사용해서 String 값을 저장하는 HashMap 객체 생성
HashMap<Key, String> hashMap = new HashMap, String>();
//식별키 new key(1)로 "홍길동"을 저장함
hashMap.put(new Key(1), 홍길동);
//식별키 new key(1)로 "홍길동"을 읽어옴
String value = hashMap.get(new Key(1));
System.out.println(value);
}
}
📍결과
null
🍀"홍길동"을 읽으려면 재정의한 hashCode() 메소드를 Key 클래스에 추가하면된다.
🍀hashCode()의 리턴값을 number 필드값으로 했기 때문에 저장할 때의 new Key(1)과 읽을 때의 newKey(1)로 같은 해시코드
가 리턴된다.
🍀객체 문자 정보란 객체를 문자열로 표현한 값을 뜻함.
🍀 Object 클래스의 toString() 메소드는 객체의 문자 정보를 리턴.
🍀toString 메소드는 '클래스이름@16진수해시코드'로 구성된 문자 리턴.
Object obj = new Object();
System.out.println( obj.toString() );
📍결과
java.lang.Object@de6ced
🍀System 클래스를 이용시 ==> 운영체제의 일부 기능 이용 가능
🍀일부기능에는 ==>
프로그램 종료, 키보드로부터 입력, 모니터로 출력 현재시간 읽기 등.
이 가능하다
🍀 System 클래스의 모든 필드와 메소드는 정적 필드와 정적 메소드로 구성.
🍀경우에 따라 JVM을 강제 종료
시킬 수 있는데, 이때 System 클래스의 exit() 메소드
를 호출하면 된다.
🍀 exit메소드는 int 매개값을 지정하도록 되어있는데
==> 이것을 종료 상태값
이라고 한다.
🍀일반 정상종료 일 경우 0값을 준다
System.exit(0);
🍀 System 클래스의 CurrentTimeMillis()
메소드와 nanoTime()
메소드는 컴퓨터의 시계
==> (1/1000sec)
단위와 (1/10⁹sec)
단위로 long 값을 리턴
📍코드로 나타내기
long time = System.CurrentTimeMillis();
long time = System.nanoTime();
🍀자바는 클래스와 인터페이스 의 메타 데이터를 Class 클래스로 관리
🍀 메타 데이터란
==> 클래스의 이름
, 생성자 정보
, 필드 정보
, 메소드 정보
를 말함.
📍 클래스로부터 얻는 방법
1. Class clazz = 클래스 이름.class
2. Class clazz = Class.forName("패키지...클래스이름")
📍 객체로부터 얻는 방법
1. Class clazz = 참조변수.getClass();
📍String class객체 얻는 방법
1. Class clazz = String.class
2. Class clazz = Class.forName("java.lang.String");
Sgring str = "김자바";
3.Class clazz = str.getClass();
📍세가지 방법으로 클래스의 Class 객체를 얻고 Class의 메소드를 이용해
클래스의 전체 이름
과 간단한 이름
그리고 페키지 이름
을 얻을 수 있다.
🍀문자열 리터럴은 String 객체로 자동 생성 but String클래스의 다양한 생성자를 이용해서 직접 String 객체 생성⭕
🍀String 객체는 문자열 조작을 위한 많은 메소드를 갖고 있음.
📍바이트 배열을 문자열로 변환하는 예제
//배열 전체를 String 객체로 생성
String str = new String(byte[] bytes);
//지정한 문자셋으로 디코딩
String str = nenw String(byte[] bytes, String charseName);
//배열의 offset 인덱스 위치부터 length만큼 String 객체로 생성
String str = new String(byte[] bytes, int offset, int length);
//지정한 문자셋으로 디코딩
String str = new String(byte[] bytes, int offset, int length,
String charsetName)
🍀String 클래스는 문자열의 추출
, 비교
, 찾기
, 분리
, 변환
등과 같은 다양한 메소드를 가지고 있다.
📍빈도수가 높은 메소드
리턴 타입 | 메소드 이름(매개 변수) | 설명 |
---|---|---|
Char | charAt(int index) | 특정 위치의 문자를 리턴한다. |
boolean | equals(Object anObject) | 두 문자열을 비교한다. |
byte[] | getBytes() | byte[]로 리턴 |
byte[] | getBytes(Charset charset) | 주어진 문자셋으로 인코딩한byte[]로 리턴한다. |
int | indexOf(String str) | 문자열 내에서 주어진 문자열의 위치를 리턴한다. |
int | length | 총 문자의 수를 리턴한다. |
String | substring(int beginIndex) | beginIndex위치에서 끝까지 잘라낸 새로운 문자열을 리턴한다. |
이정도만.....ㅎㅎ...
🍀charAt()메소드는 매개값으로 주어진 인덱스 문자를 리턴.
🍀인덱스란 0에서부터 '문자열 길이-1'까지의 번호를 이야기한다.
String subject = "자바 프로그래밍";
char charValue = subject.charAt(3);
📍위에 코드로 부터 charAt(3)은 3 인덱스 위치를 이야기 함으로
'프'
를 나타낸다.
🍀수학 계산에 사용할 수 있는 메소드를 제공
🍀Math 클래스가 제공하는 메소드는 모두 정적 메소드
=>Math 클래스에서 바로 사용 가능
🍀날짜를 표현하는 클래스.
🍀Date 클래스는 객체 간에 날짜 정보를 주고받을 때 매개 변수나 리턴 타입으로 주로 사용한다.
🍀 calendar 클래스는 추상(abstract)클래스이므로 new 연산자를 사용하여 인스턴스를 생성할 수 없다 ❌
🍀calendar 클래스의 정적 메소드인 getInstance() 메소드를 이용하면 현재 운영체제에 설정되어 있는 시간대(timeZone)을 기준으로 한 하위 객체를 얻을 수 있다.
📍여기까지......
와 진짜 했던 자바중에 가장 머리가 아프고 쓸 것도 많았던
부분인듯하다....
그래도 나름 깔끔하고 알아보기 쉽게 정리하려고 노력했는데.. 잘 했는지 모르겠지만 그래도 뿌듯하다..^^
끼야오🐔