카테고리 없음

변수와 타입

달덩이>< 2022. 8. 19. 17:10

Programming(coding)이란?

  • 입력 데이터를 가공하여 원하는 형태의 출력 데이터로 변환하여 화면에 display하거나 file, database등에 자료를 저장

 

프로그램 기본 구조 : 데이터 + (Program) Code

  • 데이터 정의 : 사용할 입력 데이터 종류와 출력 데이터 종류
  • 예로) 1학년 1반 성적계산 프로그램에서는 입력데이터는 학생수, 국어/영어/수학 성적, 출력 데이터는 평균,최고, 최저 성적 등
  • Program code : 명령어 집합으로 입력데이터를 가공

 

변수란?

  • 하나의 값을 저장할 수 있는 메모리 공간

 

변수의 선언

  • 타입: 메모리 방의 크기와 데이터 종류(정수, 실수, 문자열 등) 지정
  •  타입 변수이름 : int age;    double value;

 

변수 이름을 위한 명명 규칙(naming convention)

작성 규칙
첫번째 글자는 문자이거나 '$', '_' 여야 하고 숫자로 시작할 수 없다. (필수) 가능: price, $price, _companyName
불가능: 1v, @speed, $#value
영어 대소문자가 구분된다. (필수) firstname과 firstName은 다른 변수
첫문자는 영어 소문자로 시작하되, 다른 단어가 붙을 경우 첫자를 대문자로 한다. (관례) maxSpeed, firstName, carBodyColor
문자 수(길이)의 제한은 없다.  
자바 예약어는 사용할 수 없다. (필수) 책참조

 

 

변수의 사용

  • 변수값 저장
int score;   // 변수 선언
score = 90;  // 값 저장
  • 초기값은 변수를 선언함과 동시에 줄 수도 있다.
int score = 90;

 

 

변수의 사용

-변수값 읽기

  • 변수는 초기화가 되어야 읽기 가능

 

잘못된 코딩의 예

int value;                    // 변수 value 선언 (초기화 안됨)
int result = value + 10;      // 변수 value 값을 읽고 10을 더한 결과값을 변수 result에 저장

맞게 고친 후의 코드

int value = 30;              // 변수 value가 30으로 초기화 됨
int result = value + 10;     // 변수 value 값을 일고 10을 더한 결과값(40)을 변수 result에 저장

 

리터럴(literal)

  • 소스 코드 내에서 직접 입력된 변수의 초기값
  • 종류 : 정수 리터럴, 실수 리터럴, 문자 리터럴, 문자열 리터럴, 논리 리터럴
  • 문자 리터럴 예 : 'A' , '한', '\t', '\n'
  • escape 문자 : \가 포함된 문자 리터럴로 특수한 용도로 사용
이스케이프 문자 용도 유니코드
'\t' 수평 탭 0x0009
'\n' 줄 바꿈 0x000a
'\r' 리턴 0x000d
'\" "(큰따옴표) 0x0022
'\' '(작은 따옴표) 0x0027
'\\' \ 0x005c
'\u16진수' 16진수에 해당하는 유니코드 0x0000~0xffff

 

 

변수의 사용 범위

  • 변수는 중괄호 블록 {} 내에서 선언되고 사용
int var1;              // 메소드 블록에서 선언

if(...) {
	int var2;          // if 블록에서 선언
                      // var1과 var2 사용 가능
}      // => if 블록    

for(...) {
int var3;             // for 블록에서 선언
                      // var1과 var3 사용 가능
                      // var2는 사용 못함
}     // => for 블록

// var1 사용 가능
// var2와 var3는 사용 못함

}

 

 

기본(primitive) 타입

  • 정수, 실수, 문자, 논리 리터럴을 직접 저장하는 타입
  • 메모리의 최소 기억단위인 bit가 모여 byte 형성
  •  1byte = 8bit
값의 종류 기본 타입 메모리 사용 크기 저장되는 값의 범위
정수 byte 1 byte 8 bit 2^7 ~ 2^7-1
(-128 ~ 127)
char 2 byte 16 bit 0 ~ 2^16-1 
(유니코드:
\u0000 ~ \uFFFF,
0 ~ 65535)
short 3 byte 16 bit -2^15 ~ 2^15-1
(-32,768 ~ 32,767)
int 4 byte 32 bit -2^31 ~ 2^31-1
(-2,147,483,648 ~ 2,147,483,647)
long 8 byte 64 bit -2^63 ~ 2^63-1
실수 float 4 byte 32 bit (+/-)1.4E-45 ~ (+/-)3.4E28
double 8 byte 64 bit (+/-)4.9E-324 ~ (+/-)1.7E308
논리 boolean 1 byte 8 bit true, false

 

 

