일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 음악
- 정리
- github
- 혼공자
- 코딩테스트
- 정처기실기
- 혼자공부하는자바
- 데이터베이스실무
- java
- 정보처리기사
- 데이터베이스
- javaAlgorithm
- 기록
- programmers
- 비전공자 #자바공부 #혼자공부하는자바 #혼공자 #자바 #기록 #정리
- Algorithm
- 비전공자 #코딩공부 #혼자공부하는자바 #혼공자 #자바 #기록 #정리
- 자바알고리즘
- 개발자
- 알고리즘
- GIT
- 정처기
- 비전공자 #코딩공부 #혼자공부하는자바 #혼공자 #자바 #정리 #기록
- javascript
- 자바
- 비전공자
- python
- 수제비
- 파이썬
- 정보처리기사실기
- Today
- Total
This is a blog.
자바 기록 4일차 본문
혼자 공부하는 자바 / 저자 : 신용권
chapter05 참조타입 정리.
참조타입
참조 타입과 참조 변수
기본타입 : 정수, 실수, 문자, 논리 리터럴을 저장하는 타입.
: byte, char, short, int, long, float, double, boolean 변수는 실제 값을 변수 안에 저장.
참조타입 : 객체의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스를 말한다.
: 배열, 열거, 클래스, 인터페이스 변수는 메모리의 번지를 변수 안에 저장.
참조 변수의 ==, != 연산
- 기본 타입 변수의 ==, !=는 변수의 값이 같은지, 아닌지를 조사.
- 참조 타입 변수들 간의 ==, != 연산은 동일한 객체를 참조하는지, 다른 객체를 참조하는지 알아볼 때 사용
null과 nullPointerExcetion
- 참조 타입 변수는 힙 영역의 객체를 참조하지 않는다는 뜻으로 null값을 가질 수 있다.
참조 타입 변수를 잘못 사용할 경우 발생하는 예외 = nullPointerException
=> ex) int [] intArray = null;
intArray[0] = 10; -> nullPointerException
=> intArray 변수가 참조하는 배열 객체가 없기 때문에 예외 발생.
String 타입
자바는 문자열 리터럴이 동일하다면 String 객체를 공유하도록 되어 있다.
ex) String name1 = “홍길동”;
String name2 = “홍길동”;
=> name1과 name2는 동일한 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가 열거 타입 변수.