본문 바로가기

전체 글

(256)
Hash Code public class Main_HashCode { public static void main(String[] args) { // Object Hash Code // -> 무한대의 문자열이 있을 때 특정범위의 숫자로 hashing해줌 // -> 반복문 돌리면서 하나하나 비교할 필요가 없다는것 // -> 그 안녕하세요 비교할때 기억나지? 그게 이거임 String str1 = "하이"; int code1 = str1.hashCode(); System.out.println(code1); String str2 = "하이"; int code2 = str2.hashCode(); System.out.println(code2); if(str1.equals(str2)) {// 문자열 비교니까 -> 같다 System.ou..
Object _ Equals Overiding public static void main(String[] args) { /// Object Equals Student s1 = new Student(); s1.name = "한조"; s1.age = 30; s1.score = 70; Student s2 = new Student(); s2.name = "한조"; s2.age = 30; s2.score = 70; if(s1 == s2) {// 다르다 System.out.println("같다"); }else { System.out.println("다르다"); } if(s1.equals(s2)) {// 직접 오버라이딩 전: 다르다 (당연히 참조주소 비교니까) / 후 : 같다 System.out.println("같다"); }else { System.out.pri..
Object Class ** Object클래스의 toString() 메서드를 오버라이드하여 객체의 문자열 표현을 정의 // 객체가 가진 주요 정보를 모두 반환하는 것이 좋음 // 이상적으로는 스스로를 완벽히 설명하는 문자열이어야 함! // -> 해당 객체를 출력하거나 문자열로 변환할 때 유용 // -> 또한 디버깅 목적으로 객체의 내용을 확인하는 데도 도움이 됨 // Date에서의 toString호출 Date d = new Date(); System.out.println(d);// Mon Sep 11 09:32:22 KST 2023 // Q. d는 왜 이렇게 나올까? 주소값이 아니라 // A. Date 클래스에서는 toString() 메서드가 오버라이드(Override)되어 있어서, // Date 객체를 출력할 때 해당 객체의..
Student Manager Program _ V1 # Main package com.ja.stm.main; import com.ja.stm.component.Wrapper; public class Main {// 1) public static void main(String[] args) { //Wrapper w = new Wrapper(); //w.run(); ---> 변수가 필요할 때. new Wrapper().run();// --> 실행 시켜야 할 때. } } # IoUtil package com.ja.stm.util; import java.util.Scanner; public class IoUtil {// (--> input. output. util) private static Scanner scanner = new Scanner(System.in..
Debug mode // 디버그모드 // 1. 왼쪽 주르륵 숫자 왼쪽에 파란선. 원하는 line에 갖다대고 우클릭 // 2. breakpoint를 만들수있지(여러개도 가능) -> 여기서 디버그 메인(벌레모양) 눌러봐 // 3. 여기서 실행(switch)시키면 디버그 모드가 실행됨 // 4. F6 or 왼쪽위 step over(= 그 줄을 전부 시행시키고 넘어가라)를 누르면 한줄씩 어떻게 실행되는지 볼 수 있음 // 5. resume or terminate(빨간 네모)을 누르면 전체가 실행되고 개발자모드로 다시 스위치됨! // ★★★ 오른쪽에 variables표 보면 한번 시행될때마다 변수값이 어떻게 변하는지 확인 가능!! // ++ step into : 메서드 콜을 어떻게 하고있는지 파고들어서 확인 (내가 사용할 일은 적겠..
재귀함수 // 재귀 호출을 사용할 때는 항상 종료 조건을 명확하게 정의해야 함 --> 종료 조건을 제대로 정의하지 않으면 무한 재귀에 빠져서 프로그램이 정상적으로 동작하지 않을 수 있음 public int doProcess() { System.out.println("안녕!"); // doProcess(); // (주석 떼면) 무한반복! 안녕출력, 다시 doProcess돌아가서 안녕출력..... exception!!! return 1; } package p4; public class Main { public static void main(String[] args) { new Test().doProcess(); new Test().doProcess(10); System.out.println("==여기부터=="); i..
Annotation // @.... // 코드에 주석을 달거나 메타데이터를 부여하여 컴파일러, 개발 도구, 런타임 환경 등에게 특별한 정보를 전달할 수 있음 // 내가 쓸일은 없을거야. package p3; public class Main { public static void main(String[] args) { TTT t1 = new TTT(); // t1 --> private으로 선언된 인스턴스밖에 없으니 접근할게 없음! ㅠ.. t1.setV1(10);// setter를 통해 값을 넣을 수 있다. System.out.println(t1.getV1());// 10 } } class TTT{ private int v1; // setter public void setV1(int v1) {// 바깥에서 값을 입력해야하니까 파..
folder package com.ja.stm; import java.util.Date; import com.ja.stm.b.QQQ; import com.ja.stm.dto.Student; // import com.ja.stm.dto.Student;// 2) 저~~ 폴더에있는 Student 클래스를 가져오게되면 public class Main { public static void main(String[] args) { Test t1 = new Test();// 같은 패키지에 있는 class는 내가 아는 방법 그대로 사용하면됨 t1.test(); // Student s1 = new Student();--> 다른 패키지에 있는 class는 방법이 달라 //com.ja.stm.dto.Student s1 = new com...