1. 연산자와 피연산자
계산할때 계산의 대상이 되는것이 피연산자 이며,계산의 목적이 되는것이 연산자이다.
연산자=> +,-,*,/등등 피연산자:연산자로 인해 계산되는 값
2. 연산자의 종류↓
연산자 우선순위는=> 산술 > 비교 > 논리 > 대입
3. 삼항연산자
비교연산자와 항상 함께 쓰인다. 형태는=> 조건 ? 참 : 거짓
ex) ex) int x=3, int y=5이고 int max = (x>y)? x:y; 프린트문으로 max를 출력해보면 x는 y보다 작아서 거짓이니 5가 출력
( 파이썬은 (참의결과값) if 조건 else (거짓 결과값) )
*삼항 연산자 참거짓 결과값에 문자열 포맷팅 하는 방법은 String.format() 이거다
ex) String check = (num >= 120) ? String.format("키가 %dcm 이므로 탑승 가능합니다.", num) : "탑승 불가능";
참일경우 check 변수에 "키가 %dcm 이므로 탑승 가능합니다."가 대입된다. %d부분은 당연 num변수값이 대입되고
4. 산술변환
ex) ↓ 이렇게 작은 타입이 큰타입으로 변환되면서 연산한다.
5. 비트 연산
ex) ↓
6. equals() , == 차이점
첫번째: a="1234" ,b="1234" 이런경우 == 나 equals() 로 비교하면 다 참이 나오는데
두번째: a= new String("1234") , b= new String("1234") 일경우 equals()는 참 == 는 거짓이 나온다.
왜냐하면 첫번째의 경우엔 a가 "1234"를 참조하는데 b도 똑같이 "1234"니 b보고 a가 참조하는거 너도 똑같이 참조해라 해서 같은 곳을 가리키는중이고,
두번째는 new 때문에 문자열은 같아도 메모리에 서로 다른곳에 각각 있어서 서로 다른곳 참조해서 그렇다.
equals()는 걍 문자열 자체만 비교하고, == 는 참조하는곳의 주소 비교
*추가로 equals() 사용방법은 이렇게 Objects.equals(a,b) 나 a.equls(b) 사용 할 수 있다.
7. 배열에서 예를들어 int[] a = new int[5]; 이렇게 있을시 ↓ 이라한다.
int[] a 부분은 선언
new int[5]; 부분은 생성
배열들을 생성할때 타입별로 초기값이 정해져있다.
int는 초기값이 모두 0 , boolean은 false, string은 null 이렇게 초기값이 정해져 있다.
*배열의 주소를 모두 같은 값으로 초기화 하는 방법
intarr배열은 현재 1,2,3,4,5 들어있는데 밑에 방법으로 하면 배열안 값들이 다 1로 바뀐다.
8. 얕은복사,깊은복사
일단 ' = ' 는 주소를 복사하는거다.
그래서 예를들어 int[] arr1 = {1,2,3}; 이있고 int[] arr2 = arr1; 이렇게 하면 arr2는 arr1의 {1,2,3}주소를 복사하고 있는
상태라 arr2의 0번째 값을 변경하면 arr1의 배열값에도 영향가서 arr1의 0번째값도 똑같이 바뀐다.
이런 상황을 얕은 복사!
이런 상황을 방지하기 위해 깊은 복사를 사용하는데 3가지 방법 이 있다.
첫번째는 귀찮게 for문으로 arr1을 다 순회함과 동시에 arr2의 같은 인덱스 위치에 하나하나 넣어주는게 있고
두번째는 편한방법인 clone() 메소드 사용한다. => int[] arr2 = arr1.clone();
하지만 1차원 배열에서만 가능!! 2차원 이상 배열에서는 얕은 복사로 된다
그래서 결론적인 세번째 방법은
int[] arr2 = Arrays.copyOf(arr1,arr.lengtg); //배열과 함께 배열의 크기도 넣어준다.
9. String -> char[] 변환 , char[] -> String 변환 방법
10. 2차원 배열의 각 배열 크기를 다르게 할때 ↓
11. 컬렉션은 기본형 변수가 아닌 참조형 변수를 저장한다
12. 링크드 리스트는 메모리에 남는 공간을 요청해서 여기저기 나눠서 실제 값을 담아두고,
실제 값이 있는 주소값으로 목록을 구성하고 저장하는 자료구조!
(조회는 느린편,값을 추가하거나 삭제할때는 빠르다)
13. stack 이랑 queue 의 함수들
추가,삭제는 다르고 첫번째값 접근,크기,전부 초기화,포함여부는 공통적으로 peak(),size(),clear(),contains() 같다.
(추가로 Queue는 생성자가 없는 인터페이스이다)
14. set은 Hashset,Treeset등으로 응용해서 같이 사용 가능하고,set은 생성자가 없는 껍데기라 바로 생성할 수 없다.
그래서 Hashset을 이용해서 set을 구현할 수 있다.
15. length vs length() vs size()
'Java' 카테고리의 다른 글
Java_5주차-(1) (0) | 2023.10.16 |
---|---|
Java_4주차 (0) | 2023.10.16 |
Java_3주차-(2) (0) | 2023.10.13 |
Java_3주차-(1) (0) | 2023.10.13 |
Java_1주차 (0) | 2023.10.12 |