본문 바로가기
내일배움캠프(Sparta)/자바 문법 종합

[Java] 연산자 / 배열 / 컬렉션

by mmm- 2023. 10. 25.

   연산자

연산자 종류

  • 산술 연산자, 비교 연산자, 논리 연산자, 대입 연산자, 기타 연산

 

연산자 우선순위

: 산술 > 비교 > 논리 > 대입

  • 괄호로 감싸준 연산은 최우선순위

   비트 연산

: Bit의 자리수를 옮기는 것

  • 연산중에 가장 빠름 (bit가 컴퓨터에서 가장 작은 단위이기 때문에)
  • << (왼쪽으로 자리수 옮기기), >> (오른쪽으로 자리수 옮기기)
  • 0, 1은 2진수 값이기 때문에,
    • 왼쪽으로 옮긴 횟수만큼 2로 곱하는 것과 동일
    • 오른쪽으로 옮긴 횟수만큼 2로 나누는 것과 동일

   배열

배열 초기화 방법 3가지

  1. 중괄호를 사용해 초기화
    // 특정값 대입해서 선언
    int[] intArray = {1, 2, 3, 4, 5};
    String[] stringArray = {"a", "b", "c", "d"};​
  2. for문을 사용해 초기화
    // 반복문을 통해 초기화
    for (int i = 0; i < intArray.length; i++) {
    	intArray[i] = i;
    }
    
    for (int i : intArray) {
    	System.out.print(i); // 01234
    }​
  3. 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
      : 메모리에 남는 공간을 요청해 실제 값을 여기저기 나눠 담은 후, 실제 값에 대 주소값으로 목록 구성해 저장하는 자료구조
      • 조회하는 속도가 느리지만 추가, 삭제시에는 빠름
  • 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