38일차 java 연산(2023-02-15)

권단비·2023년 2월 15일
0

IT

목록 보기
71/139

[Eclipse 연습]

[계산]
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)

[Object의 equals]

[계산]
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

[래퍼(Wrapper) 클래스]

박싱 : 객체 안에 값을 넣는 것을 박싱이라 한다.

[new로 객체생성을 하지 않아도 사용 가능]
*final 상수로 선언되어 있음
Integer iObj = 10;
Double dObj = 3.14;

언박싱

Class이름(대문자)내용
Booleanpublic Boolean(boolean value)
Charaterpublic Charater(char value)
Bytepublic Byte(byte value)
Shortpublic Short(short value)
Integerpublic Integer(int value)
Longpublic Long(long value)
Floatpublic Float(float value) , public Float(double value)
Doublepublic 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

0개의 댓글