This is a blog.

자바 기록 4일차 본문

JAVA/Book Summary

자바 기록 4일차

Calcot 2021. 6. 2. 21:09

혼자 공부하는 자바 / 저자 : 신용권

chapter05 참조타입 정리.

 

 

참조타입

 

 

참조 타입과 참조 변수

기본타입 : 정수, 실수, 문자, 논리 리터럴을 저장하는 타입.

: byte, char, short, int, long, float, double, boolean 변수는 실제 값을 변수 안에 저장.

참조타입 : 객체의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스를 말한다.

: 배열, 열거, 클래스, 인터페이스 변수는 메모리의 번지를 변수 안에 저장.

 

 

참조 변수의 ==, != 연산

- 기본 타입 변수의 ==, !=는 변수의 값이 같은지, 아닌지를 조사.

- 참조 타입 변수들 간의 ==, != 연산은 동일한 객체를 참조하는지, 다른 객체를 참조하는지 알아볼 때 사용

 

nullnullPointerExcetion

- 참조 타입 변수는 힙 영역의 객체를 참조하지 않는다는 뜻으로 null값을 가질 수 있다.

참조 타입 변수를 잘못 사용할 경우 발생하는 예외 = nullPointerException

=> ex) int [] intArray = null;

intArray[0] = 10; -> nullPointerException

=> intArray 변수가 참조하는 배열 객체가 없기 때문에 예외 발생.

 

 

String 타입

자바는 문자열 리터럴이 동일하다면 String 객체를 공유하도록 되어 있다.

ex) String name1 = “홍길동”;

String name2 = “홍길동”;

=> name1name2는 동일한 String 객체를 참조.

new 연산자를 사용해서 직접 String 객체를 생성시킬 수도 있다.

new 연산자 = 힙 영역에 새로운 객체를 만들 때 사용하는 연산자로 객체 생성 연산자 라고 한다.

ex) String name1 = new String(“홍길동”);

String name2 = new String(“홍길동”);

=> 이 경우 서로 다른 String 객체를 참조하고 있다.

동일한 String 객체이건 다른 String 객체이건 상관없이 내부 문자열을 비교하고 싶을 때는 String 객체의 equals() 메소드를 사용해야 한다.

ex) boolean result = str1.equals(str2);

 

 

배열

배열은 같은 타입의 데이터를 연속된 공간에 나열하고, 각 데이터에 인덱스를 부여해놓은 자료구조이다.

특징

1. 배열은 같은 타입의 데이터만 저장할 수 있다.

=> int 배열은 int 값만 저장, String 배열은 문자열만 저장.

2. 한 번 생성된 배열은 길이를 늘리거나 줄일 수 없다.

=> 3개의 값을 저장하는 배열을 생성하면, 실행 도중 5개의 값을 저장하는 배열로

수정할 수 없다. 반대로 2개의 값만 저장하는 배열로 수정할 수도 없다.

 

 

배열 선언

형식 1 = 타입 [] 변수; ex) int [] intArray;

형식 2 = 타입 변수[]; ex) int intArray[];

 

 

배열 생성

값 목록으로 배열 생성

 

타입[] 변수 = { 0, 1, 2, 3, ... };

 

배열 변수를 이미 선언한 후에는 다른 실행문에서 중괄호를 사용한 배열 생성이 허용되지 않는다.

배열 변수를 미리 선언한 후 값 목록들이 나중에 결정되는 상황이라면 new 연산자를 사용해서 값 목록을 지정해준다.

변수 = new 타입[] { 0, 1, 2, 3, ... };

ex) String[] names = null;

names = new String{ “홍길동”, “임꺽정”, “이순신”};

 

new 연산자로 배열 생성

값의 목록을 가지고 있지 않지만, 향후 값들을 저장할 배열을 미리 만들고 싶다면 new 연산자로 배열 객체를 생성할 수 있다.

 

타입[] 변수 = new 타입[길이];

 

- 길이는 배열이 저장할 수 있는 값의 개수.

ex) int[] intArray = new int[5];

- new 연산자로 배열을 처음 생성할 경우 배열은 자동적으로 기본값으로 초기화된다.

- 배열이 생성되고 나서 특정 인덱스 위치에 새로운 값을 저장하려면 대입 연사자 사용.

변수[인덱스] = ;

ex) int[] scores = new int[3];

score[0] = 83;

score[1] = 90;

score[2] = 75;

 

 

배열 길이

- 배열에 저장할 수 있는 전체 항목의 개수.

- 배열의 길이를 얻으려면 배열 객체의 length 필드를 읽는다.

배열 변수.length;

 

 

배열 복사

- 배열 간의 항목 값들을 복사하려면 for문을 사용하거나 system.arraycopy() 메소드 사용.

 

 

향상된 for

- 문법 :

for(2.타입 변수 : 1.배열) {

3.실행문;

}

=> 배열 및 컬렉션 항목의 개수만큼 반복하고, 자동적으로 for문을 빠져나간다.

 

 

열거 타입

한정된 값인 열거 상수 중에서 하나의 상수를 저장하는 타입.

몇 가지로 제한된 상수를 가지는 타입.

타입 선언 : enum 타입 {상수, 상수, ...}

 

 

열거 타입 선언

관례적으로 첫 글자를 대문자로 하고 나머지는 소문자로 구성.

만약 여러 단어로 구성된 이름이라면 각 단어의 첫 글자는 대문자로 하는 것이 관례.

ex) week.java

MemberGrade.java

열거 상수 선언 : 열거 타입의 값으로 사용되는데, 관례적으로 열거 상수는 모두 대문자로 작성한다.

ex) public enum Week { MONDAY, TUESDAY, WEDNESDAY, THURSDAY }

 

 

열거 타입 변수

열거 타입으로 선언된 변수. 열거 타입 변수에는 열거 상수 중 하나가 대입된다.

ex) Week today = Week.FRIDAY; => today가 열거 타입 변수.

 

'JAVA > Book Summary' 카테고리의 다른 글

자바 기록 6일차  (0) 2021.06.05
자바 기록 5일차  (0) 2021.06.03
자바 기록 3일차  (0) 2021.06.01
자바 기록 2일차  (0) 2021.05.31
자바 기록 1일차  (0) 2021.05.30
Comments