연산자
연산자 종류
- 산술 연산자, 비교 연산자, 논리 연산자, 대입 연산자, 기타 연산
연산자 우선순위
: 산술 > 비교 > 논리 > 대입
- 괄호로 감싸준 연산은 최우선순위
비트 연산
: Bit의 자리수를 옮기는 것
- 연산중에 가장 빠름 (bit가 컴퓨터에서 가장 작은 단위이기 때문에)
- << (왼쪽으로 자리수 옮기기), >> (오른쪽으로 자리수 옮기기)
- 0, 1은 2진수 값이기 때문에,
- 왼쪽으로 옮긴 횟수만큼 2로 곱하는 것과 동일
- 오른쪽으로 옮긴 횟수만큼 2로 나누는 것과 동일
배열
배열 초기화 방법 3가지
- 중괄호를 사용해 초기화
// 특정값 대입해서 선언 int[] intArray = {1, 2, 3, 4, 5}; String[] stringArray = {"a", "b", "c", "d"};
- for문을 사용해 초기화
// 반복문을 통해 초기화 for (int i = 0; i < intArray.length; i++) { intArray[i] = i; } for (int i : intArray) { System.out.print(i); // 01234 }
- Arrays.fill 메서드를 사용해 초기화
// Arrays.fill -> 배열의 주소를 모두 같은 값으로 초기화 Arrays.fill(intArray, 0); for (int i : intArray) { System.out.print(i); }
배열 복사
얕은 복사
: 값은 1개이고, 주소 값 자체를 복사하는 것.
ex) int, double, ...
public class Arr03 {
public static void main(String[] args) {
int[] arr1 = { 1, 2, 3 };
int[] arr2 = arr1;
for(int num : arr1)
System.out.println("변경 전 : " + num); // 1 2 3
arr2[2] = 6;
for(int num : arr1)
System.out.println("arr2 변경 " + num); // 1 2 6
arr1[0] = -5;
for(int num : arr2)
System.out.println("arr1 변경 " + num); // -5 2 6
}
}
위와 같은 코드의 경우, 주소 값을 복사하는 것이기 때문에 arr2의 값을 바꾸게 되면 arr1의 값도 같이 바뀌고, arr1의 값을 바꾸게 되더라도 arr2의 값이 같이 바뀜
깊은 복사
: 주소값이 아닌, 아예 그 값 자체를 복사하는 것.
- a의 값을 b에 복사했다고 생각했을 때, 얕은 복사와는 달 a의 값을 변경해도 b의 값은 바뀌지 않음.
- ex) String, ...
clone()
: 자신을 복제하여 새로운 인스턴스를 생성하는 메서드
- BUT, clone() 메서드는 2차원이상 배열에서는 얕은 복사로 동작
Arrays.copyOf()
: 특정 배열을 원하는 길이만큼 새로운 배열로 복사하는 메서드
String 기능 활용
length()
: String 길이 반환
charAt()
: 특정 인덱스에 위치하는 문자 반환
substring()
: 앞에 입력된 인덱스부터 뒤에 입력된 인덱스 전까지 반환
equals()
: 문자열 비교
toCharArray()
: String을 Char형 배열로 변환해주는 메서드
컬렉션
- 배열보다 다수의 참조형 데이터를 더 쉽고 효과적으로 처리 가능
- 참조형 변수로 저장
- 가변적
기능
: 크기 자동조정, 추가, 수정, 삭제, 반복, 순회, 필터, 포함확인 등..
종류
- List
: 순서가 있는 데이터의 집합 (중복 허용)- LinkedList
: 메모리에 남는 공간을 요청해 실제 값을 여기저기 나눠 담은 후, 실제 값에 대 주소값으로 목록 구성해 저장하는 자료구조
- 조회하는 속도가 느리지만 추가, 삭제시에는 빠름
- LinkedList
- Stack
: FILO(First In Last Out) 구조- 최근 저장된 데이터를 나열하고 싶거나, 데이터의 중복 처리를 막고 싶을 때 사용
- push → 추가
- peek → 맨 상단에 있는 것을 조회
- pop → 맨 상단에 있는 것 빠지게 되면서 그 값을 반환해줌
- Queue
: FIFO(First In First Out) 구조의 집합- add → 추가
- poll → 제일 먼저 넣은 것 삭제하고 그 값을 반환
- peek → 제일 먼저 넣은 것을 조회
- Set
: 순서가 없는 데이터의 집합 (중복 허용 X)
- HashSet이나 TreeSet 등으로 응용해 사용 가능
- Map
: 순서가 없는 쌍으로 이루어진 데이터의 집합 (중복 허용 X)- HashMap이나 TreeMap으로 응용해 사용 가능
'내일배움캠프(Sparta) > 자바 문법 종합' 카테고리의 다른 글
[Java] 변수 (0) | 2023.10.19 |
---|---|
[Java] 개발언어 (Java) (0) | 2023.10.19 |