02 변수 - 변수의 타입

Freddie·2022년 3월 26일
0

자바의 정석

목록 보기
5/8

2 변수

값(data)의 종류(type)에 따라 값이 저장될 공간의 크기와 저장형식을 정의한 것이 자료형(data type)

값(data) - 문자('A', '1', "ABC")
|
숫자 - 실수(3.14, -3.0)
|
정수(123, 0, -100)

자료형에는 문자형(char), 정수형(byte, short, int, long), 실수형(float, double) 등이 있으며 변수를 선언할 때는 저장하려는 값의 특성을 고려하여 가장 알맞은 자료형을 변수의 타입으로 선택하면 됨.

기본형과 참조형

기본형 변수: 실제 값(data) 저장
참조형 변수: 어떤 값(data)가 저장되어 있는 주소(memory address) 저장

MI) 메모리에는 1byte 단위로 일련번호가 붙어있는데, 이 번호로 '메모리 주소(memory address)',
	간단히 주소라고 한다. 객체의 주소는 객체가 저장된 메모리 주소를 뜻한다.

기본형(primitive type)

  • 논리형(boolean), 문자형(char), 정수형(byte, short, int), 실수형(long, float, double) 계산을 위한 실제 값 저장 - 총 8개

참조형(reference type)

  • 객체의 주소 저장 - 8개의 기본형 외 나머지 타입

참조형 변수(또는 참조변수)를 선언할 때 변수의 타입으로 클래스의 이름을 사용하므로 클래스의 이름이 참조변수의 타입이 됨.
→ 새 클래스 작성은 새로운 참조형 추가.

참조변수를 선언하는 법

클래스이름 변수이름; //변수의 타입이 기본형이 아닌 것들은 모두 참조변수이다.

2.1 기본형(primitive type)

논리형: boolean(1 byte)
문자형: char(2 byte)
정수형: byte(1 byte), short(2 byte), int(4 byte)
실수형: float(4 byte)

2.2 상수와 리터럴(Constant&Literal)

상수 : 변수처럼 값을 저장하는 공간이지만 값을 초기화하면 변경할 수 없다. / 상수의 이름은 모두 대문자
리터럴 : 상수에 저장되어 있는 값을 부르는 말
상수를 사용하는 이유 : 의미를 담았기에 이해하기 쉽고 값을 변경할때에도 혼란이 오지 않는다.

리터럴 타입과 접미사

boolean : 없음
long: L
float : f
double : d
문자형 : 없음
문자열 : 없음

타입의 불일치

리터럴 타입은 저장될 변수의 타입과 일치해야함
타입이 달라도 저장범위가 큰것 안에 작은 것을 저장하는 것이 가능
반대로 되었을 경우는 컴파일 에러 발생

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

문자는 문자 하나를 ''로 감싼 것 / 문자열은 두 문자 이상을 ""로 감싼것
char 타입은 반드시 하나의 문자가 필요
String은 아무런 문자가 없는 것 허용 / empty String
덧셈 연산자로 문자열 결합 가능
→만일 숫자와 문자를 더하게 되면 숫자를 String으로 변환한 다음 결합한다.
문자열 + any type ⇒ 문자열 + 문자열 = 문자열

2.3 형식화된 출력- printf()

int age = 14;
System.out.printf("age:"%d, age);
→System.out.printf("age:"%d, 14);
→System.out.printf("age:14");
printf()는 줄바꿈을 하지 않음 줄바꿈을 하려면 %n을 넣어야 함

2.4 화면에서 입력받기 - Scanner

import java.utill.* // scanner를 사용하기 위해 추가
Scanner scanner = new Scanner(System.in); // 클래스의 클래스 객체 생성
nextLine() : 호출하면 입력 대기 상태에 있다가 입력을 마치고 엔터를 치면 입력한 내용이 문자열로 반환된다.
Integer.parseInt() : 입력받은 문자열을 int타입 정수로 변환
String input = scannse.nextLine(); //입력반은 내용을 변수에 저장
int num = Integer.parseInt(input); //입력받은 내용을 int타입의 값으로 변환

profile
그냥 'Freddie'라는 이름이 좋아보였습니다.

0개의 댓글