Archive

Java Day 10 생성자,this,static,final

|

Java Day 10 생성자,this,static,final


Java Day 9에 이어서

  1. 생성자

    • new 연산자로 객체가 생성될 때 호출되어 초기화를 담당

    • 반환형(return value)이 없다

    • 생성자를 안만들면 default 생성자 자동 생성

    • 하나의 클래스에는 인자의 수가 다르거나 자료형이 다른 생성자가 여러개 있을 수 있다. (생성자 오버로딩)

  2. this

    • 한 클래스 내에서 전역변수와 지역변수가 겹치는 영역에서 지역변수가 우선이다
    public class Ex{
    	int var;
    	public void setVar(int var){
    		var = var;	//전역변수와 지역변수가 겹침
    	}
    	public int getVar(){
    		return var;
    	}
    	public static void main(String[] ar){
    		Ex me = new Ex();
    		me.setVar(1000);
    		System.out.println("var = : "+me.getVar()); 
    		} // output : var = 0;
    

    전역변수가 우선이게 하려면? this를 붙인다.

    • 위의 코드에서 this.var = var;로 바꾸면 원하는대로 1000이 출력된다
    • this는 객체 자신의 참조
    • this()는 현재 객체의 생성자를 의미 (반드시 첫줄에 적여야한다)
    • 다른 생성자에서 this()로 기존의 코드를 호출하고 새로 실행문 추가 => 생성자 오버로딩
  3. static

    • static(고정된)이 붙은 필드와 메소드는 정적 필드(클래스 변수), 정적 메소드라고도 한다

    • static 특징

      1. 메모리를 공유한다

        -> static변수가 바뀌면 모든 객체의 변수값이 변경된다

      2. static은 가장 먼저 메모리에 잡힌다

        -> 객체를 생성하지 않고 클래스명으로 접근 가능

      3. static은 한 번만 초기화 된다

        -> static은 별도의 초기화 구문을 가진다

      4. static메소드 안에서 static 변수만 사용이 가능하다

        static 변수는 static메소드 안에서만 사용이 가능하다

        예외) 클래스의 멤버 메소드일 경우 static변수 사용 가능

    public class StaticEx{
    	private int x;
    	public static int y;
    	static { //static 초기화 구문
    		y = 20;
    	}
    	public int getX(){
    		return x;
    	}
    	public static void main(String[] ar){
    		System.out.println("y = "+StaticEx.y); //클래스명으로 접근 가능, 20출력
            StaticEx.y = 100; // 값 변경
            StaticEx se = new StaticEx();
            System.out.println("x = "+se.getX()); //x,getX()메소드는 정적멤버가 아니므로 객체를 만들어서 사용해야함
            System.out.println(se.y); // 100 출력, 변경된 값으로 출력된다
    	}
    }
    
  4. final

    • 더 이상 변경이 불가한 상수의 의미를 가짐

    • static final로 주로 상수 지정함

    • 상수는 대문자로 표기


참고 자료


이것이자바다

자바프로그래밍100% 실전가이드

KG아이티뱅크 자바 강의자료