eum class
enum Week{Mon ,Tue ,Wed,Thu,Fri,Sat,Sun
};
Week today = Week.Mon;
Week nextday = Week.Mon;
if (today ==nextday) {
System.out.println(true);
}
}
열거 상수는 관례적으로 대문자로 작성한다.
열거 상수는 상수값이기 때문에 한번 설정된 참조 값은 바꿀 수 없다.
클래스의 구조
class Perosn{
static name ="leedongkyu";
age =26;
}
클래스 변수는 static만 붙여주면 된다.생성시기: 클래스가 메모리에 바로 올라갈 때 모든 객체(인스턴스)들이 데이터를 공유한다.
class Person{
static String name = "leedongkyu";
int age = 26;
}
public class App {
public static void main(String[] args) throws Exception {
Person ldk = new Person();
Person park = new Person();
ldk.age --;
System.out.println(ldk.age +ldk.name);
park.age++;
ldk.name = "Parkjisung";
System.out.printf("%d %s",park.age,park.name);
}
}
인스턴스 변수 인스턴스(객체)가 생성 될 때 메모리에 변수가 올라간다. 객체마다 변수의 메모리 주소가다르다.
클래스와 구조체의 차이점 클래스는 참조형 즉 포인터(주솟값)을 전달한다.구조체는 스택에 저장된다. 그리고 구조체는 멤버변수를 다른변수를 할당 할때는 데이터를 copy하여 전달하지만 클래스는 참조형식이다.
접근제어 지시자의 종류
public: 모두공개
protected: 상속관계에서 얽혀있는 클래스에서만 접근을 허용
priviate: 클래스안에서만 사용가능
public class App {
private int num =20;
public int cal(int a ,int b){
return a+b;
}
public static void main(String[] args) throws Exception {
App s1 = new App();
System.out.println(s1.num);
System.out.println(s1.cal(1, 2));
}
}
자바 다차원 배열 생성 방법
int [][] arr = new int [2][3];
int [][] arr2 = {{1,2,3},{4,5,6}};
String은 참조형 데이터이다.
String a = "hello";
String b = "hello";
String c = new String("hello")
a 와 b 둘은 같은 메모리를 가르킨다. 따라서 같은 메모리 값이다.그러나 c는 새로운 메모리공간에 값을 넣기 때문에 위와 주소값이 다르다. 따라서 a == b != c이다.