본문 바로가기
개발/TIL

[TIL]JAVA사전스터디_연산자, 조건문, 반복문, 배열, 컬렉션

by 반비🥰 2024. 5. 8.
반응형

 

 

 

 

[TIL]JAVA사전스터디_기본형 변수, 참조형 변수, 형변환

📌 자바 개발 환경JRE(Java Runtime Environment): 자바 실행 환경으로 JRE(JVM)만 있다면 Java 프로그램을 실행만 시킬 수 있음: .class파일만 실행 가능 JDK(Java Development Kit): 자바 개발 키트로, JRE(JVM)의 기능

success-notes.tistory.com


 

 

📂 연산자


  • 산술 연산자
    • 사칙 연산 및 비트연산
    • +(덧셈), -(뺄셈), *(곱셈), /(나눗셈/몫), %(나눗셈/나머지)
  • 비교 연산자
    • 값을 비교하여 참(true)/거짓(false)을 반환
    • >(크다), <(작다), >=(크거나 같다), <=(작거나 같다), ==(같다), !=(다르다)
  • 논리 연산자
    • 조건을 연결했을 때의 boolean 값들을 조합하여 참(true)/거짓(false) 값인 boolean을 반환
    • &&(AND = 모두 참), ||(OR = 둘 중 하나라도 참), !(반대 boolean 값)
  • 대입 연산자
    • 기본 대입 연산자인 ' = '와 다른 연산을 함께 쓰는 복합 대입 연산자(+=, -=, *=, /= ...)
📢 대입 연산자 중 증감 연산자 쓸 때 주의사항
- ++ 또는 --를 붙이면 피연산자가 1 더해지거나 1 빼기가 됨
- 앞에 ++/--을 붙이면 1 증감 후 계산되고, 뒤에 ++/--을 붙이면 계산 후, 1이 증감됨
  • 기타 연산자
    • 형변환 연산자
      • 괄호 안에 변환할 타입을 넣으면 피연산자의 타입이 변경됨
    • 삼항 연산자
      • 비교 연산의 결과 값에 따라 응답할 값을 직접 지정할 수 있는 연산자
      • 조건/참결과/거짓결과로 구성
      • (조건) ? (참결과) : (거짓결과)
    • instance of 연산자
      • 피연산자가 조건에 명시된 클래스의 객체인지 비교하여 참/거짓을 응답해 주는 연산자
      • (객체명) instance of (클래스명)
  • 연산자 우선순위
산술 > 비교 > 논리 > 대입
- 단, 괄호로 감싸면 괄호 안의 연산이 최우선순위로 계산
  • 산술변환
    • 연산 전에 피연산자의 타입을 일치시키는 것
    •  short ➡️int
    • int, short ➡️long 
    • long, int, short ➡️float
    • float, long, int, short ➡️double 
  • 비트연산
    • Bit의 자리수를 옮기는 것
    • >>, <<

 

📂조건문 & 반복문


[ 조건문 - if, switch ]

  • if문
    • if(조건)
      • 특정 조건에 따라 다른 연산을 수행하고 싶을 때, 사용하는 문맥
      • if(조건){ 연산 }로 조건이 boolean 값 true를 만족하면 중괄호{} 안의 연산 수행
    • if(조건) - else
      • if문이 거짓일 경우 else { 연산 } 형태로 사용
    • if(조건) - else if(조건)
      • if문 조건이 거짓일 경우에 다시 한번 다른 조건으로 체크해서 참일 경우에 연산을 수행하기 위해
        if(조건){ 연산 } else if(조건){ 연산 } 형태로 사용
    • 중첩 if(조건)
      • if문 또는 else if문, else 문 안에 if 문을 넣어 중첩하여 사용
  • switch(피연산자) / case(조건)
    • switch(피연산자) { case(조건) : (연산) } 형태로 사용
    • case(조건) : (연산)은 여러 개 설정 가능, 각 연산 마지막에는 break;를 넣어 case의 연산문 끝을 알려 switch문 종료
    • default : (연산)을 명시해 주어 case 조건이 모두 만족하지 않을 시, 수행할 연산 지정
