throws는 해당 메서드가 특정 예외를 던질 수 있음을 명시적으로 선언하는 데 사용됩니다.
String class도 Object class를 상속합니다. 그리고 이미 문자열의 내용비교를 하도록 Object class의 equals() 함수를 오버라이딩 하고 있습니다
public static void main(String [] args) {
MyPoint p = new MyPoint(3, 50);
MyPoint q = new MyPoint(4, 50);
System.out.println(p);
if(p.equals(q)) System.out.println("같은 점");
else System.out.println("다른 점");
}
/
Point(3,50)
다른점
/
package day_2024_08_02;
class MyPoint extends Object {
int num1, num2;
MyPoint(int num1, int num2) {
this.num1 = num1;
this.num2 = num2;
}
@Override
public boolean equals(Object obj) {
if (this.num1 == ((MyPoint) obj).num1 && this.num2 == ((MyPoint) obj).num2) {
return true;
} else {
return false;
}
}
@Override
public String toString() {
return "Point(" + num1 + "," + num2 + ")";
}
}
public class MyPointMain {
public static void main(String[] args) {
MyPoint p = new MyPoint(3, 50);
MyPoint q = new MyPoint(4, 50);
System.out.println(p);
if (p.equals(q))
System.out.println("같은 점");
else
System.out.println("다른 점");
}
}
문자열을 입력하세요. 빈칸이나 있어도 되고 영어 한글 모두 됩니다.
힌트) substring 이용 할수있음. 다른함수도 많음
I Love you
Love youI
Love youI
ove youI L
ve youI Lo
e youI Lov
youI Love
youI Love
ouI Love y
uI Love yo
I Love you
package day_2024_08_02;
import java.util.Scanner;
public class RotationMain {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("문자열을 입력하세요. 빈칸이나 있어도 되고 영어 한글 모두 됩니다.");
String answer = sc.nextLine();
for (int i = 0; i < answer.length(); i++) {
System.out.print(answer.substring(i));
System.out.println(answer.substring(0, i));
}
}
}
기본 자료형의 값을 인스턴스로 감싸는 목적의 클래스를 가리켜 래퍼 클래스라 합니다.
String s1 = new String("java");
String s2 = new String("java");
String s3 = s2;
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
System.out.println(s2 == s3);
System.out.println(s2.equals(s3));
public class StringEquals {
public static void main(String[] args) {
String s1 = new String("java");
String s2 = new String("java");
String s3 = s2;
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
System.out.println(s2 == s3);
System.out.println(s2.equals(s3));
if(s1 == s2)
System.out.println("s1, s2 참조 대상 같다.");
else
System.out.println("s1, s2 참조 대상 다르다. ");
if(s2 == s3)
System.out.println("s2, s3 참조 대상 같다.");
else
System.out.println("s2, s3 참조 대상 다르다. ");
if(s1.equals(s2))
System.out.println("s1, s2 내용 동일하다.");
else
System.out.println("s1, s2 내용 다르다.");
if(s2.equals(s3))
System.out.println("s2, s3 내용 동일하다.");
else
System.out.println("s2, s3 내용 다르다.");
}
}
/
false
true
true
true
s1, s2 참조 대상 다르다.
s2, s3 참조 대상 같다.
s1, s2 내용 동일하다.
s2, s3 내용 동일하다.
/
new로 객체 생성을 했기 때문에 기본적으로 참조 주소가 저장됩니다.
==연산자는 객체의 주소를 비교하는 것이기 때문에 == 연산시에 주소값을 비교하게 됩니다.
참조 주소가 아닌 문자열의 내용 비교를 위해서는 equals를 오버라이드 해서 사용해야 하지만 이미 String클래스에 equals가 오버라이딩 되어있으므로 바로 사용하면 됩니다.
-주의 잘못된 입력이 있으면 처음부터 다시 입력을 받도록 예외처리 구문(try catch)을 넣을것
계산기
수1 : 10
수2 : 20
연산 : +
계산 결과 : 30
계속 하시겠습니까? 계속 : Y , 종료 : N
y
계산기
수1 : R
잘못된 입력입니다. 다시입력해 주세요
계산기
수1 : 10
수2 : 20
연산 : *
계산 결과 : 200
계속 하시겠습니까? 계속 : Y , 종료 : N
y
계산기
수1 : 90
수2 : 80
연산 : /
계산 결과 : 1
계속 하시겠습니까? 계속 : Y , 종료 : N
n
종료입니다.
package day_2024_08_04;
import java.util.InputMismatchException;
import java.util.Scanner;
class Carculate {
private double num1, num2;
private String cal, answer;
public void show() {
while (true) {
System.out.println("계산기");
Scanner sc = new Scanner(System.in);
try {
System.out.print("수1 : ");
num1 = sc.nextDouble();
System.out.print("수2 : ");
num2 = sc.nextDouble();
} catch (InputMismatchException e) {
System.out.println("숫자를 입력해 주세요");
continue;
}
System.out.print("연산: ");
cal = sc.next();
switch (cal) {
case "+":
System.out.println("계산결과: " + add());
break;
case "-":
System.out.println("계산결과: " + sub());
break;
case "*":
System.out.println("계산결과: " + mul());
break;
case "/":
System.out.println("계산결과: " + div());
break;
default:
System.out.println("잘못된 연산자 입니다.(+, -, *, /) 만 가능");
continue;
}
System.out.println("계속 하시겠습니까? 계속: Y, 종료: 아무버튼");
answer = sc.next();
if (answer.equals("Y") || answer.equals("y"))
continue;
else
System.out.println("프로그램을 종료합니다.");
break;
}
}
public double add() {
return num1 + num2;
}
public double sub() {
return num1 - num2;
}
public double mul() {
return num1 * num2;
}
public double div() {
if (num2 == 0) {
System.out.println("0으로는 나눌 수 없습니다.");
return 0;
}
return num1 / num2;
}
}
public class CarculatorMain {
public static void main(String[] args) {
Carculate calcu = new Carculate();
calcu.show();
}
}


