Home [Java basic] 02. 변수, 타입, 연산자
Post
Cancel

[Java basic] 02. 변수, 타입, 연산자

1. 변수(variable)

  • 변하는 수, 데이터를 저장하는 공간
  • 데이터를 저장하기 위해 변수 선언을 해야 함
  • 변수는 컴퓨터 메모리 공간에 이름이 붙여져 관리됨
  • 변수 선언 예
    1
    2
    3
    4
    
      // int: 타입
      // age: 변수명
      // 21: 메모리 공간에 들어갈 내용
      int age = 21;
    

2. 타입(type)

  • 데이터의 형태
  • 타입 사용 예
    1
    2
    3
    4
    
      int age;
      double weight;
      boolean hungry;
      String name;
    

자바의 타입

Java Type

기본 타입(primitive type)

  • 값을 직접 갖는 데이터 형태
  • 정수, 실수, 문자, 논리 타입으로 나뉨
  • 정수와 실수는 메모리 크기에 따라 다시 세부 타입으로 나뉜다

자바의 기본 타입 종류

타입기본값메모리 크기표현 범위
정수byte08bit-128 ~ 127
short016bit-32,768 ~ 32,767
int032bit-2,147,483,648 ~ 2,147,483,647
long0L / 0l64bit-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
실수float0.0F / 0.0f32bit(±3.4 × 10-38) ~ (±3.4 × 1038)의 근삿값
double0.0D / 0.0d64bit(±1.7 × 10-308) ~ (±1.7 × 10308)의 근삿값
논리booleanfalse8bittrue, false
문자char\u000016bit0(\u0000) ~ 65,535(\uFFFF)

레퍼런스 타입(reference type)

  • 주소값을 갖는 데이터 형태
    1
    
      String name = "홍길동";
    
    • 여기서 name은 “홍길동”을 저장한 것이 아니라 “홍길동”이 저장된 주소값을 가지고 있다.

3. 변수의 생성과 사용

문자열 변수

  • 문자열을 다루기 위해서는 String 타입 변수가 필요
  • 예시
    1
    2
    3
    
      String food; // 문자열 변수 선언
      food = "치킨";  // 변수에 저장할 문자열
      // 단 food에는 "치킨"이 저장되는 것이 아닌 "치킨"이 저장된 주소값이 저장되는 것
    

정수형 변수

  • 정수를 다루기 위해서는 정수 타입이 필요
  • 정수형 변수는 표현 범위에 따라 다양한 타입 지정이 가능 ex) byte, short, int, long
  • 예시
    1
    2
    
      int age; // 정수형 변수 선언
      age = 24; // 정숫값 저장
    

실수형 변수

  • 실수형 변수는 정밀도에 따라 다양한 타입을 지정할 수 있음 ex) float, double
    • 정밀도
      • 소수점 이하 몇 번째 자리까지 오차 없이 표현할 수 있는 가를 의미
      • float의 정밀도는 6자리, double의 정밀도는 15자리까지 보장

논리형 변수

  • 논리값을 다루기 위해서는 boolean 타입 변수가 필요
    • 이를 통해 truefalse를 구분

4. 변수의 활용

변수 생성 및 초기화

  • 변수는 생성과 동시에 초기화 할 수 있음
  • 초기화는 사용할 변수의 값을 지정해주는 것을 의미
  • 변수 사용시 초기화 작업이 진행되어야 오류가 나지 않음
    1
    2
    3
    4
    5
    6
    
      // 변수 생성 후 초기화 하는 방식
      int pastYear; // 변수 생성
      pastYear = 2022; // 변수 초기화
    	
      // 변수 생성과 동시에 초기화
      int year = 2023; 
    

변수 이름 짓기

  • 특수 문자는 _$만 사용 가능
  • 숫자는 첫 번째 자리에 위치할 수 없음
  • camel case(카멜 표기법)을 사용
    • String camelCaseExample;
  • 자바의 키워드는 변수의 이름이 될 수 없음

변수의 값 변경

  • 변수의 값은 변경 될 수 있음
    1
    2
    
      String weather = "맑음"; // 변수 생성 및 초기화
      weather = "흐림" // 변수의 값 변경
    

    상수

  • 값 변경이 불가능한 변수
  • 변수의 값을 고정한 개념
  • final이라는 키워드를 붙여 선언
  • 상수의 이름은 대문자와 밑줄로 하는 것이 관례
    1
    2
    
      final int NOT_FOUND = 404; // 상수 생성 및 초기화
      NOT_FOUND = 200; // ERROR 발생 - 상수는 값을 변경할 수 없음
    

