반응형

자바의정석 113

[자바의 정석 - 기초편] ch6-38~41 변수의초기화, 멤버변수의 초기화

ch6-38 변수의 초기화 - 지역변수(iv)는 수동 초기화 해야 함 - 멤버변수는(iv, cv)는 자동으로 초기화된다. 메서드의 메모리 공간은 재사용이 빈번한 메모리이기 때문에 매번 값을 초기화하고 할 수가 없기 때문에 늘 새로운 값으로 덮어쓴다 = 초기화 따라서 수동 초기화 되어야 한다. 인스턴스 변수는 유지기간이 길기 때문에 초기화로 사용해도 괜찮다. 객체는 여러 변수를 묶어 놓은 것이라, 변수를 다 0으로 초기화 하려면, 배열도 그렇고, 자동으로 초기화하지 않으면 초기화 할 것이 많아서 자동으로 해준다. ch6-38 변수의 초기화 ch6-39 멤버변수의 초기화 멤버 변수 = iv / cv 1. 명시적 초기화(=) 대입 연산자로 선언, 간단한 초기화 방법 참조형 변수는 null 또는 객체 주소의 값..

자바의정석 2022.03.10

[자바의 정석 - 기초편] ch6-36,37 생성자 this(), 참조변수 this

ch6-36 생성자 this() : 생성자에서 다른 생성자 호출할 때 사용! : 다른 생성자 호출시 첫 줄에서만 사용 가능! 오버로딩할 때 이름이 같은 메서드들은 하는 일이 같은 경우... 생성자도 이름이 같지만 모두 iv의 초기화라는 같은 기능이 있다. 코드의 중복을 제거하기 위해서 이렇게 생성자들끼리 호출하는 경우가 생긴다. package ch06; public class Constructor_Ex { public static void main(String args[]) { //Car car = new Car("blue", 2022, "auto"); Car car = new Car(); System.out.println(car.color); } } class Car { String color; int..

자바의정석 2022.03.10

[자바의 정석 - 기초편] ch6-32~35 생성자, 기본 생성자

ch6-32 생성자(constructor) 인스턴스가 생성될 때마다 호출되는 "인스턴스(객체, IV의 묶음) 초기화 메서드" 일반적으로 객체들을 초기화하는 기능이 있지만, 꼭 그렇지만은 않다. "기본 생성자" 가 있기 때문에 그 동안 생성자를 만들지 않았지만, 우리가 직접 만들어서 객체를 초기화할 수 있다. ch6-32 생성자(constructor)란? iv 초기화 메서드 - 이름이 클래스 이름과 같아야 한다. - 리턴 값이 없다. - 모든 클래스는 반드시 생성자를 가져야 한다. 메소드...................... 앞에는 void를 붙여야 하는데 생성자도 오버로딩이 존재한다. 생성자를 호출하는 부분이다 > new Card() ; 컴파일러가 생성자가 하나도 없을 때 자동으로 호출해준다. ch6-..

자바의정석 2022.03.10

[자바의 정석 - 기초편] ch6-30,31 오버로딩

ch6-30 오버로딩 오버로딩 : 한 클래스 안에 같은 이름의 메서드 여러 개 정의하는 것 파적 하나의 메서드 이름에 1:다 로 매칭이 가능한 것 그것이 overloading! overloading의 대표적인 예는 println() 이다. 매개변수가 다를 수도 있고, 출력하는 타입이 다를 수도 있는 것.... ? 오버로딩을 지원하지 않는 경우 이름을 다 다르게 해야 하는 번거로움이 있다. 반환 타입은 오버로딩에 영향이 없다. 보기3의 경우ambigious 한 경우가 발생할 수 있다. add(3, 3) 하게 되면 컴파일러가 어떤 메서드를 호출해야 하는지 모르기 때문에 에러가 뜬다. 따라서 이 경우에는 add(3, 3L) 과 같이 타입을 명확하게 해주어야 한다. 메서드는 작업을 수행하는 것이기 때문에 일반적..

자바의정석 2022.03.10

[자바의 정석 - 기초편] ch6-26~29 static메서드와 인스턴스 메서드

ch6-26 static 메서드와 인스턴스 메서드 Math.random() 역시 static 메서드 따라서 Math를 사용한다. 메서드 내에서 인스턴스 변수(iv) 사용불가 iv 사용여부에 따라서 일반 메서드 / static 메서드를 구분할 수 있다. 가까운 쪽 lv a + b ; 클래스 메서드 호출의 경우 객체 생성 없이 호출 가능하다. 인스턴스메서드는 객체(인스턴스)를 먼저 만들고, 메서드를 호출할 수 있다. 그렇다면 메서드에 static을 붙일지 말지, 어떻게 결정하느냐? iv 인스턴스 변수를 사용하지 않을 때, static을 붙인다 iv의 사용여부 필요한 값들을 지역변수로 받는다 따라서 iv 인스턴스 변수가 필요 없다. 인스턴스 메서드는 iv 가 있기 때문에 지역변수가 필요 없다. 객체라는 것은 ..

자바의정석 2022.03.10

[자바의 정석 - 기초편] ch6-24,25 참조형 매개변수, 참조형 반환타입

예제 6-7 참조형 매개변수 어떤 값을 가리키는지 확인해야 한다. 객체를 다룰 수 있는 리모콘을 준 셈이다 change 메서드에서 참조변수를 이용해서 객체를 다룰 수 있다 객체의 주소를 알기 때문에 참조변수 객체의 값을 읽고, 쓰기가 모두 가능한 것이다. 값만 복사한 것과 주소값을 복사한 것이 다름을 알 수 있다. ch6-25 참조형 반환타입 메서드의 반환타입이 참조형인 경우는 객체의 주소를 반환한다 = 객체를 반환한다고 생각해도 된다. 반환타입과 변수의 타입이 일치해야 한다. 그 결과를 받는 타입이 참조형이어야 한다. copy 메서드가 하는 일이 새로운 객체를 만들고, 복사하고, 반환 main 메서드에서 복사한 객체를 d2 사용할 수 있게 되는 것 참조변수가 없는 이유는 static 메소드라서 그런 것..

자바의정석 2022.03.08

[자바의 정석 - 기초편] ch6-23 기본형 매개변수

ch6-23 기본형 매개변수 이번 강의가 중요하다. 메서드의 매개변수가 기본형인 경우 그리고 참조형인 경우 차이가 있다. 기본형 매개변수 - 변수의 값을 읽기만 할 수 있다. (read only) 참조형 매개변수 - 변수의 값을 읽고 변경할 수 있다. (read & write) 예제 6-6 main 메서드가 스택에 올라가고 |참조변수 d 가 만들어지고, Data 객체를 생성한다. 멤버가 하나밖에 없는 x 객체가 만들어진다. 변수 d에 저장이 된다. 참조변수 d가 가리키는 변수 x의 값이 10으로 변경된다. change의 지역변수 x에 d.x 값으로 정의된 10이 들어간다. 그리고 change 메서드의 문장이 실행된다. x = 1000; 저장이.... change의 지역변수 (int x) 이 x에 1000..

자바의정석 2022.03.08

[자바의 정석 - 기초편] ch6-22 호출스택

ch6-22 호출 스택(call stack) 호출 스택은 모든 프로그래밍 언어에 공통적인 부분이며 중요한 부분이고, 호출 스택을 이해하지 못하면, 앞으로 배울 중요한 개념들 기본형 매개변수, 참조형 매개변수 차이라던지, 예외처리와 같은 개념들을 이해하기 어렵다. 스택(stack) : 밑이 막힌 상자. 위에 차곡차곡 쌓인다. 스택은 뚫린 공간으로만 넣고 뺄 수가 있다. 메서드 수행에 필요한 메모리가 제공되는 공간 메서드가 호출되면 호출스택에 메모리 할당, 종료되면 해제 main 메서드의 실행상태에서 새로운 메서드인 println 메서드를 실행하면, println 메서드가 실행상태가 되면서 main 메서드는 대기상태가 된다. println() 메서드가 종료되면, 스택에서 사라지면서, main 메서드가 다시 ..

자바의정석 2022.03.08

[자바의 정석 - 기초편] ch6-20,21 return문, 반환값

ch6-20 return 문 실행 중인 메서드를 종료하고 호출한 곳으로 되돌아 간다. return 자신을 호출한 곳으로 되돌아간다. 원래 메서드가 작업을 마쳤을 때 return; 을 작성해야 하지만, 매번 쓰기 귀찮기 때문에 생략된 것이다 (반환타입이 void일 경우) 만약 void가 아니라면 생략할 수 없다. 반환 타입이 void가 아니라면 반드시 return 문이 필요하다. 너무 당연하게도 반환 값이 필요하기 때문에 return문이 필요한 것 조심할 부분은 메서드에 문제가 있다. 조건문이 true일 때만 return 문이 없는 경우이기 때문에 false일 경우의 return 문도 작성을 해야 한다. 실습 package ch06; public class Ex6_4 { public static void ..

자바의정석 2022.03.08
반응형