티스토리 뷰
패키지 - 클래스의 카테고리역할
프로젝트 - 외장하드 (여러 파일 ---- 여러개의 폴더로 분류 )
패키지 -- 여러 클래스
java.lang 패키지의 특징 : import가 필요없는 클래스들의 모임
1. Object
1) 최상위 클래스
package objectex;
class MyType /*extends object*/{
}
public class ObjectTest {
void a(){
System.out.println("안녕");
}
int b(){
return 10;
}
int c(int a, int b){
return a+b;
}
public static void main(String[] args) {
ObjectTest obj = new ObjectTest();
obj.a(); // 안녕출력
System.out.println(obj.b());
//10 출력
int value = obj.b()+obj.b();
System.out.println(value); //20출력
int value2 = obj.c(10, 20);
System.out.println(value2);
//30 출력
System.out.println(obj.c(10, 20));
//30 출력
}
}
▷ toString 메서드를 재정의 하지 않을시에는 인스턴스의 주소값이 출력되게 되있으며
▷ getClass().getName() + '@' + Integer.toHexString(hashCode())의 형태
--> 클래스명 + @ + 숫자 조합으로 형성되게 되있다.
"toString 메소드는 인스턴스의 정보를 문자열의 형태로 반환하기 위한 메소드이다."
-->가급적이면 toString 메소드를 오버라이딩을 해서 인스턴스에 대한 정보를 적절히 표현할 수 있도록 하는 것이 좋다
package objectex;
class MyType /*extends object*/{
}
public class ObjectTest {
public static void main(String[] args) {
MyType type = new MyType();
//type -->새로운 인스턴스 생성
System.out.println(type.toString());
new Person().toString(); //최종 타입은 문자열이됨
System.out.println(new Person().toString());
Person a = new Person();
Person b = new Person();
Person c = new Person();
System.out.println("a : " + a.toString());
System.out.println("b : " + b); // toString () 메서드 없이 객체의 정보를 출력해준다
System.out.println("c : " + c); // toString 의 원 주인은 object 이다 나머지 클래스는 자식이므로 가져다 쓸수 있다.
}
}
class Person{}
# 메서드의 체인
객체.메서드().메서드().메서드()
getClass().getName() + '@' + Integer.toHexString(hashCode())의 형태
package objectex;
class Car{
}
public class ObjectTest2 {
public static void main(String[] args) {
Car car = new Car();
System.out.println(car);
System.out.println(car.toString());
System.out.println("=============");
//메서드 체인을 사용하여 toString()를 표현
System.out.println(car.getClass());
//class objectex.Car 출력
System.out.println(car.getClass().getName());
//objectex.Car 출력 ( class 제거 )
System.out.println(car.getClass().getName()+"@");
System.out.println(car.hashCode());
//366712642 출력 -->16 진수로 바꿔주어야함
String toHex = Integer.toHexString(car.hashCode());
// integer.toHexString 사용
// ex) integer.parseint("10"); --> 10인 정수로 바꾸어줄수 있음
System.out.println(car.getClass().getName()+"@"+toHex);
//objectex.Car@15db9742 출력
System.out.println(car.getClass().getName()+"@"+toHex.toUpperCase());
// 대문자로 출력 objectex.Car@15DB9742
System.out.println(car.getClass().getName()+"@"+toHex.toUpperCase().toLowerCase().charAt(0));
// objectex.Car@1 -> charAt(0) 이 마지막으로 출력
System.out.println(car.getClass().getName()+"@"+toHex.toUpperCase().toLowerCase().length());
// length()는 int로 만들어졌기때문에 .을 찍어도 아무것도 나오지않음
//메서드 체인은 String 으로 끝나야 가능
}
}
'Programing > Java' 카테고리의 다른 글
Java2 -07. 내부클래스 (inner) (0) | 2017.05.17 |
---|---|
Java2 - 03. 패키지 Object - Equals (0) | 2017.05.11 |
Java2 - 01. 예외처리 (0) | 2017.05.10 |
Java1 - 22. 다형성 (0) | 2017.05.10 |
Java1 - 21. 재정의(override) (0) | 2017.05.10 |