Java. 변수

marie_lee·2022년 12월 21일
0

today-Java

목록 보기
1/2
post-thumbnail

[변수의 명명 규칙]

  1. 클래스 이름의 첫글자는 대문자
    변수메서드 이름의 첫글자는 소문자
  2. 여러 단어로 이루어진 이름은 단어 첫 글자를 대문자
    ex) LastAttributeName
  3. 상수의 이름은 대문자
    여러 단어로 이루어진 경우 '_'로 구분
    ex) PI, MAX_STACK_SIZE

[자료형]

  • 기본 자료형: 8가지
    논리형(boolean), 문자형(char), 정수형(byte, short, long, int), 실수형(float, double)

  • 참조형: 객체의 주소를 저장. 기본 자료형 이외의 모든 것.
    값으로는 null(어떤 주소도 저장되지 않음) 또는 객체의 주소

    참조형 변수는 선언 시 변수 타입으로 클래스 이름 사용
    ∴ 클래스 작성은 새로운 참조형을 추가하는 작업

    • 참조변수 선언
      String name;
    • 참조변수 선언 및 초기화
      String name = new String();
      * String 객체를 생성해서, 그 주소를 name에 저장
    • 자료형(data type)은 '저장하는 값'에 따라 나누는 기본형을 말할 때 사용
    • 타입(type)은 모두 객체의 주소를 값으로 저장하고 '객체의 종류'에 따라 나눔.
      타입 > 자료형
    • 기본형의 종류와 크기(암기)
     

[상수와 리터럴]

  • 상수: 값을 한 번 저장하면 변경할 수 없는 저장공간
  • 리터럴: 23, 52.3, B 와 같은 값들

문자 리터럴과 문자열 리터럴

  • 문자 리터럴: 'A'문자 하나를 작은따옴표로 감쌈
    • 문자 리터럴은 ''빈 문자열(empty string)을 넣으면 error
    • ' '공백문자(blank)라도 채워야 함
  • 문자열 리터럴: "ace" 두 문자 이상을 큰따옴표로 감쌈
    • String은 클래스이므로 객체 생성을 해야 사용 가능
    • String name= new String ("Java");
    • 덧셈 연산자로 문자열 결합

[화면에서 입력 받기 Scanner]

  • import java.util.*;
  • 객체 생성 Scanner scanner = new Scanner(System.in);
  • 입력 받기 String input = scanner.nextLine();
  • 정수 변경 int num = Integer.parseInt(input);

[기본형]

논리형 - boolean

  • true, false 값을 가짐(대소문자 구분)
  • 크기 1byte
  • 기본값 false

문자형 - char

  • 하나의 문자만 저장
  • 문자가 저장되는 것이 아니라 문자의 유니코드가 저장된다.
  • char ch = 'A'; 위 아래 같은 문장..
  • char ch = 65;
  • 문자의 유니코드가 알고싶다면 char형 변수에 저장된 값을 int로 형변환
  • int code = (int)ch;
  • 크기 2byte(16bit) 즉, 2^16크기로 나타낼 수 있는 문자 저장 가능

인코딩: 문자를 코드로 변환하는 것. 저장할 때.
디코딩: 코드를 문자로 변환하는 것. 읽어올 때.

정수형 - byte, short, int, long

  • byte나 short보다 int를 사용해야 하는 이유

    JVM의 피연산자 스택이 피연산자를 4byte 단위로 저장하기 때문에 byte나 short 타입으로 저장된 값도 4byte로 변환하여 연산이 수행된다. 그러므로 int를 사용하는것이 효율적이다.

실수형 - float, double

  • 저장 가능한 최대 크기를 넘어선 값을 넣었을 때 오버플로우 발생
  • 저장 가능한 최소 크기볻 작은 값을 넣었을 떄 언더플로우 발생

[형변환 casting]

형변환: 변수 또는 상수의 타입을 다른 타입으로 변환하는 것

  • double형을 int형으로 캐스팅
    double d = 85.4;
    int score = (int)d;

정수형간의 형변환

  • int타입을 byte타입으로 형변환 하면 값 손실이 발생할 수 있다.
  • byte타입을 int타입으로 형변환 하면 남은 공간은 0으로 채워지고, 변환하려는 값이 음수일 경우 1로 채워진다.

실수형간의 형변환

  • float를 double로 형변환 할 경우 빈 공간에 0을 채운다.

  • double타입을 float타입으로 형변환 하는 경우 float크기를 넘어서는 부분은 버려진다.
    * 버려지면서 반올림 된 값이 있어 원래의 데이터와 값이 달라질 수 있다.

  • float타입이 저장할 수 있는 크기보다 크거나 작은 값을 넣으면 0또는 무한대의 결과를 얻는다.

정수형과 실수형 간의 형변환

{정수형을 실수형으로 변환}
  • 10진수 7을 정규화를 거쳐 float 형식으로 저장
    111 -> 1.11 x 2^(1+127) << 오차가 발생할 수 있음.

  • float는 정밀도가 7자리 이므로 8자리 정수를 저장할 때 오차가 발생할 수 있다.

    정수 -> float -> int

    • 91234567 -> 91234568.0 -> 91234568
  • double은 15자리 정밀도를 갖으므로 오차없이 변환할 수 있다.

    정수 -> double -> int

    • 91234567 -> 91234567.0 -> 91234567
{실수형을 정수형으로 변환}
  • 실수형의 소수점 아래 값은 버려진다.
  • 형변환시 반올림되지 않는다.
  • 소수점 아래를 버린 값이 정수 저장 범위를 넘으면 오버플로우가 발생한다.

[자동 형변환]

  • 컴파일러가 자동 형변환
    float f = 1234;
  • 변수가 저장할 수 있는 크기보다 큰 값을 저장하면서 형변환을 생략한 경우. 에러.
    char ch = (char)1000;

자동 형변환 규칙

기존의 값을 최대한 보존할 수 있는 타입으로 자동 형변환한다.
즉, 표현 범위가 넓은 타입으로 형변환한다.

  1. boolean을 제외한 나머지 7개의 기본형은 서로 형변환 가능
  2. 기본형과 참조형은 서로 형변환 할 수 없다.
  3. 서로 다른 타입의 변수간의 연산은 형변환을 하는 것이 원칙이지만, 값의 범위가 작은 타입에서 큰 타입으로의 형변환은 생략할 수 있다.
profile
시작은 미약하나 끝은 창대하리라

0개의 댓글