본문 바로가기
프로그래밍/JAVA

자바의 정석 기초 ( 객체의 생성 / 객체의 사용 / 객체 배열 )

by ✲ 2020. 7. 6.
반응형

남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다. 

 

객체의 생성

클래스명 변수명 ;                     //클래스의 객체를 참조하기 위한 참조변수 선언 

변수명 = new 클래스명();           //클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장

Tv t ;                                     // Tv클래스 타입의 참조변수 t 선언

t  = new Tv();                          // Tv 인스턴스를 생성 후, 생성된 인스턴스의 주소를 t에 저장 

> Tv t = new Tv();   한줄로 작성 가능 

 

객체의 사용

t.channel = 7;                           // Tv 인스턴스 멤버변수 channel의 값을 7

t.channelDown();                        // Tv 인스턴스 메서드 channelDown() 호출

System.out.println("현재 채널은 " + t.channel + "입니다."); 

 

1. 클래스 작성

2. 객체 생성 

3. 객체 사용 

 

* 하나의 인스턴스를 여러개의 참조변수가 가리키는 경우 (가능)

Tv t1 = new Tv();

Tv t2 = new Tv();

t1.channel = 7; 

t2 = t1; 

* 여러 인스턴스를 하나의 참조변수가 가리키는 경우 (불가능)  

 

예제 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
class Ex6_1 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Tv t;
        t = new Tv();
        t.channel = 7
        t.channelDown();
        System.out.println("현재 채널은 "  + t.channel+ " 입니다.");
    }
 
}    
        
        
        
        class Tv {
            String color;
            boolean power;
            int channel;
 
            void power() {
                power = !power;
            }
 
            void channelUp() {
                channel++;
            }
 
            void channelDown() {
                channel--;
            }
 
        
 
        }
 
 
cs

출력 

현재 채널은 6 입니다. 

 

예제 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
class Ex6_2 {
    public static void main(String args[]) {
        Tv t1 = new Tv();
        Tv t2 = new Tv();
        System.out.println("t1의 channel값은 " + t1.channel + "입니다.");
        System.out.println("t2의 channel값은 " + t2.channel + "입니다.");
 
        t1.channel = 7;
        System.out.println("t1의 channel값을 7로 변경하였습니다.");
        
        System.out.println("t1의 channel값은 " + t1.channel+ "입니다.");
        System.out.println("t2의 channel값은 " + t2.channel+ "입니다.");
    
        t2 = t1; // 참조변수 t1의 값을 t2에 저장 
        System.out.println("t2의 channel값은 " + t2.channel +"입니다");
    
    }
}
 
cs

 

출력

t1의 channel값은 0입니다.
t2의 channel값은 0입니다.
t1의 channel값을 7로 변경하였습니다.
t1의 channel값은 7입니다.
t2의 channel값은 0입니다.
t2의 channel값은 7입니다

 

객체의 배열 

객체 배열 == 참조변수 배열 

Tv t1, tv2, tv3 ; ----> Tv[] tvArr = new Tv[3];

Tv[] tvArr = new Tv[3];         // 길이가 3인 Tv 타입의 참조변수 배열 

 

tvArr[0] = new Tv();

tvArr[1] = new Tv();

tvArr[2] = new Tv(); 4

위 3개를 아래처럼 변경 가능 

Tv[] tvArr = {new Tv(), new Tv(), new Tv()}; 

 

Tv[] tvArr = new Tv[3];       // 참조 변수 배열만 만들어놓은 것 ! 아래처럼 객체를 생성해줘야함! 생성X > 오류발생 

tvArr[0] = new Tv();

tvArr[1] = new Tv();

tvArr[2] = new Tv();               

반응형

댓글