( C++과 조금 다른 점이 있어서 기록해둘 겸... )
int[] grade1 = new int[3]; //타입[] 배열이름 = new 타입[배열길이]
int[] grade3 = new int[]{1, 2, 3}; //타입[] 배열이름 = new 타입[]{}
Ex)
//class
//-차(Car) : 설계도
//filed
car.modleName = "람보르기니"
car.modelYear = 2016
car.color = "주황색"
car.maxSpeed = 350
//method
car.accelerate();
car.brake();
//instance
//myCar : 설계도에 의해 생성된 차량
//friendCar : 설계도에 의해 생상된 또 다른 차량
//자동차 인스턴스는 같은 필드와 메소드 갖게 됨
//각 인스턴스마다 가지고 있는 프로퍼티의 값은 전부 다름
import 패키지이름.클래스이름 //해당 패키지의 특정 클래스만을 사용
import 패키지이름.*; //해당 패키지의 모든 클래스를 클래스 이름만으로 사용하고 싶을 때
class Field {
static int classVar = 10; // 클래스 변수 선언
int instanceVar = 20; // 인스턴스 변수 선언
}
public class Java100_variable_HelloJava {
public static void main(String[] args) {
int var = 30; // 지역 변수 선언
System.out.println(var + "\n"); // 지역 변수 참조
Field myField1 = new Field(); // 인스턴스 생성
Field myField2 = new Field(); // 인스턴스 생성
System.out.println(Field.classVar); // 클래스 변수 참조
System.out.println(myField1.classVar);
System.out.println(myField2.classVar + "\n");
myField1.classVar = 100; // 클래스 변수 값 변경
System.out.println(Field.classVar); // 클래스 변수 참조
System.out.println(myField1.classVar);
System.out.println(myField2.classVar + "\n");
System.out.println(myField1.instanceVar); // 인스턴스 변수 참조
System.out.println(myField2.instanceVar + "\n");
myField1.instanceVar = 200;
System.out.println(myField1.instanceVar); // 인스턴스 변수 참조
System.out.println(myField2.instanceVar);
}
}
//결과
30
10
10
10
100
100
100
20
20
200
20
//클래스 변수는 생성된 모든 인스턴스가 같은 값을 공유함
//인스턴스 변수는 각 인스턴스마다 고유한 값을 가짐
class Method {
int a = 10; // 인스턴스 변수
int b = 20; // 인스턴스 변수
int add() {
return a + b;
} // 인스턴스 메소드
static int add(int x, int y) {
return x + y;
} // 클래스 메소드
}
public class Java100_variable_HelloJava {
public static void main(String[] args) {
System.out.println(Method.add(20, 30)); // 클래스 메소드 호출
Method myMethod = new Method(); // 인스턴스 생성
System.out.println(myMethod.add()); // 인스턴스 메소드 호출
}
}
// 결과
50
30
Ex)
class Car {
private String modelName;
private int modelYear;
private String color;
private int maxSpeed;
private int currentSpeed;
{
this.currentSpeed = 0; // 인스턴스 초기화 블록
}
Car() {
}
Car(String modelName, int modelYear, String color, int maxSpeed) {
this.modelName = modelName;
this.modelYear = modelYear;
this.color = color;
this.maxSpeed = maxSpeed;
}
public int getSpeed() {
return currentSpeed;
}
}
public class Java100_variable_HelloJava {
public static void main(String[] args) {
Car myCar = new Car(); // 인스턴스 생성
System.out.println(myCar.getSpeed()); // 인스턴스 메소드 호출
}
}
Ex)
class InitBlock {
static int classVar; // 클래스 변수
int instanceVar; // 인스턴스 변수
static { // 클래스 초기화 블록을 이용한 초기화
classVar = 10;
}
}
public class Java100_variable_HelloJava {
public static void main(String[] args) {
System.out.println(InitBlock.classVar); // 클래스 변수에 접근
}
}
인프런 - 예제로 공부하는 Java 100문제 풀이 Part.1 참고
TCP School - Java 강의 참고