if문 VS switch문
1) 복합조건
    - if문은 복합조건을 지원하지만 switch문은 피연산자 한 개에 대한 조건만 지원 
2) 코드 중복
    - if문은 상대적으로 코드중복이 많은 반면, switch문은 코드중복이 적음

 

 

[ 반복문 - for, while, do-while ]

  • for문
    • 특정 조건에 따라 연산을 반복적으로 수행하고 싶을 때, 사용
    • for( 초기값 ; 조건문 ; 증가연산 ) { (연산) } 형태
  • 향상된 for문
    • for 소괄호 값을 2개로 줄여주는 방법
    • 연속된 변수목록을 출력할 때 사용
    • for( 변수타입 변수명 : 목록변수) { (연산) }
    • 목록변수 = 배열
int[] numbers = {3,6,9,12,15,18,21};
for(int num : numbers){
    System.out.print(num + " ");
 }
 
 // 출력
 3 6 9 12 15 18 21
  • while & do-while 문
    • 특정 조건에 따라 연산을 반복해서 수행하고 싶을 때 사용
    • 조건문만 명시하여 반복
    • while(조건문) { (연산) } ➡️ while문
      • while문으로 사용하면 조건문을 만족해야지만 연산이 반복 수행됨
    • do { (연산) } while(조건문) ➡️ do-while문
      • 최초 1회 연산수행 후 조건문을 체크하여 더 반복할지 결정
  • break 명령
    • 가장 가까운 블록의 for문 또는 while문, switch문을 중단
  • continue 명령
    • for문 또는 while문에서 해당 순서를 패스하고  싶을 때 continue 명령을 수행

 

📂 배열


 

  • 선언
    1. 타입[] 변수; ➡️ int[] intArr;
    2. 타입 변수[] ; ➡️ int intArr[];
  • 생성
    • 배열(Array)은 참조형 변수들처럼 new 명령을 통해 생성하며 대괄호[] 안에 크기 지정
    • 배열 순번은 0부터 시작하며 초기값으로 초기화되어 채워짐
  • 순회
    • 배열 안에 담겨있는 변수들을 하나씩 꺼내서 사용하는 것
    • 해당 배열변수 뒤에 순번을 대괄호[]로 감싸서 명시 ➡️ System.out.println(intArr[3]);
  • 초기화
    1. 중괄호{} 사용해서 초기화
    2. 반복문 for문을 사용해서 초기화
    3. Arrays.fill 메소드를 사용해서 초기화
public class Main{
  // 1. {}에 대입해서 선언
  int[] intArray = {1,2,3,4,5};
  String[] StrArray = {"A", "B", "C"};
  
  // 2-1. for문
  for(int i = 0; i<intArray.length; i++){
    intArray[i] = i;
  }
  
  //2-2. 향상된 for문
  for(int i : intArray){
     System.out.print(i);
  }
  
  //3. 배열의 주소를 모두 같은 값으로 초기화
  Arrays.fill(intArray, 1);
}
  • 복사
    • 얕은 복사
      • 대입연산자(=)를 사용해서 복사하게 되면 주소값만 복사
      • 복사된 값이 변경되면 다른 변수에 영향을 줌
    • 깊은 복사
      • 반복문 for문을 통해서 하나씩 꺼내서 복사해 주는 방법
      • 복사된 값이 변경돼도 영향이 없음

 

📂 컬렉션


Collection : 배열보다 다수의 참조형 데이터를 더 쉽고 효과적으로 처리할 수 있는 기능

 