int hashCode()
현재객체의 해쉬코드 값을 반환함
String toString()
현재객체의 문자열로 된 값을 반환함
boolean equals(Object obj)
obj객체와 비교하여 같으면 true, 다르면 false값을 반환함
final Class<?> getClass()
현재객체의 클래스 정보를 담은 Class타입의 객체 반환함
protected Object clone()
현재객체의 복사본을 생성 후 반환함
final void notify()
현재객체를 사용하기 위해 대기하고 있는 쓰레드 하나를 깨움
final void notifyAll()
현재객체를 사용하기 위해 대기하고 있는 모든 쓰레드를 깨움
final void wait()
다른 쓰레드가 깨울 때까지 현재 쓰레드를 대기시킴
final void wait(long timeoutMillis)
다른 쓰레드가 깨우거나 정해진 시간만큼 현재 쓰레드를 대기시킴
final void wait(long timeoutMillis, int nanos)
다른 쓰레드가 깨우거나 정해진 시간만큼 현재 쓰레드를 대기시킴
protected void finalize()
객체가 소멸되기 전 자동으로 호출되는 메소드(삭제예정)
Person p1 = new Person("홍길동");
System.out.println(p1.equals(new Person("홍길동"))); //true 출력
System.out.println(p1.equals(new Person("최명태"))); //false 출력
package day_2024_08_02;
class Person extends Object {
String name;
Person(String name) {
this.name = name;
}
@Override
public boolean equals(Object obj) {
if (this.name == ((Person) obj).name) {
return true;
} else {
return false;
}
}
}
public class PersonMain {
public static void main(String[] args) {
Person p1 = new Person("홍길동");
System.out.println(p1.equals(new Person("홍길동")));
System.out.println(p1.equals(new Person("최명태")));
}
}