728x90
반응형

초기화블록 (Initializaion Block)

필드=속성=멤버=인스턴스=Attribute=Property= Column 의 값을 초기화시키는 기능을 가지고 있는 블록
초기화 순서  :
1. 필드의 자동초기화값   int a;
2. 필드선언 시 초기값 바로 대입하는 경우
(명시적 초기화)
  int a = 10;
3. 인스턴스 필드 블록 초기화값 {필드의 초기화명령문; (static필드, 인스턴스필드) } { a = 20; }
4. 클래스 필드(static필드) 블록의 초기화값  static{필드의 초기화명령문; (static필드) } static int a = 10;
static { a = 55; }
5. 생성자에서 초기화한 값   Ex( ){  a = 77; }
6. setter메소드로 초기화한 값(단, setter메소드는 자동실행 안 됨. 실행하려면 반드시 호출해야함)     
멤버필드를 초기화 할 수 있는 방법
-초기화 블럭 사용
-생성자 사용
-setter메소드 사용
-명시적초기화(선언과 동시에 값 대입을 하는 방법)
필드( =속성=멤버=인스턴스=Attribute=Property= Column 또는 클래스) 상수 예외 사항 :
반드시 선언과 동시에 초기값 설정을 해주어야 하나, 1)초기화블럭과 2) 생성자 딱 한 번은 초기값 설정을 할 수 있다.

class Ex{
1)인스턴스 초기화블록
   final int MAX ;
   { MAX = 55; }
2)생성자
   Ex(){ MAX = 10;}
InitializaionBlockEx.java
package interfaceex;

public class InitializaionBlockEx {

	public static void main(String[] args) {
		System.out.println(InitBlock.classVar);
		
		InitBlock myInit = new InitBlock();
		System.out.println(myInit.instanceVar);
		
		myInit.setInstanceVar(555);
		System.out.println(myInit.instanceVar);
	}

}


class InitBlock {
	//클래스변수 (명시적초기화)
	static int classVar = 10;
	//인스턴스변수 = 멤버변수(명시적초기화)
	int instanceVar = 10;
	//인스턴스상수 = 멤버상수(선언만)
	final int MAX;
	
	//클래스(static)필드 초기화 블록
	static {
		classVar = 20;
		//static이 붙은 클래스변수만 초기화가능
//		instaceVar = 555;
	}
	//인스턴스필드 초기화 블록
	{
		this.instanceVar = 20;
		this.classVar = 50;
		MAX = 100;
	}
	//기본 생성자
	public InitBlock() {
		instanceVar = 30;
		this.classVar = 77;
//		this.MAX = 100;
		//상수는 딱 한번만 
	}
	//setter메소드
	public void setInstanceVar(int instanceVar) {
		this.instanceVar = instanceVar;
	}
}
20
30
555​
Return.java

return의 또 다른 쓰임새
package interfaceex;

class Return {
	public void say_nick(String nick) {
		if ("fool".equals(nick)) { //equals객체열 안에 있는 값 비교
			//return키워드의 또 다른 쓰임새, 메소드의 종료 중괄호로 빠져나감.
			return;
		}
		System.out.println("나의 별명은 " + nick + " 입니다.");
	} //if true - return값이 나오는 곳으로 출력되지 않음
}

public class ReturnClass {

	public static void main(String[] args) {
		Return rt = new Return(); //default 기본생성자 호출
		rt.say_nick("fool");
		System.out.println("출력결과 ");
	}

}​
출력결과

Generic Type

  class 클래스명<클래스급이상자료형 변수명Aaa> {
     String a;
 
     public String getA( ){ return a; }

     pubic void setA(String a){ this.a = a; }
}
class 클래스명< T > {
     T a;
 
     public T getA( ){ return a; }

     pubic void setA(T a){ this.a = a; }
}
T => 한 개의 자료형을 변경하고자 하거나 어떤 변수를 지정할 지 모르는 경우는 대개 T변수를 쓴다.
(자료형을 의미하는 Type의 약자에서 따온 명칭)
E => 배열처럼 나열하는 목록의 자료형을 가지는 클래스의 요소 자료형을 지정할 때 사용하는 명칭(Element의 약자)
K => Key요소의 자료형을 지정하는 명칭
V => Value요소의 자료형을 지정
N => Number자료형을 지정하는 명칭
? => WildCard : 전체 다, 무엇이든지 (*같은)
단독으로 사용불가하며, 반드시 소속된 클래스가 앞에 명시되어야한다.
<? super : 조상클래스가 앞에 나오며 super앞에는 와일드카드만 명시가능하다.
 
728x90
반응형

+ Recent posts