초기화 블럭
 - 클래스 초기화 블럭, 인스턴스 초기화 블럭으로 나뉘며, 각각의 변수의 초기화에 사용된다.

※ 클래스 초기화 블럭 - 클래스변수를 초기화할때 사용한다.
※ 인스턴스 초기화 블럭 - 인스턴스 변수를 초기화할때 사용한다.

생성자보다 인스턴스 초기화 블럭이 먼저 수행됨.


인스턴스 초기화 블럭 - {}를 사용하여 인스턴스 변수를 초기화 한다.
  ex) {  초기화 내용  }

클래스 초기화 블럭 - static{} 를 사용하여 클래스 변수를 초기화 한다.
  ex) static { 초기화 내용 }

'프로그래밍 > Java' 카테고리의 다른 글

[Java] Sub Class의 필요성  (0) 2012.10.03
[Java] 천단위 콤마 추가, 제거  (0) 2012.07.26
[Eclipse] 이클립스 플러그인 제거  (0) 2011.09.22
URI vs URL  (0) 2011.09.05
[Java] Scanner  (0) 2011.06.05


Help -> Install New Software



already installed? 클릭



Uninstall을 통한 플러그인 제거





'프로그래밍 > Java' 카테고리의 다른 글

[Java] 천단위 콤마 추가, 제거  (0) 2012.07.26
[Java] 초기화 블럭 ( initialization block )  (0) 2012.03.02
URI vs URL  (0) 2011.09.05
[Java] Scanner  (0) 2011.06.05
[Java] 인스턴스 변수 와 지역변수의 차이점  (0) 2011.02.28


URI : uniform resource identifier

URL : uniform resource locator ( location is network )


URI is only for identifying the resource
URL is locating / Finding the resource

URI ( 초집합 : Superset )
URL ( 부분집합 : Subset )






Scanner를 이용한 간단한 입력 예제


import java.util.Scanner;

public class {

public static void main(String args[]){
Scanner scan = new Scanner(System.in);

String str = scan.nextLine();
int i = scan.nextInt();
Long l = scan.nextLong();


}
}

위와 같이 입력을 받을때 선언된 기본형과 같은 next를 선언하여 사용해야된다.

단, String의 경우 nextLine() 또는 next()를 사용한다.

또한 byte, short, int, long, float, double의 경우 nextOO(int radix)를 호출할때 매개변수로

진수를 지정하여 입력받을 수 있다.

 



인스턴스 변


● 클래스 내에서 선언됩니다. 메소드 내에서 선언되는 것이 아닙니다.


class horse{

             private double height = 15.2;

             private String breed;

             //나머지 코드...

}
 



지역변수



● 지역변수(local variable)는 메소드 내에서 선언됩니다.

class AddThing{

               int a;

               int b = 12;

      

               public int add() {

                      int total = a + b;

                      return total;

               }



 

● 단, 지역변수는 사용하기 전에 반드시 초기화해야 합니다.

class Foo{

    public void go() {

            int x;

            int z = x + 3; //초기화 하지 않았으므로 컴파일이 되지 않습니다.

     }

}
 

지역변수에는 기본값이 없습니다. 따라서 지역 변수를 초기화하기 전에 사용하려고 하면 컴파일 과정에서 오류가 납니다.

Overloading

1. 현재 클래스 또는 현재 클래스를 상속받은 클래스 ( same class or SubClass )
2. 같은 함수명을 가진다.
3. 하지만 매개변수 목록이 다르다.
4. 리턴타입이 같을수도 있고, 다를 수도 있다.



Overriding

1. 현재 클래스를 상속받은 클래스 ( SubClass )
2. 함수의 이름은 동일하다.
3. 매개변수 목록 또한 동일하다.
4. 리턴타입 또한 동일하다.
5.1 public으로 선언한 경우 Overriding 함수도 public으로 선언한다.
5.2 protected으로 선언한 경우 Overriding 함수는 protected 또는 public으로 선언한다.
5.3 private으로 선언한 함수는 함수를 상속받을 수 없다.




이클립스에서 파일을 작성하게 되면 기본적으로 MS949로 인코딩하게 되어있다.

하지만 나중을 위해서라면 인코딩을 UTF-8로 설정하고 작업하는 편이 좋다.

설정 방법 
Window -> Preferences -> General -> Workspace



위 그림과 같이 Text file encoding 부분을 UTF-8로 바꾸면 된다.


간단 성능 테스트 코드 

long time = System.currentTimeMillis();
reportPerformanceFor("starting at", time);
className.Method() //테스트하려는 함수 호출
reportPerformanceFor("graph allocation", time);
System.out.println("\n" + "Paused: graph is still in memory (to check mem consumption).");
System.out.print("press enter to free memory and finish...");
try {
    System.in.read();
} catch (IOException e) {
    e.printStackTrace();
}
System.out.println("done.");

private static void reportPerformanceFor(String msg, long refTime)
{
        double time = (System.currentTimeMillis() - refTime) / 1000.0;
        double mem = usedMemory()
            / (1024.0 * 1024.0);
        mem = Math.round(mem * 100) / 100.0;
        System.out.println(msg + " (" + time + " sec, " + mem + "MB)");
}
private static long usedMemory()
{
        Runtime rt = Runtime.getRuntime();
        return rt.totalMemory() - rt.freeMemory();
}

연산 규칙
1. 대입 연산자는 '오른쪽 -> 왼쪽'의 연산 규칙을 가진다.
2. 대입 연산자를 제외한 모든 연산자들은 '왼쪽 -> 오른쪽'의 연산 규칙을 가진다.