학습 내용
연산자
산술연산자
비트연산자
- <<, >> 방향으로 bit 자릿수 옮기기
- 3 << 2 = 12
3 -> 11
11+00
1100 = (2^0 + 2^1) + 2^2 + 2^3 = 12
- 3 << 1 = 6
110 = (2^0) + 2^1 + 2^2 = 6
비교연산자
논리연산자
- 비교 연산의 결과값으로 받을 수 있는 boolean 값을 연결하는 연산자
- 조건을 연결 하였을 때 boolean 값들을 조합하여 참 또는 거짓 값인 boolean 값 출력
- && : 둘 다 true -> true, 둘 다 false -> false
- || : 둘 중 하나만 true -> true, 둘 다 false -> false
대입연산자
- 변수를 바로 연산해서 그 자리에서 저장하는(대입하는) 연산자
- = (기본연산자)
- +=, -=, *= ... (복합대입연산자)
- ++ : += 1 / -- : -= 1
public class W06 {
public static void main(String[] args) {
int a = 10;
int b = 10;
int val = ++a + b--;
System.out.println(val);
}
}
기타연산자
형변환 연산자
int iNum = 93 + (int)98.8;
System.out.println(iNum);
double dNum = (double)93 + 98.9;
System.out.println(dNum);
삼항연산자
- 비교연산자와 항상 함께 쓰인다
- 조건 ? 참 : 거짓
instance of
- 피연산자가 조건에 명시된 클래스의 객체인지 비교하여 맞으면 true, 틀리면 false
연산자 우선순위
산술 > 비교 > 논리 > 대입
배열
생성
int[] intArray = new int[3];
boolean[] boolArray = new boolean[3];
String[] stringArray = new String[3];
String 배열
- length()
- charAt(int index)
- equals(String str)
컬렉션
List
- 순서가 있는 데이터의 집합 => Array(최초 길이 알아야 함)
- 처음에 길이 몰라도 만들 수 있음
- 동적 배열 (크기 가변적으로 늘어남)
- 생성 시점에 작은 연속된 공간을 요청해서 참조형 변수들 담아놓는다
- 값이 추가될 때 더 큰 공간 필요하면 더 큰 공간 받으면 된다
ArrayList
-
선언 + 생성
ArrayList< Integer> intList = new ArrayList< Integer>();
-
값 변경
intList.set(1, 10); // 2번째에 있는 값 바꾸기
-
값 삭제
intList.remove(0);
-
값 추가
intList.add({추가할 값})
-
값 수정
intList.set({수정할 순번}, {수정할 값})
-
전체 제거
intList.clear()
LinkedList
- 메모리에 남는 공간을 요청해서 여기 저기 나누어서 실제 값을 담아놓음
- 실제 값이 있는 주소값으로 목록을 구성하고 저장하는 자료구조
- 조회 속도 느림 System.out.println(linkedList.toString());
- 값 추가, 삭제 빠름
linkedList.add(index, element);
linkedList.remove(index);
Stack
- 수직으로 값 쌓아놓고, 넣었다가 뺀다.
- push, peek, pop
intStack.push(item);
intStack.peek();
intStack.pop();
- 최근 저장한 데이터를 나열하고 싶거나, 데이터의 중복 처리 막고 싶을 때 사용
- 선언 + 생성
Stack< Integer> intStack = new Stack< Integer>();
Queue
- FIFO
- add, peek, poll
- 생성자가 없는 인터페이스
- 선언 + 생성
Queue< Integer> intQueue = new LinkedList<>();
Set
- 순서, 중복 X
- Set -> 그냥 쓸 수도 있음. 그러나 HashSet, TreeSet 등으로 응용해서 같이 사용 가능
- Set은 생성자가 없는 껍데기라서 바로 생성할 수 없음
- 생성자가 존재하는 HashSet을 이용해서 -> Set을 구현해 볼 수 있음
- contains() 메서드
true/false
Map
- key - value 쌍
- key 라는 값으로 unique 하게 보장 되어야 함
- HashMap, TreeMap으로 응용
- 선언 + 생성
Map<String, Integer> intMap = new HashMap<>();
- key 값
intMap.put("일", 11);
for(String key : intMap.keySet()) {
System.out.println(key);
}
for(Integer value: intMap.values()) {
System.out.println(value);
}
회고
연산자 부분은 사소하다고 생각할 수도 있지만 많이 헷갈릴 수 있는 부분이라 기초 지식을 확실히 다져야겠다.
컬렉션 부분이 앞으로 많이 사용하고 중요한 부분일 것 같은데 각 컬렉션의 특징과 선언 방법 등에 대해 잘 알아둬야겠다.