목차 객체배열 선언 및 할당 객체배열 초기화 객체배열 사용 예시(DTO) 객체배열 Student studentA = new Student(); String name, int age, double height 등이 담긴 클래스일 때, 변수명 studentA는 어쨌거나 A학생만을 가리킨다. 결국 여러 학생을 만들기 위해서는 studentB, studentC... 등으로 한 명 한 명 따로 변수를 생성해야 할 것이다. 이 과정을 대체해 편의성을 높이는 방법이 바로 객체배열이다. Student[] stArr = new Studnet[100]; 레퍼런스 변수에 대한 배열을 말한다. 즉 주소값이 들어간다. 동일한 타입의 여러 인스턴스를 배열로 관리한다. 기본 배열과의 차이점은 '인스턴스'를 다룬다는 데에 있다. 1..
목차 클래스에서의 변수 1-1. 전역변수(클래스변수, 인스턴스변수) 1-2. 지역변수 변수별 초기화 순서 1. 클래스에서의 변수 클래스에서의 변수는 크게 전역변수-지역변수로 나뉜다. class { 전역변수 method() { 지역변수 } } 변수 생성시기 소멸시기 클래스변수 프로그램 시작 시 static 프로그램 종료 시 멤버변수 (인스턴스변수) 인스턴스 생성 시 heap 참조하지 않을 시 (GC 소관) 지역변수 메소드 호출 시 메소드 종료 시 1-1. 전역변수 public class GlobalVariable { static클래스변수 인스턴스변수==멤버변수 } 클래스 영역에 작성하는 변수를 필드라고 한다. 필드 == 멤버변수(클래스가 가지는 멤버라는 의미) == 전역변수(클래스 전역에서 사용할 수 있는..
✅ 답안과 비교하여 스스로 코드 개선점 짚어보기 완료(2022.01.03) 1. 배열 HARD1. 배열의 중간까지 오름차순, 중간 이후 내림차순 적용하기 ✅ 답안에서는 중간까지의 길이를 int mid = (int)(num / 2 + 1);처럼 별도 변수에 표현했다. int cnt=0; 이라는 임의의 변수를 사용해 중간길이 미만까지는 cnt++; 그 이후는 --cnt;로 증감연산자를 활용하기도 했다. if문 안에 증가할 때 / 감소할 때 / 출력용으로 for문이 총 3개 자리한 것이다. iarr[i] = iarr.length - i; 내림차순 적용에 세운 식을 기억해두면 앞으로 활용할 일이 더 있지 않을까 싶다. 홀수인 양의 정수를 입력하세요 : 9 123454321 package com.greedy.se..
🧩 학습 단원 : 배열(Array) 📚 학습 도서 : (남궁 성 저) ✅ 배열 예제 응용 학습 완료() 응용A. char[] 배열 특징 | 배열의 깊은 복사 4가지 방법 출력문에 System.out.println(iarr);과 같이 배열의 이름을 그대로 쓰면 보통 참조하고 있는 배열의 주소가 16진수로 표현돼 나온다. 하지만 문자형 char[] 배열만은 다르다. println 메소드가 char[] 배열에 대해서만 구분자 없이 요소를 출력하도록 만들어졌기 때문이다. 단, System.out.println("배열 num : " + num);처럼 문자열을 섞어 출력할 경우 char[] 배열 역시 주소값을 내놓는다. ABCD 0123456789 char[] abc = {'A', 'B', 'C', 'D'}; ch..
🧩 학습 단원 : 배열(Array) 📚 학습 도서 : (남궁 성 저) ✅ 오답 정리 완료() [5-1] 다음은 배열을 선언하거나 초기화한 것이다. 잘못된 것을 고르고 그 이유를 설명하시오. ❎✅ a. int[] arr[]; b. int[] arr = {1,2,3,}; c. int[] arr = new int[5]; d. int[] arr = new int[5]{1,2,3,4,5}; e. int arr[5]; f. int[] arr[] = new int[3][]; b. 쉼표는 있어도 상관 없다. d. 괄호 {} 속 데이터 개수에 따라 배열 크기가 자동 결정됐기 때문에, 대괄호 안에 숫자가 이중으로 있어선 안 된다. e. 배열 선언 단계에서 크기를 지정할 수 없다! [5-2] 다음과 같은 배열이 있을 때, ..
Quiz 3. 오버로딩 성립하지 않는 메소드 설명하기 접근제한자, 반환형, 메소드명은 오버로딩 충족 조건에 해당하지 않는다. 오버로딩은 메소드 시그니처에 들어있는 (매개변수) 타입, 갯수, 순서에 따라 정의된다. public void test() {} public void test(int var1, int var2) {} 매개변수명은 오버로딩 충족 조건에 해당하지 않는다. public void test(int var2, int var1) {} 따라서 (int, int)형 중복되므로 수정 또는 삭제하여야 컴파일 에러에서 벗어날 수 있다. public void test(int var1, String var2) {} public void test(String var1, int var2) {} Quiz 2. V..
✅ 답안과 비교하여 스스로 코드 개선점 짚어보기 완료(2022.01.03) HARD1. 기본 생성자 활용 설정자(setter) 통한 필드값 변경과 접근자(getter) 이용한 필드값 출력 ✅ 답안에서는 Application.class 맨 마지막에 scanner.close(); 구문을 넣어 스캐너를 종료시켰다. 입력한 임의의 값 package com.greedy.level03.hard.emp.model.dto; public class EmployeeDTO { private int number; private String name; private String dept; private String job; private int age; private char gender; private int salary; ..
목차 생성자와 설정자의 장단점 비교 오버로딩 파라미터 static final 싱글톤 패턴 1. 생성자와 설정자의 장단점 비교 생성자(constructor)와 설정자(setter)의 장담점은 상대적이다. 실무적으로는 대표적인 매개변수 값을 생성자로 만들어놓고, 추가적인 부분은 설정자를 이용해 다루는 편이다. 1-1. 생성자(constructor)를 이용한 초기화 장점은 단 한번의 호출로 인스턴스를 생성 및 초기화할 수 있다는 점이다. new User("java", "java", "java"); 단점은 필드 초기화 위해 매개변수의 갯수를 경우의 수별로 모두 만들어야 한다. 호출 시 인자가 많다면 연속된 값들이 각각 어떤 필드를 의미하는지 알아보기 어렵다. 즉, 위와 같은 호출 구문을 예로 들었을 때 각각의 ..
✅ 답안과 비교하여 스스로 코드 개선점 짚어보기 완료(2022.01.03) NORMAL2. 모든 필드를 초기화하는 생성자 활용 ✅ printInformation 메소드에서 변수를 this.grade가 아닌 그냥 grade로 쓴다. 어차피 가리키는 값은 전역변수 grade이기 때문이다. int 다음 String을 스캔 받는 경우 등에는 개행을 위해 입력 받을 값 앞에 scanner.nextLine();를 쓴다. 학년 : 1 반 : 2 이름 : 김자바 키 : 160.5 성별 : 여 package com.greedy.level02.normal.student.dto; public class StudentDTO { private int grade; private int classroom; private Strin..
목차 캡슐화 추상화 생성자 1. 캡슐화(encapsulation) 클래스 작성할 때 특별한 경우가 아닌 이상 지켜야 하는 기본 원칙이다. 필드로의 직접 접근을 제한하고, public 메소드를 이용해 간접 접근하도록 만든 기술이다. 달리 말하면 데이터를 은닉하는 것이 된다. 캡슐화는 결합도를 낮춘다. 예를 들어 필드명을 바꾸거나 했을 때 이를 사용한 다른 클래스에서 영향을 받지 않게끔 만든다. 한 클래스의 변경이 다른 클래스에 미치는 영향이 극히 낮다는 의미이다. 1-1. 접근제한자 정의 접근제한자란, 참조연산자(.)를 가지고 접근할 때에 클래스나 클래스의 멤버(필드, 메소드)에 접근할 수 있는 범위를 제한하는 키워드이다. 구분 해당 클래스 내 같은 패키지 내 후손 클래스 내 전체 + public O O ..