[ 컬렉션 종류 ] 

  • List : 순서가 있는 데이터의 집합(데이터 중복 허용) - 배열과 비슷
    • ArrayList
      • 배열처럼 크기가 정해져 있지 않고 필요할 때마다 크기가 점점 늘어남
      • 기능
        • 선언 : ArrayList<Integer> intList
        • 생성 : new ArrayList<Integer>();
        • 값 추가 : intList.add(추가할 값);
        • 값 수정 : intList.set(수정할 순번, 수정할 값);
        • 값 삭제 : intList.remove(삭제할 순번);
        • 전체 출력 : intList.toString()
        • 전체 제거 : intList.clear()
    • LinkedList
      • 메모리에 남는 공간을 요청해서 여기저기 나누어 실제값을 담아놓고, 실제값이 있는 주소값으로 목록을 구성하고 저장
      • 특징
        • 조회 속도가 느리지만 값을 중간에 추가하거나 삭제할 때 속도는 빠른 편
      • 기능
        • 선언 : LinkedList<Integer> linkedList
        • 생성 : new LinkedList<Integer>();
        • 값 추가 : linkedList.add(추가할 값)
        • 값 중간에 추가 : linkedList.add(추가할 순번, 추가할 값)
        • 값 수정 : linkedList.set(수정할 순번, 추가할 값)
        • 값 삭제 : linkedList.remove(삭제할 순번)
        • 전체 출력 : linkedList.toString()
        • 전체 제거 : linkedList.clear()
  • Stack
    • 값을 수직으로 쌓아놓고 넣었다가 배서 조회하는 형식으로 데이터를 관리
    • 특징
      • push() : 값을 넣는 기능, peek() : 조회 기능, pop() : 값을 꺼내는 기능
      • 최근 저장된 데이터를 나열하거나 데이터의 중복처리를 막고 싶을 때 사용
      • Last In First Out
    • 기능
      • 선언 : Stack<Integer> intStack 
      • 생성 : new Stack<Integer>();
      • 추가 : intStack.push(추가할 값)
      • 조회 : intStack.peek()
      • 꺼내기 : intStack.pop() //꺼내고 나면 삭제됨
  • Queue
    • 한쪽에서 데이터를 넣고 반대쪽에서 데이터를 뺄 수 있는 집합
    • 특징
      • First In First Out(FIFO)
      • add() - 값 추가, peek() - 값 조회, poll() - 값 꺼내기
      • 생성자가 없는 껍데기라서 바로 생성할 수 없음
      • LinkedList를 사용해서 Queue 생성해서 받음
    •  기능
      • 선언 : Queue<Integer intQueue
      • 생성 : new LinkedList<Integer>();
      • 추가 : intQueue.add(추가할 값)
      • 조회 : intQueue.peek()
      • 꺼내기 : intQueue.poll()
// Queue가 부모, LinkedList가 자식
Queue<Integer> intQueue = new LinkedList<Integer>();
  • Set
    • 순서가 없는 데이터의 집합(데이터 중복 허용 안함) - 순서 없고 중복 없는 배열
    • 특징
      • 생성자가 존재하는 클래스인 HashSet을 사용하여 Set을  생성해서 받을 수 있음
      • 순서가 보장되지 않는 대신 중복을 허용하지 않도록 유지할 수 있음
    • 기능
      • 선언 : Set<Integer> intSet
      • 생성 : new HashSet<Integer>();
      • 추가 : intSet.add(추가할 값)
      • 조회 : intSet.get(조회할 순번)
      • 삭제 : intSet.remove(삭제할 값)
      • 포함확인 : intSet.contains(포함확인 할 값)
HashSet : 가장 빠르며 순서를 전혀 예측할 수 없음
TreeSet : 정렬된 순서대로 보관하며 정렬 방법을 지정할 수 있음
LinkedHashSet : 추가된 순서, 또는 가장 최근에 접근한 순서대로 접근 가능
  • Map
    • 순서가 없는(Key, Value)쌍으로 이루어진 데이터의 집함(Key값 중복허용 X)
    • 특징
      • key-value 형태로 저장하기 때문에 key값을 기준으로 value를 조회
      • key값은 중복 허용X
      • HashMap, TreeMap 등으로 응용해서 사용가능
    • 기능
      • 선언 : Map<String, Integer> intMap
      • 생성 : new HashMap();
      • 추가 : intMap.put(추가할 key값, 추가할 value 값)
      • 조회 : intMap.get(조회할 key값)
      • 전체 key 조회 : intMap.keySet()
      • 전체 value 조회 : intMap.values()
      • 삭제 : intMap.remove(삭제할 key값)
반응형