본문 바로가기
스파르타 내배캠

[TIL] #3. 연산자, 반복문, 배열, 컬렉션

by saemsaem 2024. 4. 23.


 

 [ Java 문법 종합반 2주차 ] 

[ 연산자 ]                                                                                                                                                                                                                                    

삼항연산자

: 비교 연산의 결과값에 따라 응답할 값을 직접 지정할 수 있는 연산자

(조건) ? (참결과) : (거짓결과)

 

instance of 연산자

: 피연산자가 클래스의 객체인지 비교하는 연산자

(객체명) instance of (클래스명)

 

비트 연산

  • 왼쪽 : x2
  • 오른쪽 : /2

 

[ 반복문 ]                                                                                                                                                                                                                                    

if vs. switch

차이점 1. if문은 복합 조건을 지원한다 / switch문은 피연산자 한개에 대한 조건만 지원한다
차이점2. if문은 상대적으로 코드중복이 많다 / switch문은 코드중복이 적다

continue

하위 로직을 생략하고, 다음 조건으로 넘어감

 

[ 배열 ]                                                                                                                                                                                                                                    

복사

  • 얕은 복사 : 주소값만 복사되고, 실제값은 1개로 유지되는 것.
    ⇒ 똑같은 값을 가지게 되는게 아니라, 같은 값을 바라봄!!
  • 깊은 복사
    • 방법1. 반복문을 통해 값을 하나씩 꺼내서 새로운 배열을 생성
    • 방법2. 메서드 사용But, 2차원 이상 배열에서는 얕은 복사로 동작함
int[] a = {1,2,3};
int[] b = a.clone();
    • 방법3. Arrays 메서드 사용
int[] a = {1,2,3};
int[] b = Arrays.copyOf(a, a.length);

 

 

[ 컬렉션 ]                                                                                                                                                                                                                                    

  • 참조형 변수를 저장함
  • .size() 로 타입목록의 길이 조회 가능

List

: 순서가 있는 데이터의 집합
배열은 정적이지만, List는 길이를 몰라도 만들 수 있는 동적

  • ArrayList : 배열처럼 일렬로 데이터 저장, 조회 / 크기 정해져 있지 않고, 필요할 때마다 크기 늘어남
ArrayList<Integer> intList = new ArrayList<>(); //선언

intList.add(1); //'1' 값 추가
intList.set(0, 2); //0번째 값을 '2'로 수정
intList.get(0); //0번째 값 조회
intList.remove(0) //0번째 값 삭제 (뒤의 값들이 빈 곳을 채움)
intList.toString(); //전체 값을 대괄호로 묶어서 출력
  • LinkedList : 실제 값을 여기저기 담아두고, 그 주소값으로 목록을 구성하고 저장함
    • 조회하는 속도가 느리지만, 값을 중간에 추가하거나 삭제하는 속도는 빠름
    • 선언 및 조회 등은 ArrayList와 동일함

 

Set

: 순서가 없고 중복이 없는 데이터의 집합

Set<Integer> intSet = new HashSet<>(); //선언 : 생성자가 없는 인터페이스

intSet.add(1); //'1' 값 추가
intSet.remove(1); //'1' 값 삭제
intSet.contains(1); //'1'이 있는지 확인 (T/F)
//하나씩 접근하기 위해서 iterator 필요
Set<String> sets = new HashSet<String>();
sets.add("A");
sets.add("B");
sets.add("C");
sets.add("D");

Iterator<String> it = sets.iterator();
while(it.hasNext()) {
	String str = it.next();
	System.out.println(str);
}

 

Map

: key - value 구조로 구성된 데이터

  • key값은 중복될 수 없음
  • key값을 기준으로 value를 조회할 수 있음
Map<String, Integer> intMap = new HashMap<>(); //선언 : <key타입, value타입>

intMap.put ("첫번째", 11);
intMap.put ("첫번째", 12); //"첫번째"에 대한 value는 '12'로 덮어쓰여짐
intMap.get ("첫번쩨"); //key="첫번째" 인 값을 조회함