9월 1일 개인공부

안효빈·2022년 9월 1일
0

개인 공부

목록 보기
3/36

1.한줄한줄 의미적어보기

//	******* equals()메서드를 재정의(오버라이드) 하려고 따로 만들었음
	public boolean equals(Object obj) {
		if(obj instanceof Student) {
			Student std = (Student)obj; //Student자료형의 매개변수
			if(studentID == std.studentID) {
				return true;
			} else return false;
		}
		return false;
	}

public boolean equals(Object obj) ==> Object클래스에 구현된 equals()를 오버라이드하면서 Object형의 obj라는 매개변수를 이용함. 이 때 obj자리에 들어가는애는 Object형으로 자동 업캐스팅됨 ===> Object는 모든 클래스의 상위클래스이기 때문.

if(obj instanceof Student) ==> obj가 Student의 인스턴스인지를 묻는중
(instanceof 는 되게 많이 쓰인다고 함, 앞의 매개변수? 가 뒤의 인스턴스인지를 묻는 용도)

Student std ==> (Student)obj; 들어올떄 업캐스팅해서 Object형인 obj를 Student(하위 클래스)로 다운캐스팅해서 Student형인 std에 대입.

if(studentID == std.studentID) ==> 만약에 멤버변수의 studentID가 std로 대입 된 인스턴스의 studentID와 같다면

return true; ==> 트루를 뱉는다

else return false; ==> 다르다면 false를 뱉는다

return false; ==> Student의 인스턴스조차 아니라면 애초에 false를 뱉는다.


2. String 클래스와 toString()에 대하여 확실히 공부하기

toString() 메서드

  • Object클래스의 메서드

  • 객체의 정보를 String으로 바꾸어서 사용할떄 많이 쓰임

  • String이나 Integer클래스에는 이미 재정의 되어 있음

  • String 문자열 값 반환

  • Integer 정수 값 반환

  • 선언이나 특정 멤버변수값을 반환한다.

===> ???????? 모르겠음

예제

public String toString() {
	return studentID + ", " + studentName;
}

을 적어놓고

public static void main(String[] args) {
	Student studentLee = new Student(100, "이상원");

을 입력하니

System.out.println(studentLee); //object.Student@6f2b958e 

인스턴스 명만 입력해도 주소가 나오는게 아니고, studentID + ", " + studentName;가 출력된다.

to string()을 재정의 해서 그런것 같다

그냥 객체 선언하고 투스트링 실행시키면 주소값이 뜬다고 한다.

실제로 해 봄.

Mak a = new Mak();
System.out.println(a.toString());

study.Mak@3d012ddd

결과값


결론

toString()은 뭔가 뱉어내야 하는 값을 뱉어내게 하는 메소드인데 보통 재정의하거나
날씨, 시간 등의 클래스에 연결해서 사용한다고 한다.


String클래스

우리가 편하게 쓰던 String은 클래스이고

안에는 잠깐 배운 concat()메서드, charAt()메서드 등등 여러가지 메서드가 포함돼있다.

주말에 추가로 공부.


3. charAt()이 뭔지 공부 + Scanner 다시 공부


코딩테스트 기초 단계를 풀다가 charAt()의 존재에 대해 배웠다.

또한 뜻도 제대로 모른 채로 Scanner클래스를 import해서 쓰고 있었다.

Scanner클래스

Scanner클래스를 쓰면 뭔가를 입력할수 있는것 같다.

실제로 코딩테스트로 짜놓은코드에 아무생각없이 Scanner를 넣었을 때

콘솔창에 초록색 글씨로 내가 입력할수 있는 여지가 생겼다.

대충 그런 기능인것 같다.


Scanner 클래스의 특징

  • 기본적인 데이터 타입들을 Scanner 의 메소드를 사용하여 입력받을 수 있다.

예로 들어 100을 입력하고자 할 때, String(문자열)로 입력받고 싶으면 next() 나 nextLine() 을, int(정수)로 입력받고 싶다면 nextInt() 를 사용하여 입력받으면 알아서 해당 타입으로 입력된다.

  • Scanner 을 사용할 시 util 패키지를 경로의 Scanner 클래스를 호출해야 한다.

자바에서 쓰이는 대부분의 클래스는 lang 패키지가 아니라면 import 을 통해 호출해주어야 한다.
Scanner 의 경우는 java.util 패키지에 있다.

  • 공백(띄어쓰기) 또는 개행(줄 바꿈)을 기준으로 읽는다.

Scanner 의 입력 메소드들은 대부분 공백과 개행(' ', '\t', '\r', '\n' 등등..)을 기준으로 읽는다. 이 덕분에 사용자의 편의에 따라 쉽게 입력을 받을 수 있다.


그래서 입력칸이 2개인 내 코딩테스트 예제에

숫자를 입력하고 엔터 입력하고 엔터

총 두번을 입력할 수가 있었다.


더 자세한 건 차후에 알아보고 코딩테스트 하나

백준 코딩 10171, 10172번 고양이와 강아지

10171번 고양이

\ /\
) ( ')
( / )
(__)|

를 출력하시오

 public class Main{
public static void main(String[] args){
    
    
    System.out.println("\\    /\\");
    System.out.println(" )  ( ')");    
    		
    System.out.println("(  /  )");    
    
    System.out.println(" \\(__)|");    
    
}
}

\는 단독으로 쓰일 수 없기 떄문에 에러가 발생한다

두개 붙여서 적으면 적힌다.

따옴표도 마찬가지로 의미가 있는 글자이기 떄문에 단독으로 출력 불가능하다.

따옴표와 백슬래쉬 앞에 백슬래쉬를 붙이면 그대로 나올수있다.

10172번 강아지


public class Main{
public static void main(String[] args){
    
    
    System.out.println("|\\_/|");
    System.out.println("|q p|   /}");    
    System.out.println("( 0 )\"\"\"\\");    
    System.out.println("|\"^\"`    |");     
    System.out.println("||_/=\\\\__|");    
    
	}
}

따옴표도 있어서 따옴표 앞에도 백슬래쉬를 붙여 줬다.

profile
다들 화이팅

0개의 댓글