전체 글

전체 글

    🚀 bitcamp TIL (21.07.27)

    📌 알게 된 개념들 클래스를 로딩하는 시점을 파악하라 필드 초기화, 스태틱 초기화 블럭, 인스턴스 초기화 블럭, 생성자에 대한 이해를 한다. 그림을 그린다 = 시각적으로 남겨라 기억에 오래 남는다. 메모리는 2차원이 아니다 바이트배열의 집합이다 상대적인 주소 = offset (용어기억) new = 인스턴스 생성 + 부가 정보(어떤 클래스의 어떤 인스턴스필드인지등) 기억하자! 즉 안에 인스턴스 필드가 없어도 인스턴스가 heap에 생성된다. 레퍼런스 변수를 선언할 때는 클래스를 로딩하지 않는다. // 예) A obj; static필드 , instance필드 = 자동 초기화 됨 , 로컬변수는 자동 초기화 안됨 코드 타입 숫자로 한다 => 상수로 지정 (의미있는 변수 이름으로) 실무 => 일단 인스턴스 메서드로..

    🎉 상수(constant)는 언제 사용하는 것일까?

    상수는 언제 사용할까? 다음 자바 코드는 각각의 멤버의 아이디와 패스워드 멤버의 종류를 나타내는 코드이다. 이를 통해 상수를 왜 사용해야하는지 알아봅시다! 상수로 나타내지 않을 때 문제점? 아래 코드에서 멤버의 종류를 숫자로 나타내면 어떤 불편함이 있을까? 1달뒤 코드를 본다면? 아니 하루 뒤에도 기억 못할 수 있다. (0은뭐지?, 1이뭐야?, 2는 뭐지?) 주석을 적어놓아도 매번 확인하기 귀찮다. 유효한 이름을 지어서 알아보기 쉽게 만들 필요가 있다. public class ConstantEx1 { static class Member { String id; String password; int type; // 0: 손님, 1: 회원, 2: 관리자 } public static void main(Strin..

    🚀 bitcamp TIL (21.07.26)

    📌 21일차(2021-07-26,월) 실전 프로젝트(eomcs-java-project) 07-a. 의존 객체 다루기 : 인스턴스 필드에 직접 주입 07-b. 의존 객체 다루기 : 생성자로 주입 📌 알게 된 점 문맥에 따라 클라이언트가 다르게 쓰일 수 있다. 객체 != 인스턴스 (무조건 이렇게 단편적으로 외우지 말라.) 의존객체를 인스턴스와 연결시키는데 클래스로 메서드를 호출하던 인스턴스로 호출하던 다 의존객체다. 그림은 중요한걸 강조하기 위해서 그리는거다 모든 상세한것은 그리는게 아냐 핵심은 강조하고 싶은것을 그려라 일시적인 의존관계(dependency) / 지속적인 의존관계(association) 여러 메서드에서 사용하는 의존객체라면 일시적인 관계(파라미터)가 아니라 지속적인 관계(인스턴스필드)로 설정..

    💉 의존 객체는 어떻게 사용하면 될까요?

    📌 의존 객체(dependency object)란? 작업을 수행하기 위해 사용하는 객체다. 작업할 때 의존하는 객체라고 해서 의존 객체 라 부른다. 일시적인 의존 관계(dependency) 특정 메서드에서만 사용되는 경우 보통 파라미터나 로컬 변수로 사용한다. 지속적인 의존 관계(association) 여러 메서드에서 사용되는 경우 보통 인스턴스 필드로 사용한다. 📌 의존 객체를 사용하면 좋은 이유? STEP1. 파라미터로 주소를 넘겨주다. 현재상황 App.java (main)에서 ProjectHandler.java를 실행시킬 때 반드시 MemberHandler.java의 exist() 메서드가 필요 add(), update()에서 exist()메서드를 필요로 하기에 파라미터로 주소를 넘겨줌. publi..

    📎 JVM과 가비지 컬렉터(garbage collector)

    가비지 컬렉터(garbage collector) 힙 메모리에 존재하는 가비지를 찾아 제거하는 일을 한다. 다른 용도로 사용할 수 있도록 메모리를 해제하는 일을 한다. [1번] public class GarbageEx1 { public static void main(String[] args) { Score s1 = new Score(); Score s2 = s1; } } [2번] public class GarbageEx2 { public static void main(String[] args) { Score s1; s1 = new Score(); s1 = new Score(); } } [3번] public class GarbageEx3 { public static void main(String[] args..

    [Algorithm] 배열 값 삭제하기

    배열에서 값 삭제하기 RULE 배열에서 해당 항목의 값을 삭제한다. 배열 뒤의 항목은 -1로 설정한다. 배열을 출력할 때는 -1인 항목은 출력하지 않는다. 출제의도 배열의 인덱스를 활용해 삭제를 할 수 있는가? (앞으로 당길 수 있는지) 삭제된 배열에 대해 빈 자리를 -1(초기값)으로 설정하는가? public class DeleteValue { static void deleteValue(int[] arr, int value) { int valueIndex = -1; for (int i = 0; i < arr.length; i++) { if (arr[i] == value) { valueIndex = i; break; } } if (valueIndex == -1) { return; } for (int i =..

    🚀 bitcamp TIL (21.07.23)

    📌 20일차(2021-07-23,금) 실전 프로젝트(eomcs-java-project) 06-a. CRUD 구현하기(계속) : 회원/프로젝트/작업 CRUD 완성 06-b. CRUD 구현하기 : 리팩토링 인덱스 관련 멤버 레퍼런스 변수에 저장하거나 일치하는 인덱스를 찾거나 반복문 내에서 해결하거나 요구사항을 구현하는 방법은 여러가지! String format 쓰꺼나 String.format() 직접 식안에 변수 쓰거나 System.out.println("("+name+")") 1가지 방법 일관되게 써 index 기본값 -1로 설정 멤버 객체를 꺼내라 = 배열에서 객체를 꺼낼 수 없고 객체의 주소를 꺼낸다는 것을 줄여서 말함 왜 null로 초기화 시키는건가? 가비지가 되지않는다. 메모리 최적화 관련. 초기화..

    🚀 bitcamp TIL (21.07.22)

    📌 19일차(2021-07-22,목) 자바 객체지향 문법(eomcs-java/com.eomcs.oop) ex01 객체 지향 문법 요약 정리 실전 프로젝트(eomcs-java-project) CRUD 구현하기(계속) 📌 알게된 점 정리 메서드안에 추가적인 값이 필요하면 파라미터로 값을 받아서 실행하면 된다. 원래 클래스명.메서드명(값1,값2.....) 메서드들이 서로 공유하는 값이 있다? 공유할 값을 담을 변수가 필요해 파라미터로 받는다? (가능은하지만 밑의 방법이 더 좋다.) 클래스 내에 변수로 공통적으로 뽑아낸다. 개별적으로 여러개 뽑아내? 그러면 인스턴스 변수로 만들어 서로 연관되어있는 메서드를 하나의 클래스로 묶으면 유지보수 하기 좋겠죠? 카드를 쓰는 사람이 카드를 관리해야지 다른 사람이 관리하면 ..