[LIKELION] 220929

고관운·2022년 9월 29일

회고

😄 느낀점

  • ""와 equals 사용할 때 주의 (""의 문자열 비교는 Python에서 가능)
  • String의 다양한 메소드가 있음

😁 목표

  • 백준 코딩 연습

01. 자바-16-Object클래스

Object

Object란

Object : 모든 클래스의 조상
(컴파일러가 자동으로 extends Object를 넣어서 상속함)

Object 함수

  • 생성자
  • 11개의 함수

Equals

Equals : 내용이 동일한지 검사
== : 객체의 주소가 동일한지 검사

Equals 실습

class Circle2 {
	private int radius;
	
	public Circle2(int radius) {
		this.radius = radius;
	}
	
	@Override
	public boolean equals (Object obj) {
		if (obj instanceof Circle2) {  // 자식으로 형변환이 가능하냐
			Circle2 c1 = (Circle2) obj;
			if(radius == c1.radius) return true;
		}
		return false;
	}
}

public class java_16_p6 {

	public static void main(String[] args) {
		Circle2 obj1 = new Circle2(10);
		Circle2 obj2 = new Circle2(10);

		if(obj1 == obj2) System.out.println("2개의 원은 같습니다.");
		else System.out.println("2개의 원은 같이 않습니다.");
		
		if(obj1.equals(obj2)) System.out.println("2개의 원은 같습니다.");
		else System.out.println("2개의 원은 같이 않습니다.");
	}

}

🟢 equals를 오버라이딩하여 반지름이 같으면 true, 아니면 false 반환

toString

Object 객체의 toString() 메소드

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode()); // 16진수로
}

🟢 객체 정보를 출력(hashCode는 16진수로 출력)

🟢 왜 toString을 사용하지 않고 객체를 println해도 똑같은 값이 나올까?

public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
}

객체를 넣었을 때, null이 아니라면 자동으로 toString()을 사용해주기 때문

🟢 toString 역시 오버라이딩을 통해 원하는 것을 출력시킬 수 있음

String

String

String : char 배열

String 객체 생성 2가지

  • String s2 = "java";
  • String s3 = new String("java");

🔴 ""로 생성했을 경우, 값이 같다면 같은 주소
🔴 new로 생성했을 경우, 각자 다른 주소

String 메소드

  • equals : 문자열 비교시 사용 (Object의 equals를 오버라이딩한 것)
  • charAt(n) : 문자열의 인덱스 n에 해당하는 값을 가져옴
  • indexOf(문자열) : 문자열에 괄호안의 문자열이 없으면 -1, 있으면 해당 인덱스 값(첫번째 인덱스 값) 반환
  • length() : 문자열의 길이 반환
  • trim() : 공백 잘라내기 (양 끝의)
  • split() : 기준에 따라 문자열 분리
  • valueOf() : 기본 타입값을 문자열로 전환 (static이기 때문에 클래스명으로 접근)
    (valueOf는 오버로딩이 적용되어 있음, String.valueOf(변수)로 하면 String변수로 바뀜)
    🟢 문자열을 정수로 바꾸고 싶다면 Integer.parseInt(문자열)로 사용

0개의 댓글