럿고의 개발 노트

[프로그래머스] 자바 입문 > Part2. 변수와 계산 본문

Java Note/[프로그래머스] 자바 입문(동영상 강의)

[프로그래머스] 자바 입문 > Part2. 변수와 계산

KimSeYun 2019. 12. 20. 12:08

[프로그래머스] 자바 입문

Part2. 변수와 계산

1. 변수

변수


  • 자바는 강형 언어로써 모든 변수의 타입이 컴파일 시에 결정됨.

  • 변수란, 값을 저장할 수 있는 메모리 공간 / 값이 변할 수 있는 수

변수의 선언


  • 타입 변수명;

  • 명명 규칙

  • 식별자(identifier)는 클래스, 메소드, 변수 등 다양한 대상에 대해 이름이 붙여지는 경우 그 이름을 뜻함

식별자 명명 규칙


  • 하나 이상의 글자로 이루어져야 함

  • 첫 번째 글자는 문자이거나 '$', '_'이어야 함

  • 두번째 이후의 글자는 숫자, 문자, '$', '_'이어야 함

  • '$', '_'외 특수문자 사용 불가능

  • 길이 제한 없음

  • 키워드 사용 불가(if, null, true, false, for 등)

변수 명명 관례


  • 첫 번째 문자가 소문자인 명사로 정함

  • 여러 단어로 구성된 이름의 경우 두번째 단어부터 첫글자를 대문자로 함

  • '_'를 쓰지 않음

  • 규칙은 반드시 지켜야 함, 컴파일 에러가 발생함

  • 그러나 관계는 지키지 않아도 컴파일 에러가 발생하지는 않지만, 약속이기 때문에 지켜주는 것이 좋음

변수 사용


  • 변수명 = 값;
public class VariableExam {
    public static void main(String[] args) {
        int count; // 변수타입 변수명;
        count = 10; // count변수에 10을 넣은 것
        count = 20; // count변수에 20을 넣은 것
        // 10과 20중에 무엇이 들어있을까?
        System.out.println(count); // 출력값 : 20
        //count = 11.1; // 컴파일 에러(int를 담는 변수에 double을 넣음)

        double avg = 11.1; // double에 double값을 제대로 넣음

        String name = "rutgo"; // 문자열을 넣을수 있는 것

        int totalCount; // 변수명을 알아보기 쉽게 나타내야 변수의 의미를 알수 있음
        // 변수는 두번째 단어부터 단어를 알아보기 쉽게 하기 위해 대문자로 쓰는게 관례
    }
}

2. 상수

상수


  • 수식에서 변하지 않는 값

  • 상수 선언 : final 상수타입 상수명;

  • 상수 사용 : 상수명 = 값;

  • 상수 명명 관례

    • 대문자로만 구성된 명사로 정함
    • 여러 단어로 구성된 이름의 경우 단어 사이에 '_'을 써서 구분
  • 상수를 사용해야 하는 경우

    • 값이 변하면 위험한 경우
    • 값만 봤을때 무엇을 의미하는지 쉽게 파익할 수 없는 값에도 값 자체를 사용하기 보다는 상수를 사용
public class ConstamtExam {

    public static void main(String[] args) {
        int i; // 변수 선언
        i = 10;
        i = 5;

        final int J; // 상수는 모두 대문자로만 구성(관례)
        J = 10;
        //J = 5; // 이미 위에서 10을 넣었기 때문에 사용 불가

        double circleArea; // 원의 넓이
        final double PI = 3.14159; // Pi 값
        circleArea = 3 * 3 * 3.14159; // 3.14159가 무엇을 의미하는지 모를수도 있고, 오타가 날 수 있음으로 상수처리해주는게 좋다
        circleArea = 3 * 3 * PI;

        final int OIL_PRICE = 1390; // 상수는 단어와 단어사이를 언더바로 구분
        int totalPrice = 50 * OIL_PRICE;
    }

}

3. 기본형 타입

기본형


  • 기본형 타입은 가장 기본이 되는 데이터 타입

  • 논리형

    • 종류 : boolean
    • 크기 : 1byte
    • 특징 : true / false 중 한 가지 값만 가질 수 있음
  • 문자형

    • 종류 : char
    • 크기 : 2byte
    • 특징 : 작은따옴표를 이용하여 한 글자를 표현
  • 정수형

    • 종류 : byte, short, int, long
    • 크기 : 1byte, 2byte, 4byte, 8byte
    • 특징 : 기본형이 int형
  • 실수

    • 종류 : float, double
    • 크기 : 4byte, 8byte
  • 리터럴

    • 컴퓨터 과학 분야에서 리터럴이란, 소스 코드의 고정된 값을 대표하는 용어
    • 일종의 값으로 값 자체를 의미함
public class PrimitiveDataTypeExam {
    public static void main(String[] args) {
        boolean isFun = true; // true, false 둘중에 하나만 사용 가능
        System.out.println(isFun);

        char c =  'A'; //작은따옴표를 이용해서 문자 하나만 입력 가능

        int x = 59; // 정수 표현
        long bing = 345434543454L; // int보다 더 큰값을 넣고 싶다면, long을 사용하고 리터럴 뒤에 L(l)를 입력해줘야함

        float f = 32.4f; // 실수를 표현하는 타입으로 리터럴 뒤에 f를 붙어줘야 함
        double d = 34343432.5; // float보다 더 큰 값을 넣고 싶다면 double 사용
    }
}

