
==, != 는 객체의 번지를 비교NullPointerException : 변수가 null인 상태에서 객체의 데이터나 메소드를 사용하려고 할때 
.class) 내용 저장 영역new 키워드로 만든 것)
- 문자열
- 선언
String name1 = "홍길동";String name2 = new String("홍길동");: new 연산자 (객체 생성 연산자)로 직접 String 객체 생성/ 대입 가능
| 구분 | 설명 | 예시 | 결과 |
|---|---|---|---|
== | 객체의 주소 비교 | name1 == name2 | false |
.equals() | 객체의 값 비교 | name1.equals(name2) | true |
.charAt() | 특정 위치의 문자 추출 | name1.charAt(1) | '길' |
.length() | 문자열 길이 | name1.length() | 3 |
.replace(기존,새로운) | 기존 문자를 새로운 문자로 변경 | name1.replace("홍", "김") | "김길동" |
.substring() | 문자열 추출 | name1.substring(1) | "길동" |
.substring(시작,끝) | 문자열 추출 (시작 index ~ 끝-1) | name1.substring(1, 2) | "길" |
.indexOf() | 특정 문자열 위치 찾기 | name1.indexOf("길동") | 1 |
.contains() | 특정 문자열 포함 여부 확인 | name1.contains("홍") | true |
.split() | 문자열 분리 | name1.split(",") |
- 연속된 공간에 값을 나열하고 각 값에 인덱스를 부여하는 자료구조
- 인덱스는 대괄호
[]를 사용하여 값을 읽거나 저장함- 선언
타입[] 배열명,타입 배열명[]int[] arr1 = {1,2,3,4};: 정적 초기화int[] arr = new int[4];: 동적 초기화(값이 정해지지 않은 경우)
- 정수의 초기값은 0, bool은 false, 참조타입은 null
names = new String[] {"홍길동","김자바"}: 값 목록으로 선업- 배열 길이
arr.length
int[][] arr = {{1,2,3},{4,5}}int[][] arr = new int[2][3]int[][] scores = new int[2][];
scores[0] = new int[3];
scores[1] = new int[2];
- cpu가 변수에 들어 있는 데이터 자체를 다른 변수에 복사
얕은 복사
- 주소 자체를 복사
- 복사된 값, 원래 값 중 하나라도 변경시 모두 함께 변경됨
깊은 복사
- 주소가 가리키는 값 목록을 복사
- 복사된 값과 원래 값을 비교하면 주소가 다름
방법 구현 예 장점 단점 System.arraycopy() System.arraycopy(원본 배열, 원본 시작 index, new 배열, new 붙여넣기 시작 index, 복사 항목 수);실행 속도가 빠름, 시스템 레벨 최적화 시작/끝 인덱스 조절 필요, 배열 타입 일치 필요 Arrays.copyOf() int[] b = Arrays.copyOf(a, a.length);사용이 간단함, 부분 복사와 크기 조절이 가능 전체 배열 복사 시 비효율적, 배열 타입 자동 일치 clone() int[] b = a.clone();매우 간단한 구현 얕은 복사만 수행, 객체 배열에서 문제 발생 가능 반복문 사용 for (int i = 0; i < a.length; i++) { b[i] = a[i]; }조건에 따른 복사 가능, 가장 명시적인 방법 코드가 길어질 수 있음, 수동 최적화 필요 - 배열 같은 경우는 한번 생성하면 길이 변경 불가 -> 새롭게 복사
String[] oldArr = {"java,"c","python"}; String[] newArr = new String[5]; System.arraycopy(oldArr,0,newArr,0,oldArr.length) // java,c,python,null,null
- 요일, 계절, 월 같이 한정된 값을 가진 타입을 코드로 정의
- 열거 타입이름으로 소스파일(.java) 만들어서 정의
- 열거 타입 이름은 첫문자는 대문자인 캐멀 형식으로 지정
Week.javapublic enum Week{ MONDAY, TUESDAY, WEDNESDAY, FRIDAY, SATURDAY, SUNDAY }WeekExample.javapublic class WeekExample{ public static void main(String[] args) { System.out.println("월요일은"+Week.MONDAY) } }- 리턴 타입
리턴타입 메소드(매개변수) 설명 String name()열거 객체의 문자열을 리턴 int ordinal()열거 객체의 순번(0부터 시작)을 리턴 int compareTo()열거 객체를 비교해서 순번 차이를 리턴 열거타입 valueOf(String name)주어진 문자열의 열거 객체를 리턴 열거배열 values()모든 열거 객체들을 배열로 리턴