본문 바로가기
java

연산자, 조건문 (Sql 조금)

by wjdtmdgjs 2024. 7. 24.

오늘 한일

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