JAVA
변수의 초기화, 멤버 변수의 초기화
변수의 초기화, 멤버 변수의 초기화
2022.03.29변수의 초기화 지역변수(lv)는 수동 초기화 해야함 (사용전 꼭!!) 멤버변수(iv, cv)는 자동 초기화된다. 코드가 있을 때, x와 y는 iv이고, i와 j는 메서드 안에 선언되어있으므로 lv이다. 지역변수 i를 선언하고, i를 j에 넣는데 에러가 난다. 왜냐하면, i값이 뭔지 모르기 때문이다. 근데 그 모르는 값 i를 j에 넣으려고 하니까 에러가 발생한다. 이게 왜 값을 모르냐면, 호출스택을 살펴보면 알 수 있다. 호출스택은 재사용이 빈번한 메모리다. 아주 짧은 시간동안 같은 메모리 공간을 다른 메서드가 썻다가 지웠다가를 하는 것이다. 그런데 메서드가 호출될 때마다 이 메모리 공간을 0으로 초기화 하면, 성능이 떨어진다. 그래서 성능을 높히려고 항상 0으로 초기화 하지 않고, 새로운값으로 덮어쓰는 ..
생성자 this(), 참조변수 this
생성자 this(), 참조변수 this
2022.03.29생성자 this() 생성자에서 다른 생성자 호출할 때 사용 다른 생성자 호출시 첫 줄에서만 사용가능 이번시간에는 생성자 this에 대해서 알아볼 것이다. 생성자 this는 같은 클래스에 있는 생성자에서 다른 생성자를 호출할 때 사용한다. 예제를 Ex6_14를 보자. 생성자가 3개있다. 1번, 2번생성자가 3번을 호출한다. 호출할 때, 이름을 Car2를 써야하는데, 이걸 안쓰고 이름을 this라고 쓰는 것이다. 이렇게 this("white", "auto", 4); 를 쓰지만, 실제 의미는, Car2(String color, String gearType, int door)를 호출하는 것이다. 같은 클래스안에 있는 있는 생성자들끼리 호출할 때는, 클래스 이름 대신에 this를 쓴다. 왜그렇게하냐면, 규칙이다...
생성자, 기본 생성자
생성자, 기본 생성자
2022.03.29생성자 (constructor) 인스턴스가 생성될 때마다 호출되는 '인스턴스 초기화 메서드' 인스턴스 생성시 수행할 작업(iv 초기화)에 사용 생성자는 인스턴스를 초기화해주는 메서드다. 인스턴스는 객체(iv묶음)이다. 즉, 생성자는 iv를 초기화 하는 메서드다. iv초기화가 뭐냐면, 아래와 같이 진행한다. 참조변수 t를 선언하고 Time객체를 생선한다. Time객체에는 멤버가 3개있다. hour, minute, second가 있고, 0으로 자동초기화 되어있다. 그리고 12시 34분 56초를 저장하려면, 내가 원하는 12시 34분 56초로 초기화를 해주어야 한다. 이런식으로 하는 것을 초기화라고 한다. 위의 과정을 보면, 1. 객체 생성 2. iv 초기화 이런과정을 거쳐야한다. 근데 조금 번거로운 것 같기..
오버로딩
오버로딩
2022.03.28오버로딩 (overloading) 한 클래스 안에 같은 이름의 메서드 여러 개 정의하는 것 오버로딩이란, 한 클래스 안에 같은 이름의 메서드를 여러개 정의하는 것이다. 원래는, 메서드 : 메서드 이름 = 1 : 1 이어야하는데, 오버로딩은 메서드 : 메서드 이름 = n : 1 이다. 오버로딩의 의미는, "과적하다"라는 뜻이다. 원래는 하나의 메서드 이름에 하나의 메서드가 매칭되야하는데, 하나의 메서드 이름에 메서드 여러개를 정의하니까 과적하다고 하는 것이다. 오버로딩의 대표적인 예 println은 대표적인 오버로딩의 예이다. 메서드이름은 println으로 모두 같지만, 매개변수가 전부 다르다. 예를 들어서 우리가 println을 사용할 때 , println(123);이라고 쓰면 123이 출력되는데, 우리..
static메서드와 인스턴스 메서드
static메서드와 인스턴스 메서드
2022.03.28Static 메서드와 인스턴스 메서드 static 메서드는 메서드 앞에 static이 붙은 것이다. 클래스 메서드라고도 한다. 인스턴스 메서드는 static이 붙지 않은 메서드이다. 이 둘의 차이점에 대해서 공부해 보자. - 인스턴스 메서드 인스턴스 생성 후, '참조변수.메서드이름()'으로 호출 인스턴스 멤버(iv, im)와 관련된 작업을 하는 메서드 메서드 내에서 인스턴스 변수(iv) 사용가능 - static 메서드 (클래스 메서드) 객체생성없이 '클래스이름.메서드이름()' 으로 호출 인스턴스 멤버(iv, im(인스턴스메서드))와 관련없는 작업을 하는 메서드 메서드 내에서 인스턴스 변수(iv) 사용불가 static메서드의 예시는 Math.random(), Math.round()등이 있다. 이 메서드를 ..
참조형 매개변수, 참조형 반환타입
참조형 매개변수, 참조형 반환타입
2022.03.27참조형 매개변수 기본형 매개변수 - 변수의 값을 읽기만 할 수 있다. (read only) 참조형 매개변수 - 변수의 값을 읽고 변경할 수 있다. (read & write) [Ex6_7] class Data2 {int x;} public class Ex6_7 { public static void main(String[] args) { Data2 d = new Data2(); // Data2 객체 생성 d.x = 10; // Data2클래스 객체 d의 x에 10을 저장 System.out.println("main() : x = " + d.x); // Data2클래스 객체 d에 저장되어 있는 x값 10출력 change(d); // change 메서드 호출 System.out.println("After cha..