반응형
[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(조건)
- if문 또는 else if문, else 문 안에 if 문을 넣어 중첩하여 사용
- 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 명령을 수행
📂 배열
- 선언
- 타입[] 변수; ➡️ int[] intArr;
- 타입 변수[] ; ➡️ int intArr[];
- 생성
- 배열(Array)은 참조형 변수들처럼 new 명령을 통해 생성하며 대괄호[] 안에 크기 지정
- 배열 순번은 0부터 시작하며 초기값으로 초기화되어 채워짐
- 순회
- 배열 안에 담겨있는 변수들을 하나씩 꺼내서 사용하는 것
- 해당 배열변수 뒤에 순번을 대괄호[]로 감싸서 명시 ➡️ System.out.println(intArr[3]);
- 초기화
- 중괄호{} 사용해서 초기화
- 반복문 for문을 사용해서 초기화
- 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()
- ArrayList
- 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값)
반응형
'개발 > TIL' 카테고리의 다른 글
[TIL][VSCode] html 확장자 인식 안됨 - html ➡️Django (0) | 2024.05.21 |
---|---|
[TIL]방법론 스터디_TDD 테스트 예제 & [failed to load applicationcontext] 에러 & [Error creating bean with name] 에러 (0) | 2024.05.20 |
[TIL]방법론스터디_주문요청 API & JPA console 설정 (0) | 2024.05.16 |
[TIL]TDD스터디_Test 메소드 접근제어자(Public) & Record 클래스 타입 (0) | 2024.05.14 |
[TIL]JAVA사전스터디_기본형 변수, 참조형 변수, 형변환 (0) | 2024.05.08 |