오늘 한일
java 문법 강의듣기.
오늘 배운것
산술 연산자
+ - * / % << >>
사칙 연산과 비트연산
비교 연산자
> < >= <= == !=
크고 작음과 같고 다름을 비교
논리 연산자
&& || !
그리고(AND)와 또는(OR) 으로 조건을 연결
대입 연산자
= ++ —-
우변의 값을 좌변에 저장, 연산 복합 대입
기타 연산자
(type), ? :, instance of
형변환 연산자, 삼항 연산자, instance of 연산자
// 대입 증감 연산자
public class Main {
public static void main(String[] args) {
int a = 10;
int b = 10;
int val = ++a + b--; // a 는 연산전에 +1, b 는 연산후에 -1
System.out.println(a); // 11
System.out.println(b); // 9
System.out.println(val); // 21
// 11 + 9 가 왜 21이 나오는거죠??
// 그 이유는
// a 는 val 연산전에 ++ 가 수행되어서 11로 연산되었지만
// b 는 val 연산후에 -- 가 수행되어서 기존값이 10으로 연산된 후 -- 가 수행되었습니다.
// 따라서 연산된 a값인 11과 연산되기전 b값인 10이 더해져서 21이 된겁니다!
int c = a--; // c 에 a 값 대입 후 a-1 (즉, a=10, c=11)
int d = ++b; // b 값 +1 후에 d 에 대입 (즉, b=10, d=10)
int val = c-- * ++d; // c 는 연산후에 -1, d 는 연산전에 +1
System.out.println(a); // 10
System.out.println(b); // 10
System.out.println(c); // 11
System.out.println(d); // 10
System.out.println(val); // 11 * 11 = 121
// 11 * 10 이 왜 121이 나오는거죠??
// 그 이유는
// c 는 val 연산후에 -- 가 수행되어서 기존값이 11로 연산된 후 -- 가 수행되었지만
// d 는 val 연산전에 ++ 가 수행되어서 11로 연산되었습니다.
// 따라서 연산전 a값인 11과 연산된 b값인 11이 곱해져서 121이 된겁니다!
}
}
📌 Java 프로그래밍에서 특정 조건에 따라 다른 연산을 수행하고 싶을 때 **조건문을** 사용합니다.
또는, 특정 조건에 따라 반복해서 동일한 연산을 수행하고 싶을 때 **반복문을** 사용합니다
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
System.out.println("A입력 : ");
String aHand = sc.nextLine();
import java.util.Objects;
Objects.equals(a,b) a,b가 같으면 true 아니면 false
📌switch 문은 case 문과 함께 사용하며 if문 보다 좀 더 가독성이 좋은 조건문 표현식입니다.
각 case의 연산문 마지막에는 break;를 꼭 넣어줘야 합니다!!
switch문 중괄호 안의 제일 마지막에 default: (연산) 을 명시해 주어 case 조건들이 모두 만족하지 않을 때 수행할 연산을 정해주어야 합니다.
if 문과 switch 문
- 차이점1. 복합 조건
- if 문은 복합 조건을 지원합니다.
- 복합 조건 : 괄호`()`안에 조건 여러 개를 지정하여 조건문을 수행할 수 있습니다.
- switch 문은 피연산자 한 개에 대한 조건만 지원합니다.
- 차이점2. 코드 중복
- if 문은 상대적으로 코드 중복이 많습니다.
- switch 문은 코드 중복이 적습니다.
// if vs switch
// switch 문 실습코드를 if 문으로 바꿔보겠습니다.
// switch
int month = 8;
String monthString = "";
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월 출력
// if 로 변환
if (month == 1) {
monthString = "1월";
} else if (month == 2) {
monthString = "2월";
} else if (month == 3) {
monthString = "3월";
} else if (month == 4) {
monthString = "4월";
} else if (month == 5) {
monthString = "5월";
} else if (month == 6) {
monthString = "6월";
} else if (month == 7) {
monthString = "7월";
} else if (month == 8) {
monthString = "8월";
} else if (month == 9) {
monthString = "9월";
} else if (month == 10) {
monthString = "10월";
} else if (month == 11) {
monthString = "11월";
} else if (month == 12) {
monthString = "12월";
} else {
monthString = "알수 없음";
}
System.out.println(monthString); // 8월 출력
- for 문
- 특정 조건에 따라 연산을 반복(끊지 않을때까지 계속=> 잘못하면 영원히)해서 수행하고 싶을 때 사용하는 문맥입니다.
- `for` (`초기값;` `조건문;` `증가연산`) `{ (연산) }` 형태로 사용합니다.
- 특정 조건은 `초기값`과 `조건문`을 통해서 정의합니다.
- 반복할 때마다 값을 증가시키려면 `증가연산`을 정의합니다.
- `초기값`이 `조건문`을 만족할 때까지 `(연산)`을 수행하면서 회차마다 `증가연산`을 수행합니다.
// for 문
for(int i=0; i < 4; i++) { // 변수 i 값은 0 ~ 3 까지 반복
System.out.println(i + "번째 출력"); // i 변수와 문자열 합치기
}
// 출력
0번째 출력
1번째 출력
2번째 출력
3번째 출력
- 향상된 for 문
- for 소괄호 안에 값이 3개나 들어가기 때문에 이걸 2개로 줄여주는 방법이 향상된 for문 입니다.
- 향상된 for 문은 연속된 변수 목록을 출력할 때 쓰입니다.
- for (변수 타입 변수 명 : 목록변수) { (연산) } 형태로 사용합니다.
- `변수 타입` 과 `변수 명` 은 for 문안에서 연산을 수행할 변수를 정의합니다.
public class W15 {
public static void main(String[] args) {
int[] numbers = {3,6,9,12,15};
for(int number: numbers) {
Systehttp://m.out.print(number + " ");
}
for(int i=0; i<numbers.length;i++){
System.out.println("numbers = " + numbers[i]);
}
}
}
while 문, do-while문
- 초기값 없이 조건문만 명시하여 반복합니다.
- `while(조건문)` `{ (연산) }` 형태로 사용합니다. (while 문)
- 위처럼 while 문으로 사용하면 조건문을 만족해야지만 연산이 반복 수행됩니다.
- 한번 반복할 때마다 조건문을 체크해서 조건문이 불만족(false) 이면 반복을 중단합니다.
- `do { (연산) }` `while(조건문)` 형태로도 사용합니다. (do-while 문)
- 위처럼 do-while 문으로 사용하면 최초 1회 연산 수행 후 조건문을 체크하여 더 반복할지 결정합니다.
- 반복하게 된다면 그 이후에는 한번 반복할 때마다 조건문을 체크해서 조건문이 불만족(false) 이면 반복을 중단합니다.
배열(Array)는 참조형 변수들처럼 new 명령을 통해서 생성하며, 대괄호[] 안에 크기를 지정해 줍니다.
- 추가로, 분류통(배열)은 생성될 때 각 타입별 초기값으로 초기화되어 채워집니다.
- 예를 들어, int는 `0`, boolean 은 `false`, String 은 `null` 값과 같은 초기값이 정해져 있습니다.
여기서 중요한 건 참조형 변수이기 때문에 실제 값을 담지 않고 실제 값의 주소값을 저장하고 있게 됩니다.
int[] intArray = new int[3]; // 초기값 {0,0,0}
boolean[] boolArray = new boolean[3]; // 초기값 {false, false, false}
String[] stringArray = new String[3]; // 초기값 {"","",""}
//배열 선언만 해놓고 나중에 초기화를 시킬수도 있다.
int[] intArray2;
intArray2 = new int[3]; // 초기값 {0,0,0}
배열(분류통) 안에 담겨있는 변수들을 하나씩 꺼내서 사용하는 것을 순회라고 합니다.
int[] intArray = new int[3]; // 모두 0으로 초기화된 사이즈3의 배열 생성
// 배열에서 2번쨰 순번의 값을 출력해본다. (0부터 순번이 시작하므로 2번째 순번은 1)
System.out.println(intArray[1]);
배열 순회
int[] intArray = new int[3];
// 배열이 초기화된 값을 출력해본다.
for(int i=0; i<intArray.length; i++) { // .length 는 배열의 길이
System.out.println(intArray[i]);
}
초기화
// 배열 초기화
import java.util.Arrays; // Arrays 클래스를 import 해주세요!
public class Main {
public static void main(String[] args) {
//1. 배열에 특정값 대입하며 선언
int[] intArray = {1, 2, 3, 4, 5};
String[] stringArray = {"a", "b", "c", "d"};
//2-1. for문을 통해 값을 대입
for (int i = 0; i < intArray.length; i++) {
intArray[i] = i;
}
//2-2. 향상된 for문을 통한 배열 출력
for (int i : intArray) {
Systehttp://m.out.print(i); // 01234
}
System.out.println(); // 줄바꿈
//3. 배열의 주소를 모두 같은값으로 초기화
Arrays.fill(intArray, 1);//배열의 모든 값을 1로 초기화
for (int i : intArray) {
Systehttp://m.out.print(i); // 11111
}
}
}
'java' 카테고리의 다른 글
getter&setter (0) | 2024.07.29 |
---|---|
객체지향 (0) | 2024.07.26 |
list, map (1) | 2024.07.25 |
JVM 공통 실행 환경 (6) | 2024.07.22 |
package (0) | 2024.07.18 |