class MyObj {
}
public class UseMyObj {
public static void main(String[] args) {
MyObj o = new MyObj();
System.out.println(o);
}
}
[결과값]
MyObj@75a1cd57
위의 코드는 단순하게 객체를 하나 만들고 해당 객체를 toString 메서드로 출력하는 코드로 위와 같은 결과를 얻을 수 있다.
참조형 변수는 객체의 주소를 가지기 때문에 타입의 역할이 객체의 주소를 담는다.
객체의 주소는 모두 똑같지만 그 안에 갖고 있는 값은 다르다.
따라서, 직접적인게 아닌 간접적으로 주소를 통해서 나타낸다.
참조형 변수: 메모리 주소값을 받아옴.
class MyObj {
}
public class UseMyObj {
public static void main(String[] args) {
MyObj o = new MyObj();
System.out.println(o);
System.out.println(o.toString()); // 추가
}
}
[결과값]
MyObj@5fcfe4b2
MyObj@5fcfe4b2
보이는 것과 같이 'o'든 'o.toString'이든 그 결과가 같다.
그 이유는 'o'만 작성해도 자바는 내부적으로 toString을 호출하도록 약속이 되어 있기 때문이다.
즉, 'o'만 작성해도 암시적으로 'o.toString'이 호출된다.
toString 메서드
: 객체가 가지고 있는 정보나 값들을 문자열로 만들어 리턴하는 메서드
Object 클래스가 가진 메서드 중 toString 메서드가 있다.
물론 Object 클래스의 모든 메소드는 모든 클래스가 사용이 가능하다.
DeskLamp 클래스 작성하고 객체 생성.
class MyLamp {
private boolean isOn;
public void turnOn() {
isOn = true;
}
public void turnOff() {
isOn = false;
}
public String toString() {
return "현재 상태는 " + (isOn == true ? "켜짐" : "꺼짐");
}
}
public class DeskLamp {
public static void main(String[] args) {
MyLamp dl = new MyLamp();
dl.turnOn();
System.out.println(dl);
dl.turnOff();
System.out.println(dl);
}
}
[결과값]
현재 상태는 켜짐
현재 상태는 꺼짐
직사각형을 나타내는 클래스 Rectangle를 작성하고 객체를 생성하여 표현.
class Rectangle {
int wight;
int length;
double area() {
return(double) wight * length;
}
double perimeter() {
return(double) (wight + length) * 2;
}
public String toString(){
String info = "<이 직사각형의 넓이와 둘레는: > \n ";
info += "넓이: " + area() + "\n 둘레: " + perimeter();
return info;
}
}
public class UseRectangle {
public static void main(String[] args) {
Rectangle re = new Rectangle();
re.length = 20;
re.wight = 30;
System.out.println(re);
}
}
[결과값]
<이 직사각형의 넓이와 둘레는: >
넓이: 600.0
둘레: 100.0