///////
Search

Object.class, String

태그
장서윤
자바기초
작성일
2022/09/29

01. Object 클래스

: 모든 객체를 생성하면 Object 클래스를 상속받는다 오브젝트 클래스는 다형성을 통해 모든 객체를 받을 수 있도록 자동으로 오브젝트를 상속받도록 해놓는것 : 모든 클래스의 조상

오브젝트 메서드 (재정의해서 사용하는 것)

public boolean equals(Object obj) : obj가 이 객체와 같은지를 검사한다.
== 은 객체의 주소값을 비교, equals는 대상의 값을 비교하는 것
package com.codelion.day9; import java.util.Objects; class Circle { private int radius; public Circle(int radius) { this.radius = radius; } public int getRadius() { return radius; } @Override//오브젝트에 있는 equals를 오버라이딩 한것 public boolean equals(Object o) { if (o instanceof Circle) { Circle circle = (Circle) o; if (this.radius == circle.radius) { return true; } } return false; } //자바 자동 생성 //함수 오버라이딩 + Object가 최고 조상 + 다형성 + instanceof + 다운 캐스팅 /*@Override //자동 생성 public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Circle circle = (Circle) o; //오브젝트로 받을것을 해당 객체로 다운캐스팅 return radius == circle.radius; }*/ } public class Practice01 { public static void main(String[] args) { Circle circle1 = new Circle(10); Circle circle2 = new Circle(10); //false if (circle1 == circle2) {//주소값을(해시코드) 비교하는 것 System.out.println("2개의 원은 같습니다"); } else { System.out.println("2개의 원은 같지 않습니다"); } //true if (circle1.equals(circle2)) {//값을 비교하는 것 System.out.println("2개의 원은 같습니다"); } else { System.out.println("2개의 원은 같지 않습니다"); } } }
Plain Text
복사
객체 비교시 instanceOf로 체크해주는것이 안전하다
@Override public boolean equals(Object o) { if (o instanceof INum) { INum iNum = (INum) o; if (this.num == ((INum)o).num) { return true; } } return false; }
Plain Text
복사
public String toString() : 객체의 문자열 표현을 반환한다.
일반적으로 의미있는 문자 정보가 나오도록 재정의
toString 재정의하지 않았을 경우 출력값
toString 재정의했을 경우 출력값
예제1)
INum num1 = new INum(10); INum num2 = new INum(12); INum num3 = new INum(10); System.out.println(num1.toString()); System.out.println(num1);
Plain Text
복사
@Override public String toString() { return "INum{" + "num=" + num + '}'; } //INum{num=10} //INum{num=10}
Plain Text
복사
예제2)
package com.codelion.day9; class Student { private String name; private String gender; public Student(String name, String gender) { this.name = name; this.gender = gender; } @Override public String toString() { return "이름은 " + name + " 이고 성별은 " + gender + "입니다."; } } public class Practice02Tostring { public static void main(String[] args) { //오브젝트 클래스 + println 함수의 이해 + 오버라이딩 + 다형성 Student s = new Student("홍길동", "남자"); System.out.println(s); } }
Plain Text
복사
protected Object clone() : 객체 자신의 복사본을 생성하여 반환한다.
public int hashCode() : 객체에 대한 해쉬 코드를 반환한다. (참조형 변수가 들어갔을때 객체 주소가 뿌려지는 원리)
protected void finalize() : 가비지 콜렉터에 의하여 호출된다.
public final Class getClass() : 객체의 클래스 정보를 반환한다.

️02. Stirng

: String 클래스는 '문자열'(String)을 구성하는 '문자'(char)들을 내부에 저장한다. : 스트링을 받는것도 결국에는 char[]로 모여 선언되어있는 것

String 리터럴

: 직접 초기화 시켜주는 변하지 않는 고정적인 값 : 초기화하면 리터럴 타입은 무조건 메모리에 올린다 : string의 경우 참조 타입이지만 조금 특별한 방식으로 String을 처리한다. String Constant Pool이라는 영역을 따로 관리하는 것. 원시타입과 마찬가지로 같은 값을 호출할 시에 새로운 메모리를 할당하지 않고 String Constant Pool 영역에 이미 할당되어 있는 값을 가르키게 된다.
문자열의 문자 인덱스는 0부터 시작 (공백도 문자로 포함)

스트링 클래스 메서드

charAt(); : 문자열의 특정 문자 인덱스를 가져온다
char ch2 = "와이거대박".charAt(0); //리터럴 문자 초기화값도 문자열로 인식하기 때문에 가능 //Scanner next는 문자열을 받기위해 기다리는 것, 0번째 문자 (공백으로 구분) //Scanner nextLine은 한문장을 다 받는다
indexOf() : 찾는 문자의 첫번재 인덱스 리턴 , 없는 경우 -1 리턴
trimStr.trim() : 양쪽 빈 공간을 잘라줌
디비에 저장할 때 공백을 자르고 넣어주기 때문에 그럴때 사용함System.out.println(trimStr.trim().length());//양쪽 빈공간을 잘라줌
split() : 문자열을 ‘단어’로 분리 String[] tokens = "I am a boy".split(" "); 이떄 배열로 받아지는것을 주의
출력은 I / am / a / boy
String.valueOf() : 스트링으로 값을 변경해준다 : String 클래스의 스태틱 함수를 쓰는 것
Integer.parseInt(); : int 로 값을 변경
데이터 타입마다 각각 변경해주는 함수가 존재한다

03. 알게된 내용

1.
return은 메서드 종료를 의미한다. (함수가 끝나는 것)
2.
System.out.print(Object o) : pintln은 매개변수를 Object로 값을 받아서 처리한다 빈 값의 경우 null을 반환
3.
리터럴방식으로 할당한 문자열의 메모리 주소를 정수값으로 출력하는 코드
String str = "new"; System.out.println(System.identityHashCode(str)); //출력 //1025799482
Plain Text
복사
1.
메인 클래스도 클래스이기 때문에 인스턴스 변수를 선언하여 사용할 경우 인스턴스 변수도 static으로 바꿔주던지 아니면 메인 클래스를 객체로 생성해줘야 사용할 수 있다.