자바의 연산자
- 연산자와 피연산자를 알고 있어야 한다
- 연산자의 우선 순위는 산술 > 비교 > 논리 > 대입 순서이니 잘 기억하자. → 혹시나 () 괄호가 있다면 괄호안의 연산이 먼저 일어난다.
- 연산자 종류
- 산술 → +, -, *, /, %, <<, >> 가 있는데 <<와 >> 는 비트 연산자라 한다.
- 비교 → >, < , <=, >=, ==, !=가 있고 작은 것과 큰것, 같은것과 다른것을 비교한다.
- 비교하는 것이라서 true / false를 반환하게 된다.
- 논리 → &&, ||, ! 가 있고 조건을 걸때 사용한다.
- 대입 → =, ++, -- 가 있고 변수에 값을 저장하거나 증감과 감소를 나타낼 때 사용한다.
- +=, -= *= 등을 사용할수 있다.
- 사용할 때는 피연산자의 앞 혹은 뒤에 붙이는 것에 따라 연산의 결과값이 달라지므로 적용을 잘해야 한다.
- 기타 연산자 - 형변환 연산자, 삼항 연산자, instance of 연산자가 있다.
자바의 조건문과 반복문
- if 문
- if (조건) → 괄호 안의 조건이 참이면 해당 중괄호의 코드를 실행한다.
- 조건은 한가지가 아닌 여러가지 조건을 지정할 수도 있다.
// 기본 사용 예시 1
boolean flag = false;
if(flag){
System.out.println("값이 true 입니다.");
} else {
System.out.println("값이 false 입니다.");
}
// 기본 사용 예시 2 - else if 같이 사용하기
int number = 2;
if(number == 1){
System.out.println("number 값은 1 입니다.");
} else if (number == 2) {
System.out.println("number 값은 2 입니다.");
} else {
System.out.println("number 값은 모르는 값입니다.");
}
// 기본 사용 예시 3 - 중첩 if 문
boolean flag = false;
int number = 2;
if(flag){
if (number == 1) {
System.out.println("flag는 true이고 number값은 1입니다.");
} else if (number == 2) {
System.out.println("flag는 true이고 number값은 2입니다.");
} else {
System.out.println("flag는 true이고 number값은 모르겠습니다.");
}
} else {
if (number == 1) {
System.out.println("flag는 false이고 number값은 1입니다.");
} else if (number == 2) {
System.out.println("flag는 false이고 number값은 2입니다.");
} else {
System.out.println("flag는 false이고 number값은 모르겠습니다.");
}
}
- swith / case 문
- if 문 과는 다르게 조건을 1개만 지정 할 수 있어서 필요에 따라 써야 한다.
- 장점이라 한다면 if 문 보다는 코드 중복이 적다는 점...
// 기본 사용 예시
int month = 8;
String monthString = "";
// switch 안에 조건을 걸고 case에서 조건을 만족하면 해당 코드를 실행한다.
switch (month){
case 1:
monthString = "1월";
break;
case 2:
monthString = "2월";
break;
case 3:
monthString = "3월";
break;
case 4:
monthString = "4월";
break;
case 5:
monthString = "5월";
break;
case 6:
monthString = "6월";
break;
case 7:
monthString = "7월";
break;
case 8:
monthString = "8월";
break;
case 9:
monthString = "9월";
break;
case 10:
monthString = "10월";
break;
case 11:
monthString = "11월";
break;
case 12:
monthString = "12월";
break;
default:
monthString = "알수 없음";
}
System.out.println(monthString); // 결과는 8월
- for 문
- for( 초기값; 조건문; 증가연산) → 이렇게 써줘야 한다.
- 초기값 부터 조건에 걸리기 까지 연산을 수행하는데 반복 할때마다 증가연산이 적용된다. → 감소도 쓸 수 있다.
// 기본 사용 예시
for(int i = 0; i < 10; i++){
System.out.println("i : " + i);
if(i == 2){ // 조건문도 걸어보기
break;
}
for(int j = 0; j < 10; j++){
System.out.println("j : " + j );
if(j == 2){
break;
}
}
}
- while 문 / do-while 문
- for 문과 비슷하지만 사용할 때 초기값을 설정하지 않고 조건만 써주면 된다.
- while문은 do-while문 형태로도 사용이 가능하다. 차이점은 while문은 조건을 만족해야지만 반복 실행이 되는데 do-while은 최초 1회를 실행 하고 난 후 반복 실행에 대해서는 조건이 맞는지 체크하고 실행한다.
- while 문과 do-while문은 반복 할 때 마다 조건에 맞는지 체크하고 false이면 중단이 된다.
// while 기본 사용 예시
int number = 0;
while(number < 3){
number++;
if(number == 2){
continue;
}
System.out.println(number + "출력");
}
// do-while 기본 사용 예시
int number = 4;
do {
System.out.println(number + "출력");
} while(number < 3);
- 반복문 명령어
- 반복문을 중단하기 위해서는 반복문 안에 break 명령어를 호출한다.
- 반복문에서 코드를 실행하지 않고 넘기고 싶을 때 continue 명령어를 호출한다.
자바의 배열
- 선언하기 → 타입[] 변수명 → int[] array
- 생성하기 → new 타입[배열의 개수] → new [4]
- 최종 형태 → int[] array = new int[4]; → array라는 변수명을 가진 정수형 배열을 선언하고 배열의 크기를 4로 지정한다.
- 배열은 타입별로 초기값이 지정되어 있는데 int는 0, boolean은 false, String은 null이다.
- 배열은 [ ] 대괄호가 하나면 1차원 배열, [ ][ ] 대괄호가 2개면 2차원 배열이다
자바의 컬렉션
- List
- 순서가 있는 데이터 집합이라 Array와 비슷하다. → ArrayList로 사용한다.
- 차이점은 Array는 배열의 길이를 알아야한다. → 그래야 초기화 할 수 있다.
- Array는 정적 배열이고 List는 동적배열이다. → 동적 배열이라 크기가 늘어나면 새로 또 공간을 받아서 사용하면 된다.
- Linked List
- 메모리에 남는 공간을 요청하고 이곳 저곳에 실제 값을 담는다.
- 실제 값이 있는 주소값으로 목록을 구성하고 저장한다.
- 값을 추가하고 삭제하는 것은 빠르지만 조회할때는 이곳 저곳에 저장했기 때문에 느리다.
- Stack
- FILO 구조로 먼저 넣은 값이 먼저 나오지 않고 나중에 나온다.
- 최근 저장된 값을 나열하고 싶을 때나 데이터의 중복을 막고 싶을 때 사용한다.
- 2023.07.26 - [스터디일지] - [2023.07.26] StringTokenizer / Queue & Deque / Stack
- Queue
- FIFO 구조로 먼저 넣은 값이 Stack과는 반대로 먼저 나온다.
- Queue는 생성자가 없어서 생성할 때는 Linked List로 생성한다. → Queue<Integer> intQueue = new LinkedList<>();
- Set
- 집합과 비슷한다. → 순서가 없고 중복을 허용하지 않는다.
- TreeSet, HashSet등 응용하여 사용가능하다.
- 생성자가 없어서 바로 생성 할 수 없다.
- Set<Integer> intSet = new HashSet<>(); → 이렇게 선언하고 생성할 수 있다.
- Map
- Key와 Value가 쌍으로 들어간다.
- Key는 Unique 하고 Value는 그렇지 않다.
- HashMap과 TreeMap으로 응용이 가능하다
- Map<String, Integer> intMap = new HashMap<>(); → 이렇게 선언하고 생성이 가능하다.
'스터디일지 > JAVA' 카테고리의 다른 글
[2023.08.17] 자바 3주차 과제 - 계산기 만들기 (0) | 2023.08.17 |
---|---|
[2023.08.15 ~ 16] 자바 문법 3주차 강의 (0) | 2023.08.16 |
[2023.08.14] 자바 1주차 문법 강의 (0) | 2023.08.14 |
[2023.08.01] 자바 객체 지향 프로그래밍 (0) | 2023.08.01 |
[2023.07.31] 자바의 예외 처리 (0) | 2023.07.31 |