[2021-07-01]Java

SPIDER·2021년 7월 1일
0

Java 공부

목록 보기
11/14
post-thumbnail

11일차

기본형과 참조형



기본형

ex)int,boolean,char,double 등
변수가 값 자체를 보관하고 있다.

int a = 3;
int b = a;

System.out.println(a);  // 3 출력
System.out.println(b);  // 3 출력

a = 4;
System.out.println(a);  // 4 출력
System.out.println(b);  // 3 출력

b = 7;
System.out.println(a);  // 4 출력
System.out.println(b);  // 7 출력

변수가 값 자체를 보관하고 있기 때문에 int b=a; 를 선언 하였더라도
b값을 바꾸면 그 즉시 b값 자체만 변화한다.

참조형

Person,String,int[] 등
변수는 값이 보관되고있는 영역을 가리킴(c언어의 포인터 역할)

Person p1, p2;
p1 = new Person("강호동", 45);

p2 = p1;
p2.setName("이수근");

System.out.println(p1.getName()); //"이수근" 출력
System.out.println(p2.getName()); //"이수근" 출력

p1 과 p2는 값이 보관되어있는 영역(주소)를 가리키기 때문에
p1=p2를 하고 p2의 값만 바꿔주어도 자동적으로 p1의 값도 변화한다.

int[] a = new int[3];
int[] b = a;

a[0] = 1;
b[0] = 2;

System.out.println(a[0]); //2 출력
System.out.println(b[0]); //2 출력

배열도 참조형으로 볼 수 있는데
마지막에b[0]=2; 를 함으로써 배열 a 와 b의 0번 인덱스가 모두 2로 바뀌었다.

final 변수

변수를 정의할 때 final을 사용하면 상수가 되어 더이상 변수의 값을 바꿀 수 없다.

final double pi = 3.141592;
pi = 2.54;

위의 코드는 오류가 발생한다. final로 작성된 변수 pi를 더이상 바꿀 수 없기 때문이다.

public class Person {
    private String name;

    public Person(String name) {
        this.name = name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }

    public static void main(String[] args) {
        final Person p1 = new Person("강호동");
        p1.setName("이수근");
        System.out.println(p1.getName());
    }
}

위의 코드는 문제 없이 실행된다. final로 선언된 변수가 p1의 name이 아닌
p1 자체이기 때문에 p1의 name은 문제없이 변수의 값을 바꿀 수 있다.

만약 처음에 name을 final로 선언해주었다면 오류가 발생했을 것이다.

--private를 public final로 바꿔주면 좋은점--
따로 getter,setter 메소드 작성을 할 필요없다
다른 변수들과 똑같이 가져와 사용할 수 있지만 값 변경이 되지않는다

try, catch 예외처리

프로그램 실행중 오류로 인해 프로그램이 종료될때
종료시키지 않고 끝까지 프로그램을 동작시키려고할 때 많이 사용된다.

try{오류가 발생하지 않았을 때 실행시킬 곳
}catch(발생한 오류의 종류를 인스턴스로 받는다 ex)ArrayIndexOutofBoundsException)
{오류가 발생했을때 실행시킬 곳}

위와 같이 실행할 수 있다.

profile
🕷기적을 만드는 개발 기록🕷

0개의 댓글