[계산] class Object10 { private double r; public Object10(double r) { this.r = r; } public double getArr() { return this.r * this.r * Math.PI; } } class Circle10 extends Object10 { public Circle10(double r) { super(r); } public String toString() { return "넓이는" + getArr() + "입니다."; } } public class Test53 { public static void main(String[] args) { Object10 obj = new Circle10(10); System.out.println(obj); } }
[결과값] 넓이는314.1592653589793입니다.
[계산] public class Test55 { public static void main(String[] args) { try { int num = 6 / 0; } catch (ArithmeticException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }
[결과값] java.lang.ArithmeticException: / by zero at Test55.main(Test55.java:4)
[계산] import java.io.BufferedWriter; import java.io.IOException; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.Files; public class Test54 { public static void main(String[] args) throws Exception { // 아래의 컴파일 에러를 잡으시오. Path file = Paths.get("C:\\javastudy\\Simple.txt"); BufferedWriter writer = null; try { writer = Files.newBufferedWriter(file); // IOException 발생 가능 writer.write('A'); // IOException 발생 가능 writer.write('Z'); // IOException 발생 가능 if (writer != null) { writer.close();// IOException 발생 가능 } } catch (IOException e) { e.printStackTrace(); } } }
[결과값] java.nio.file.NoSuchFileException: C:\javastudy\Simple.txt at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:235) at java.base/java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:478) at java.base/java.nio.file.Files.newOutputStream(Files.java:220) at java.base/java.nio.file.Files.newBufferedWriter(Files.java:2920) at java.base/java.nio.file.Files.newBufferedWriter(Files.java:2963) at Test54.main(Test54.java:15)
[계산] package Override; class INum { private int num; public INum(int num) { this.num = num; } @Override public boolean equals(Object obj) { // Object equals는 주소값을 가져온다. if (this.num == ((INum) obj).num) return true; else return false; } } //Object // public boolean equals(Object obj) { // return (this == obj); // this = num1의 주소(자기자신 객체의 주소) //} public class Equals { public static void main(String[] args) { String s1 = new String("아아아"); String s2 = new String("아아아"); if (s1.equals(s2)) System.out.println("s1, s2 내용 동일하다."); else System.out.println("s1, s2 내용 다르다."); INum num1 = new INum(10); INum num2 = new INum(12); INum num3 = new INum(10); if (num1.equals(num2)) // Object 부모 것 써먹기 System.out.println("num1, num2 내용 동일하다."); else System.out.println("num1, num2 내용 다르다."); if (num1.equals(num3)) System.out.println("num1, num3 내용 동일하다."); else System.out.println("num1, num3 내용 다르다."); } }
[결과값] s1, s2 내용 동일하다. num1, num2 내용 다르다. num1, num3 내용 동일하다. equals() 함수를 주석 처리하면 부모 클래스인 Object의 equals()를 실행하게 된다. 단 Object의 equals는 num 필드값을 비교하는게 아니라 참조값을 비교해서 num1, num2, num3 전부 내용이 다르다는 결과로 나오게 된다. num1, num2 내용 다르다. num1, num3 내용 다르다.
[계산] package Override; class Person { private String name; public Person(String name) { this.name = name; } @Override public boolean equals(Object obj) { // Object equals는 주소값을 가져온다. // Override가 없다면 결과값은 false false가 나온다. if (this.name.equals(((Person) obj).name)) // ==을 사용하면 주소값 비교 | equals를 사용하면 문자열 비교 return true; else return false; } } public class Equals2 { public static void main(String[] args) { Person p1 = new Person("홍길동"); System.out.println(p1.equals(new Person("홍길동"))); // true System.out.println(p1.equals(new Person("최명태"))); // false } }
[결과값] true false
[계산] package Override; class Person { private String name; public Person(String name) { this.name = name; } @Override public boolean equals(Object obj) { if (obj instanceof Person) { Person person = (Person) obj; if (this.name.contentEquals(person.name)) return true; } return false; } } public class Equals2 { public static void main(String[] args) { Person p1 = new Person("홍길동"); System.out.println(p1.equals(new Person("홍길동"))); // true System.out.println(p1.equals(new Person("최명태"))); // false } }
[결과값] true false
박싱 : 객체 안에 값을 넣는 것을 박싱이라 한다.
[new로 객체생성을 하지 않아도 사용 가능]
*final 상수로 선언되어 있음
Integer iObj = 10;
Double dObj = 3.14;
언박싱
Class이름(대문자) | 내용 |
---|---|
Boolean | public Boolean(boolean value) |
Charater | public Charater(char value) |
Byte | public Byte(byte value) |
Short | public Short(short value) |
Integer | public Integer(int value) |
Long | public Long(long value) |
Float | public Float(float value) , public Float(double value) |
Double | public Double(double value) |
[계산] package Override; public class WrapperClass { public static void main(String[] args) { Integer iObj = 10; // 박싱 | final로 선언되어 있다. // Integer iObj = new Integer(10); // 상기 코드를 컴파일러가 이렇게 자동 바꿈 Double dObj = 3.14; System.out.println(iObj); System.out.println(dObj); System.out.println(); } }
[결과값] 10 3.14