실수 타입(float, double)

  • 부호 : sign(+ 또는 -), 가수 : mantissa, 지수(exponent)
  • 예 : 1.101인 경우 float로 표현하면
  • sign : 0, 가수 : 101, 지수: 1
  • 0 00000001 00000000000000000000101

 

Console에서 입력 Data 읽기

- System.in

  • 키보드로부터 키의 문자를 읽는 자바의 표준 입력 스티림
  • 키의 문자는 바이트 단위로 읽어 들임

 

- Scanner 클래스

  • Console(키보드)에서 데이터 읽는데 사용하는 class
  • System.in에서 키를 읽게 하고, 읽는 바이트를 문자, 정수, 실수, 불린, 문자열 등 다양한 타입으로 변환하여 리턴한다.

 

- Scanner에서 키 입력 받기

  • Scanner는 입력되는 키 값을 공백으로 구분되는 아이템 단위로 읽는다.
  • 공백 문자 : '\t', '\f', '\r, ' ', '\n

 

Scanner 주요 메소드

메소드 설명
String next() 다음 아이템을 문자여 타입으로 리턴한다.
byte nextByte() 다음 아이템을 byte 타입으로 리턴한다.
short nextShort() 다음 아이템을 short 타입으로 리턴한다.
int nextInt() 다음 아이템을 int 타입으로 리턴한다.
long nextLong() 다음 아이템을 long 타입으로 리턴한다.
float nextFloat() 다음 아이템을 float 타입으로 리턴한다.
double nextDouble() 다음 아이템을 double 타입으로 리턴한다.
String nextLine() 한 라인 전체('\n' 까지)를 읽어 문자열 타입('\n 미포함)으로 리턴한다.

 

 

타입 변환

  • 데이터 타입을 다른 타입으로 변환하는 것 (byte <-> int,   int <-> double)

 

- 종류

  • 자동(묵시적) 타입 변환 : Promotion
  • 강제(명시적) 타입 변환 : Casting

 

- 자동 타입 변환

  • 프로그램 실행 도중 작은 타입은 큰 타입으로 자동 타입 변환 가능
  • (byte(1) < short(2) < int(4) < long(8) < float(4) < double(8) )

 

- 연산식에서 자동 타입 변환

  • 연산은 같은 타입의 피연산자(operand)간에만 수행                                                                                    - 서로 다른 타입의 피연산자는 같은 타입으로 변환                                                                                    - 두 피연산자 중 크기가 큰 타입으로 자동 변환
  • int보다 작은 byte, char, short등의 타입으로 산술 연산할 때 int로 자동타입 변환 (4 bytes 체계로 자동 형 변환)           - char + char => int + int , short + short  => int + int, char + short => int + int
  • long과 byte, char, short, int와 산술 연산할 때 long으로 자동타입 변환 ( 8 bytes 체계로 자동 형 변환)
  • double type과 다른 type이 산술 연산할 때 모두 double type으로 자동 타입 변환 ( 8 bytes 체계로 자동 형 변환)  
int intValue = 10;
double doubleValue = 5.5;

double result = intValue + doubleValue;    // result에 15.5가 저장

 - Ex) int type으로 계산 결과를 얻고 싶다면 Double type 변수를 먼저 int로 변환  후 계산해야 한다.

 

 

- 강제 타입 변환

  • 큰 타입을 작은 타입 단위로 쪼개기
  • 끝의 한 부분만 작은 타입으로 강제적 변환
  • (작은크기 타입) = (작은크기 타입) 큰크기 타입
  • 예를 들어 int를 byte에 담으려면  아래 코드처럼 해주면 된다.
int intValue = 103020400
byte byteValue = (byte) intValue;


오늘은 이처럼 코딩의 입문단계인 변수와 타입을 배웠다. 앞으로 코딩에서 항상 쓰이게 될 것이고 기본적으로 알아야 하는 내용들이였습니다. 다음에는 오늘 배운 내용으로 실제 코딩을 하면서 실습을 해보겠습니다.

 

 

 

반응형