public class Ex01 {
	public static void main(String[] args) {
    	Test1 tt; // 이 시점은 클래스가 로딩되는 시점이 아님.
        
        // 클래스가 로딩되는 시점은 객체를 생성하거나 클래스 변수, 클래스 메소드를 사용하는 시점.
        System.out.println(Test1.y);
        
        tt = new Test1();
        tt.print();
        
        Test1 ob = new Test1();
        ob.print();
    }
}

클래스가 로딩 될 때 한 번 실행

  1. 클래스 변수 메모리 할당 - 메소드 영역
  2. 클래스 변수를 디폴트 값으로 초기화
  3. 초기화 변수 수식 실행
  4. static 초기화 블록 실행

객체를 생성할 때 마다 실행

  1. new Test1(); - 객체를 위한 메모리 할당(인스턴스 변수의 메모리 할당) : a, b, c, d
  2. 모든 인스턴스 변수는 디폴트 값으로 초기화 : a<- 0, b <- 0, c <-0, d <- 0
  3. 초기화 수식으로 초기화(존재하는 경우) : b <- 1
  4. 초기화 블록 실행(존재하는 경우) : d <- 5
  5. 생성자 몸체 실행
  • 생성자 몸체에서 첫번째 문장의 super([인수]); 또는 this([인수]) 실행
  • 생성자 몸체 실행
  • c <- 10 생성자...
class Test1 {

	private int a;
    private int b=1;
    private int c;
    private int d;
    
    public static int x=10;
    public static int y;
    
    static {
    	// static변수의 초기화, 한 번만 실행 : 클래스가 로딩 될 때
        y = 20;
        System.out.println("static 초기화 블럭");
    }
    
    {	//인스턴스 초기화 블럭(객체가 생성될 때 마다 실행)
    	d = 5;
        System.out.println("초기화 블럭"); // 거의 쓰지 않는다.
    }
    
    public Test1() {
    	c = 10;
        System.out.println("생성자 ...");
    }
    
    public void print() {
    	System.out.println(a+":"+b+":"+c+":"+d);
    }
    
}

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0716_Ex03_singleton 패턴  (0) 2021.07.19
0716_Ex02_ final  (0) 2021.07.19
0715_Ex09_this  (0) 2021.07.18
0715_Ex08_this  (0) 2021.07.18
0715_Ex07_this  (0) 2021.07.18
public vlass Ex09_this {
	public static void main(String[] args){
    Test9 t = new Test9();
    
    t.set(50);
    t.print();
    
    Test9.sub(10);
    System.out.println("Test9.b:"+Test9.b);
    }
}
class Test9 {
	private int a;
    public static int b=10;
    
    public void set(int a) {
    	this.a = a;
    }
    
    public void print() {
    	System.out.println("a: "+a);
    }
    
    public static void sub(int b) {
    	// b = b+ 10;
        // this.b = b + 10;
        // 컴 오류. static메소드 (클래스메소드)에서는 this사용이 불가하다. 
        // 클래스 메소드는 객체 생성과 상관이 없기 때문임.
        // this는 호출한 객체를 의미한다.
        Test9.b = b + 10;
    }
}

인스턴스 필드, 인스턴스 메소드는 "객체.필드" "객체.메소드" 로 접근

클래스 필드, 클래스 메소드는 "클래스명.필드" "클래스명.메소드"로 접근

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0716_Ex02_ final  (0) 2021.07.19
0716_Ex01 : 초기화 블럭  (0) 2021.07.18
0715_Ex08_this  (0) 2021.07.18
0715_Ex07_this  (0) 2021.07.18
0715_Ex06_this  (0) 2021.07.18
public class Ex08_this {
	public static void main(String[] args) {
    	Test8 t = new Test8("김자바");
        t.print();
    }
}
class Test8 {
	private String name;
    private int age;
    
    public Test8(){
    	System.out.println("인자가 없는 생성자");
    }
    public Test8(String name) {
    	this(name, 0); // 다른 생성자를 호출. 생성자 선두에 단 한번만 가능
        System.out.println("인자가 하나인 생성자");
    }
    public Test8(String name, int age) {
    	this.name = name;
        this.age = age;
        System.out.println("인자가 두 개인 생성자");
    }
    public void print(){
    	System.out.println(name+":"+age);
    }
}

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0716_Ex01 : 초기화 블럭  (0) 2021.07.18
0715_Ex09_this  (0) 2021.07.18
0715_Ex07_this  (0) 2021.07.18
0715_Ex06_this  (0) 2021.07.18
0715_Ex05_매개변수, 필드  (0) 2021.07.17
public class Ex07_this {
	public static void main(String[] args) {
    	Test7 ob = new Test7();
        // ob.age = 20; 컴 오류. private은 외부에서 접근 불가
        // 직접접근이 불가능 하기 때문에 name과 age를 줄 다른 방법을 찾아야 한다.
        ob.setName("홍길동");
        ob.setAge(20);
        
        System.out.println(ob.getName()+"님은 "+ob.getAge()+obresult());
        // 요즘 선호하는 코딩방식은 생성자로 값을 넘기는 방식
        // setter의 값을 변경할 수 있기 때문.
    }
}
class Test7 {
	private String name;
    private int age;
    
