전체 글 176

static 변수, static 메소드

static 변수 사원이 입사할 때마다 1씩 증가하는 사번을 주는 식 이가가님의 사번은 1001입니다. 김가가님의 사번은 1002입니다. public class Employee { // 공통 변수 public static int serialNum = 1000; private int employeeId; private String employeeName; private String department; // 값을 "각자" 가지게 한다 public Employee() { serialNum++; employeeId = serialNum; // employeeId 또한 매번 증가한다++ } public int getEmployeeId() { return employeeId; } public void setEmp..

+20 캡슐화, 패키지

p349 캡슐화 1. 변수에 private 붙이기 2. getter/setter 생성하기 캡슐화 안 한 경우 → 개인정보 유출 우려 있음 public static void main(String[] args) { // 메모리 저장 Sawon s1 = new Sawon(); s1.sabun = 1; s1.name = "김가가"; s1.dept = "개발부"; s1.job = "대리"; s1.pay = 3500; Sawon s2 = new Sawon(); s2.sabun = 2; s2.name = "김나나"; s2.dept = "마케팅"; s2.job = "과장"; s2.pay = 4000; System.out.println(s1.sabun + " " + s1.name + " " + s1.job + " " +..

수업 2022.05.30

static, instance 메소드

메소드 앞에 static이 붙어 있으면 클래스 메소드이고, 그렇지 않으면 인스턴스 메소드이다. 어느 경우에 어떤 메소드를 정의해야 할까? 클래스는 데이터(변수)와 관련된 메소드의 집합이므로 같은 클래스 내에 있는 메소드와 멤버변수는 아주 밀접한 관련이 있다. 인스턴스 메소드는 메소드의 작업을 수행하는데 인스턴스 변수를 필요로 하는 메소드이다. 인스턴스 메소드도 인스턴스를 생성해야만 호출할 수 있다. 반면에, 인스턴스와 관계 없는 메소드를 클래스 메소드로 정의한다. 클래스 영역에 선언된 변수를 멤버변수라 한다. 멤버 변수는 인스턴스 변수와 클래스 변수를 모두 통칭한다. 1. 멤버변수 중 모든 인스턴스에 공통으로 사용하는 것에 static을 붙인다 생성된 각 인스턴스는 서로 독립적이기 때문에 각 인스턴스 변..

Java/정석 2022.05.29

배열

배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 중요한 것은 같은 타입이며, 서로 다른 타입의 변수들로 구성된 배열은 만들 수 없다. 한 학급의 시험 점수를 저장하는 경우가 배열을 사용하기 좋은 예다. 배열 없이는 학생 5명의 점수를 저장하기 위해 아래와 같이 5개의 변수를 저장한다. int score1, score2, score3, score4, score5 int[] score = new int[5] 값을 저장 할 수 있는 공간은 score[0]부터 score[4]까지 모두 5개이며, 변수 score는 배열을 다루는데 필요한 참조변수일 뿐 값을 저장하기 위한 공간은 아니다. 배열의 선언과 생성 타입[] 변수이름; 변수이름 = new 타입[길이]; int[] score; score = new..

Java/정석 2022.05.29

+19 리뷰 프로그램(등록, 보기, 수정, 삭제)

기능 1. 글쓰기 2. 목록 보기 3. 수정 4. 삭제 ㅡㅡㅡㅡ 메뉴 ㅡㅡㅡㅡ 1. 리뷰 입력 2. 목록 보기 3. 리뷰 수정 4. 리뷰 삭제 9. 종료 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ // Review.java public class Review { int no; String name; String msg; String regDate; int star; boolean isShow=true; // true: 있음/false: 없음 } // ReviewManager.java public class ReviewManager { // 리뷰 전체 데이터, 리뷰 보는 모든 사용자가 공유(static) static Review[] review = new Review[100]; static int index = 0; // 글쓰..

수업 2022.05.27

오버로딩

p283 오버로딩이란? 메소드도 변수와 마찬가지로 같은 클래스 내에서 서로 구별될 수 있어야 하기에 각기 다른 이름을 가져야 한다. 자바에서는 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개 변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다. 한 클래스 내에 같은 이름의 메소드를 여러 개 정의하는 것을 오버로딩이라 한다. 하나의 메소드 이름으로 여러 기능을 구현한다. 오버로딩의 조건 같은 이름의 메소드를 정의한다고 해서 무조건 오버로딩은 아니다. 1. 메소드 이름이 같아야 한다. 2. 매개변수의 개수 또는 타입이 달라야 한다. 오버로딩된 메소드들은 매개변수에 의해서만 구별될 수 있으므로 반환 타입은 오버로딩을 구현하는데 영향을 주지 못한다. ..

Java/정석 2022.05.27

기본형 매개변수, 참조형 매개변수

p264-269 call by value, reference 자바에서는 메소드를 호출할 때 매개변수로 지정한 값을 메소드의 매개변수에 복사해서 넘긴다. 매개변수의 타입이 기본형일 때는 기본형 값이 복사 되겠지만, 참조형이면 인스턴스 주소가 복사된다. 메소드의 매개변수를 기본형으로 선언하면 단순히 저장된 값만 얻지만, 참조형으로 선언 시 값이 저장된 곳의 주소를 알 수 있기에 값을 읽어오는 것은 물론 값을 변경하는 것도 가능하다. 기본형 매개변수 변수의 값을 읽기만 할 수 있다. 참조형 매개변수 변수의 값을 읽고 변경할 수 있다. 원본 10 다음 수로 변경: 1000 변경 후: 10 class Data { int x; } class test { static void change(int x) // 클래스 변..

Java/정석 2022.05.27

생성자

p291-307 생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메소드'이다. 따라서 인스턴스 변수의 초기화 작업에 주로 사용되며, 인스턴스 생성 시에 실행되어야 할 작업에도 사용된다. 생성자는 메소드처럼 클래스 내에 선언되며, 구조도 메소드와 유사하지만 리턴 값이 없는 것이 다르다. 그렇다고 해서 생성자 앞에 void는 붙이지 않는다. 그냥 아무 것도 적지 않는다. 생성자 조건 1. 생성자 이름은 클래스 이름과 같다. 2. 리턴 값이 없다. (void 안 붙인다) 생성자도 오버 로딩이 가능하므로 하나의 클래스에 여러가지 생성자가 존재할 수 있다. 클래스 이름(타입 변수명, 타입 변수명, ...){} // 인스턴스 생성 시 수행 될 코드 // 주로 인스턴스 변수의 초기화 코드를 적는다 class..

Java/정석 2022.05.26

+18 생성자, 초기화 블럭 (static, instance)

p291 this & super class B { int a=30; } class A extends B { int a=20; void display() { int a=10; System.out.println(a); // 10 System.out.println(this.a); // 20 System.out.println(super.a); // 30 } } 자리 배치 = new 전원 연결 = Computer(){} = 생성자 전원 누른다 = 메소드 기본 생성자 기본 생성자가 컴파일러의 의해 추가되는 경우는 클래스에 정의된 생성자가 하나도 없을 때이다. 모든 클래스는 생성자 1개 이상 가지고 있어야 한다. 특징 1. 매개 변수가 없는 생성자 2. 생성자가 없는 경우 → 컴파일러가 기본 생성자 자동 생성 3. ..

수업 2022.05.26

+17 멤버 메소드

알아야 할 것 Object String StringBuffer Wrapper Date Calendar StringTokenizer List Map Set IO 클래스 구성 요소 1. 변수 :: 속성 2. 메소드 :: 기능, 동작 3. 생성자 :: 변수의 초기화 객체 지향 3대 요소 1. 캡슐화 (데이터 보호) 2. 재 사용 (상속, 포함) 3. 다형성 (수정, 추가) 멤버 메소드 1. // void 정렬 전: K A C B E 정렬 후: A B C E K [A, B, C, E, K] // return [A, B, C, E, K] class Util { // 정렬 후에 출력 :: void void sort(char[] c) { for(int i=0; i

수업 2022.05.25