한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지_패스트 캠퍼스 챌린지 03일차

2021. 9. 8. 22:47IT공부/Java&Spring 이용한 웹프로그래밍

09. 자료형(data type)- 논리형과 자료형 없이 변수 사용하기

논리형

  • true(참), false(거짓) 두 가지만 나타냄
  • 1바이트를 사용 함
  • 값이 존재하는지, 배열이 비었는지, 결과가 참인지 거짓인지등을 표현

package ch09; public class BooleanTest { public static void main(String[] args) { boolean isMarried = true; System.out.println(isMarried); } }

지역 변수 자료형 없이 사용하기 ( 자바 10 지원 됨 )

  • Local variable type inference
  • 추론 가능한 변수에 대한 자료형을 선언하지 않음
  • 한번 선언하여 추론 된 변수는 다른 타입의 값을 대입 할 수 없음
  • 지역 변수만 사용 가능

package ch09;

public class LocalVariableType {

          public static void main(String[] args) {

           var i = 10;

           var j = 10.0;

           var str = "hello";

           System.out.println(i);

           System.out.println(j);

           System.out.println(str);

           str = "test";

           //str = 3;

        }

  }

10. 변하지 않는 상수와 리터럴, 변수의 형 변환

상수(constant) 선언하기

  • 상수는 변하지 않는 수
  • 원주률 3.14, 1년 12개월 등
  • final 예약어를 사용하여 선언
  • 상수를 사용하면 변하지 않는 값을 반복하여 사용할 때 의미있는 문자로 인식하기 쉽고
    혹, 변하더라도 선언한 부분만 변경하면 되므로 여러부분을 수정할 필요가 없음

package ch10; public class ConstantTest { public static void main(String[] args) { final int MAX_NUM = 100; final int MIN_NUM; MIN_NUM = 0; System.out.println(MAX_NUM); System.out.println(MIN_NUM); //MAX_NUM = 1000; } }

리터럴(literal)

  • 프로그램에서 사용하는 숫자, 문자, 논리값을 뜻함
  • 리터럴은 상수 풀(constant pool)에 있음
  • 정수 리터럴은 int 로 실수 리터럴은 double 로 저장됨
    정수의 범위가 넘어가는 경우는 L,l을 float로 사용하려는 경우는 F,f 식별자를 써줘야 함

형 변환 (type conversion)

  • 서로 다른 자료형 간에 연산등의 수행을 위해 하나의 자료형으로 통일하는 것
  • 묵시적 형 변환(explicit type conversion, 자동 형 변환)과 명시적 형 변환(implicit type conversion, 강제 형 변환)이 있음
  • 바이트 크기가 작은 자료형에서 큰 자료형으로 형 변환은 자동으로 이루어 짐
  • 덜 정밀한 자료형에서 더 정밀한 자료형으로읜 형 변환은 자동으로 이루어 짐

 

byte bNum = 10;

int iNum = bNum;

int iNum1 = 20;

float fNum = iNum2;

int iNum = 10;

byte bNum = (byte)iNum;

double dNum = 3.14;

int iNum2 = (int)dNum;

연산 중 형 변환 예제

package ch10;

public class TypeConversion {

           public static void main(String[] args) {

           double dNum = 1.2;

           float fNum = 0.9F;

           int iNum1 = (int)dNum + (int)fNum;

           int iNum2 = (int)(dNum + fNum);

           System.out.println(iNum1);

           System.out.println(iNum2);

      }

 }

 

11. 자바의 연산자들 -1 (대입, 부호, 산술, 복합대입, 증감연산자)

항과 연산자

  • 항(operand) : 연산에 사용되는 값
  • 연산자 (operator) : 항을 이용하여 연산하는 기호

대입 연산자 (assignment operator)

  • 변수에 다른 변수나 값을 대입하는 연산자
  • 이항 연산자 중 우선 순위가 가장 낮은 연산자들
  • 왼쪽 변수 = 오른쪽 변수(또는 식, 값)

부호 연산자

  • 단항 연산자
  • 변수의 부호를 유지 하거나(+) 바꿈(-)
  • 실제 변수의 부호가 변하려면 대입 연산자를 사용해야 함

산술 연산자

  • 사칙 연산자

  • % 나머지 구하는 연산자, 숫자 n 의 나머지 범위는 0 ~ n-1

복합 대입 연산자

  • 대입 연산자와 다른 연산자가 함께 쓰임

 

증가, 감소 연산자

  • 단항 연산자
  • 변수의 값을 1 더하거나 1 뺄때 사용
  • 연산자가 항의 앞에 있는가 뒤에 있는가에 따라 연산 시점과 결과가 달라짐
  • 문장(statement)의 끝(;)을 기준으로 연산 시점을 생각해야 함

12. 자바의 연산자들 -2 (관계, 논리 연산자)

관계 연산자

  • 이항 연산자
  • 연산의 결과가 true(참), false(거짓)으로 반환 됨, 비교연산자 라고도 함
  • 조건문, 반복문의 조건식으로 많이 사용 됨

package ch12;

public class RealtionalTest {

        public static void main(String[] args) {

        int num1 = 5;

        int num2 = 3;

        boolean value = (num1 > num2);

        System.out.println(value);

        System.out.println(num1 < num2);

        System.out.println(num1 >= num2);

        System.out.println(num1 <= num2);

        System.out.println(num1 == num2);

        System.out.println(num1 != num2);

       }

}

논리 연산자

  • 관계 연산자와 혼합하여 많이 사용 됨
  • 연산의 결과가 true(참), false(거짓)으로 반환 됨

 

package ch12;

public class LogicalTest {

          public static void main(String[] args) {

            int num1 = 10;

            int num2 = 20;

            boolean flag = (num1 > 0) && (num2 > 0);

            System.out.println(flag);

            flag = (num1 < 0) && (num2 > 0);

            System.out.println(flag);

            flag = (num1 > 0) || (num2 > 0);

            System.out.println(flag);

            flag = (num1 < 0) || (num2 > 0);

            System.out.println(flag);

            flag = !(num1 > 0);

            System.out.println(flag);

        }

}

 

논리 연산에서 모든 항이 실행되지 않는 경우 - 단락 회로 평가 (short circuit evaluation)

  • 논리 곱(&&)은 두 항의 결과가 모두 true일 때만 결과가 true
  • -- 앞의 항의 결과가 false이면 뒤 항의 결과를 평가하지 않음
  • 논리 합(||)은 두 항의 결과가 모두 false일 때만 결과가 false
  • -- 앞의 항의 결과가 true이면 뒤 항의 결과를 평가하지 않음

package ch12;

public class ShortCircuit {

          public static void main(String[] args) {

             int num1 = 10;

             int i = 2;

            boolean value = ((num1 = num1 + 10 ) < 10) && ( ( i = i + 2 ) < 10);

            System.out.println(value);

            System.out.println(num1);

            System.out.println(i);

            value = ((num1 = num1 + 10 ) < 10) || ( ( i = i + 2 ) < 10);

            System.out.println(value);

            System.out.println(num1);

            System.out.println(i);

        }

}

 

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

강의에 대해 정확하게 알고 싶다면 

https://bit.ly/37BpXiC