    public String getName() {
    	return name;
    }
    public void setName(String name) {
    	this.name = name;
    }
    public int getAge(){
    	return age;
    }
    public void setAge(int age){
    	this.age = age;
    }
    public String result() {
    	return age>=19? "성인":"미성년자";
    }
    
}

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0715_Ex09_this  (0) 2021.07.18
0715_Ex08_this  (0) 2021.07.18
0715_Ex06_this  (0) 2021.07.18
0715_Ex05_매개변수, 필드  (0) 2021.07.17
0715_Ex04_constructor : 생성자  (0) 2021.07.17
public class Ex06_this {
	public static void main(String[] args) {
    	Test6 t = new Test6();
        t.set(5);
        t.print();
        
        Test6 t2 = new Test6();
        t2.set(3);
        t2.print();    
    }
}
class Test6 {

	private int a;
    private int b;
    
    public void set(int b) {
    	// this : 호출한 객체
    	this.a = 10;
        this.b = b + 100;
        // this.b : 호출한 객체의 필드, b : 매개변수
    }
    
    public void print() {
    	System.out.println("a: "+this.a+", b: "+this.b);
    }
}

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0715_Ex08_this  (0) 2021.07.18
0715_Ex07_this  (0) 2021.07.18
0715_Ex05_매개변수, 필드  (0) 2021.07.17
0715_Ex04_constructor : 생성자  (0) 2021.07.17
0715_Ex03_constructor : 생성자  (0) 2021.07.17
public class Ec05_this{
	public static void main(String[] args) {
    	Test5 t = new Test5();
        
        t.set(5);
        t.print();
    }
}
class Test5 {
	// 인스턴스 변수는 해당 클래스의 모든 인스턴스 메소드에서 바로 접근 가능.
    rpviate int a;
    private int b;
    
    public void set(int b) {
    	// 지역변수(매개변수)와 필드 이름이 동일하면 지역변수 (매개변수)가 우선순위
        a = 10; // 필드
        b = b + 100; // 매개변수의 값 변경
    }
    
    public void print() {
    	System.out.println("a: "+a+", b: "+b);
    }
    
}

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0715_Ex07_this  (0) 2021.07.18
0715_Ex06_this  (0) 2021.07.18
0715_Ex04_constructor : 생성자  (0) 2021.07.17
0715_Ex03_constructor : 생성자  (0) 2021.07.17
0715_Ex02_constructor : 생성자  (0) 2021.07.17
public class Ex04_constructor {
	public static void main(String[] args){
    	Test4 t1 = new Test4(); // 인자가 없는 생성자 호출
        t1.print();
        
        Test4 t2 = new Test4(10); // 인자가 하나인 생성자 호출
        t2.print();
    }
}
// 생성자 중복 정의
class Test4 {
	private int a;
    
    public Test4() {
    	System.out.println("인자가 없는 생성자");
    }
    
    public Test4(int n){
    	a = n;
    	System.out.println("인자가 있는 생성자");
    }
    
    public void print() {
    	System.out.println("a: "+a);
    }
    
}

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0715_Ex06_this  (0) 2021.07.18
0715_Ex05_매개변수, 필드  (0) 2021.07.17
0715_Ex03_constructor : 생성자  (0) 2021.07.17
0715_Ex02_constructor : 생성자  (0) 2021.07.17
0715_Ex01_sort : 정렬  (0) 2021.07.17
public class Ex03_constructor {
	public static void main(String[] args) {
    // Test2 tt = new Test2(); 컴파일오류. 인자가 없는 생성자가 없다.
    // 생성자가 존재하면 자바는 디폴트 생성자를 만들지 않는다.
    
    Test2 tt = new Test2(10);
    tt.print();
    
    }
}
class Test2 {
	private int a;
    
    public Test2(int n) { // 관호 안에 인자가 있음.
		a = n;
        System.out.println("인자가 하나인 생성자...");
    }
    
    public void print() {
    	System.out.println("a: "+a);
    }
    
}

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0715_Ex05_매개변수, 필드  (0) 2021.07.17
0715_Ex04_constructor : 생성자  (0) 2021.07.17
0715_Ex02_constructor : 생성자  (0) 2021.07.17
0715_Ex01_sort : 정렬  (0) 2021.07.17
0715_복습  (0) 2021.07.16

+ Recent posts