4. 기본형 타입변환

기본형 타입(형)변환


  • 변수 또는 리터럴의 타입을 다른 타입으로 변환하는 것

  • 묵시적 형변환 = 암묵적 형변환

    • 크기가 작은 타입을 크기가 더 큰 타입으로 변경할때 사용
  • 명시적 형변환 = 강제 형변환

    • 크기가 더 큰 타입을 작은 타입으로 변경할 때 사용
public class TypeCastingExam {
    public static void main(String[] args) {
        int x = 50000;
        long y = x; // int보다 long이 더 크기 때문에 가능함.(묵시적 형변환)

        long x2 = 5;
        //int y2= x2; // int가 long보다 더 작기때문에 불가능.(값이 문제가 아니라 용량이 문제)
        // 위와 같은 상황에서 넣을수는 있다 아래와 같이
        int y2 = (int)x2; // x2를 int형으로 강제형변환을 실시하면 됨
    }
}

5. 산술연산자

연산자


  • 부호(+, -) / 증감(++, --) / 산술(+, -, *, /, %)

  • x = y + z

    • y와 z를 더한 값을 x에 대입
    • '='는 대입연산자, '+'은 산술연산자\
    • y와 z는 피연산자
    • x = y + z는 연산식
  • 피 연산자가 1개인 연산자는 단항 연산자

    • 부호 연산자와 증감연산자는 단항 연산자
public class OperatorExam {
    public static void main(String[] args) {
        // 부호 연산자
        int i1 = -5;
        int i2 = +i1;
        int i3 = -i1;

        System.out.println(i1); // -5
        System.out.println(i2); // -5
        System.out.println(i3); // +5

        // 증감연산자
        int i4 = ++i3; // i3 + 1 => 6, 먼저 1을 더한 다음에 i4에 넣어주는데
        System.out.println(i4); // 6
        System.out.println(i3); // 6
        int i5 = i3++; // 뒤에 있을때는, 넣은 다음에 1을 더함
        System.out.println(i5); // 6
        System.out.println(i3); // 7

        // 산술 연산자
        int i = 5;
        int j = 2;

        System.out.println(i + j); // 더하기 7
        System.out.println(i - j); // 빼기 3
        System.out.println(i * j); // 곱하기 10
        System.out.println(i / j); // 나누기 2, 정수 / 정수이기때문에, 값도 정수가 나옴
        System.out.println(i / (double)j); // 정수 / 실수 이기때문에, 실수가 나옴
        System.out.println(i % j); // 나머지 1
    }
}

6. 비교연산자

비교연산자


  • ==, !=, <, >, <=, >=

  • 비교연산자의 결과는 boolean

  • 단순 대입 연산자

    • =
    • 오른쪽에 있는 피연산자의 값을 왼쪽 피연산자의 변수에 저장
  • 복합 대입 연산자

    • +=, -=, *=, /=, %=
    • 정해진 연산을 수행한 후에 결과를 대입
public class OperatorExam1 {

    public static void main(String[] args) {
        int i = 10; // 대입연산자
        int j = 10;

        System.out.println(i == j); //true(같은지 묻는 비교연산자)
        System.out.println(i != j); // false(다른지 묻는 비교연산자)
        System.out.println(i < j); // false(i가 j보다 작은지 묻는 비교연산자)
        System.out.println(i <= j); // true(i가 j보다 작거나 같은지 묻는 비교연산자)
        System.out.println(i > j); // false(i가 j보다 큰지 묻는 비교연산자)
        System.out.println(i >= j); // true(i가 j보다 크거나 같은지 묻는 비교연산자)

        i += 10; // 복합대입연산자(i = i + 10)
        System.out.println(i);
        System.out.println(i -=5); // 복합대입연산자(i = i - 5)
    }
}

7. 연산자우선순위

연산자 우선순위


  • 최우선연산자 : . / [] / ()

  • 단항연산자 : ++, --, !, ~, +/-(부정), bit변환> 부호> 증감

  • 산술연산자 : *, /, %, +, -, shift < 시프트연산자 (>>, <<, >>>)>)

  • 비교연산자 : >, <, >=, <=, ==, !=

  • 비트연산자 : &, |, ~

  • 논리연산자 : &&, ||, !

  • 삼항연산자 : (조건식) ? true : false

  • 대입연산자 : =, *=, /=, %=, +=, -=

public class OperatorExam2 {
    public static void main(String[] args) {
        int a = 5;
        int b= 10;
        int c = 15;

        System.out.println(a - b * c); // 1. b * c = 150 2. a - 150 = -145
        System.out.println((a - b) * c); // 1. a - b = -5 2. -5 * 15 = -75
        System.out.println(a > 5 && b > 5); // AND연산자, 조건 둘다 맞아야 true로 결과값은 false
        // a > 5 = false, b > 5 = true ==> false AND true ==> false
        System.out.println(++a - 5); // 1. a + 1 = 6 2. 6 - 5 = -1
        System.out.println(a++ - 5); // 1. a - 5 = 1 (a++은 출력 후에 실행)
        System.out.println(a); // 7

    }
}

※ 출처

[프로그래머스] 자바 입문

Comments