변수의 값 복사

기본 타입일 경우

  • 변수를 복사할 수 있음
  • 복사한 값을 바꿔도 원본은 바뀌지 않음
  • 예시
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
      double origin = 3.14;
      double copy = orgin;
    
      System.out.println(copy); // "3.14" 출력
    	
      // copy 변경
      copy = 1004;
      System.out.println(origin); // "3.14" 출력 -> 바뀌지 않음
      System.out.println(copy); // "1004" 출력
    

레퍼런스 타입일 경우

  • 변수를 공유할 수 있음
  • 복사한 값이 원래의 값에 영향을 줌 &rarr 원본이 1개만 있음
  • 예시
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
      // 레퍼런스 타입 생성
      StringBuffer sbOrigin=new StringBuffer("안녕");
      // 값 공유
      StringBuffer sbCopy=sbOrigin;
    	
      System.out.println(sbCopy); // "안녕" 출력
    
      // sbCopy 변경
      sbCopy.append("하세요");
      System.out.println(sbOrigin); // "안녕하세요" 출력
      System.out.println(sbCopy); // "안녕하세요" 출력
    

문자열 연결

  • 두 문자열 또는 문자열과 숫자의 경우 덧셈 연산(+)으로 연결 가능
  • 두 문자열 연결 예시
    1
    2
    3
    4
    
      String a = "안녕";
      String b = "하세요";
      String c = a + b;
      System.out.println(c); // "안녕하세요" 출력
    
  • 문자열과 숫자 연결 예시
    1
    2
    
      int hour = 13;
      System.out.println("지금은" + hour + "시 입니다"); // "지금은 13시 입니다" 출력
    

형식 문자열 출력

  • 덧셈 연산으로 문자열을 만들면 가독성이 떨어지기 때문에 형식 문자열을 사용
  • 메소드는 System.out.printf()를 사용
    • %s - 해당 위치에 String 값을 삽입
    • %d - 해당 위치에 int 값을 삽입
    • %f - 해당 위치에 double 값을 삽입
    • %b - 해당 위치에 boolean 값을 삽입
  • 예시
    1
    2
    3
    4
    5
    6
    7
    8
    
      String item = "라면";
      long  price = 8000000000L;
      float  weight = 0.12F;
      boolean  discount = false;
    
      System.out.printf("이름: %s, 가격: %d원, 무게: %f, 할인: %b"
              , item, price, weight, discount); 
              // "이름: 라면, 가격: 8000000000원, 무게: 0.120000, 할인: false" 출력
    

변수값 비교

기본 타입일 경우

  • ==를 사용해서 비교
    1
    
      int1 == int2 // true or false 출력
    

레퍼런스 타입일 경우

  • .equals()를 사용해서 비교
    1
    
      str1.equals(str2) // true or false 출력
    

5. 타입 변환

문자열과 숫자 간 타입 변환

  • 문자열 → 정수
    • Integer.parseInt("문자열")
  • 문자열 → 실수
    • Double.parseDouble("문자열")
  • 숫자 → 문자열
    • 빈 문자열에 정수 또는 실수를 덧셈
      1
      2
      
        String a = "" + 1234; // "1234" 생성
        String b = "" + 3.14; // "3.14" 생성
      
    • 변환 메소드 사용
      1
      2
      
        String a = Integer.toString(1234); // "1234" 생성
        String b = Double.toString(3.14);  // "3.14" 생성
      

6. 연산자

  • 자바에서 정수타입 변수끼리의 연산 결과는 무조건 정수이다
    1
    2
    3
    4
    5
    6
    
      int a = 3;
      int b = 2;
      System.out.println(a/b); // 1 출력
    	
      double c = a/b;
      System.out.println(c);   // 1. = 오른쪽 먼저 계산 2. double 형으로 변경 -> 1.0 출력
    
  • 따라서 실수를 계산할 때 먼저 정수를 실수로 바꾼 후 계산을 해주어야 함 (double) 정수
    1
    2
    
      double d = (double) a / (double) b;
      System.out.println(d); // 1.5 출력
    
This post is licensed under CC BY 4.0 by the author.