1. 자료형과 상수
[자료형]
1. 데이터의 종류
- 정수 - 1, 2, 3, 4, 0, (-1), (-2), ...
- 실수 - 3.14
- 문자 - 'a', 'b', 'c'
- 문자열 - "java"
2. 자료형의 종류
- 기본 자료형 : 논리형, 정수형, 실수형, 문자형
- 참조형 자료형 : 문자열, 배열, 클래스
데이터 타입 | 메모리 크기 |
논리형 | |
boolean | 1byte |
정수형 | |
byte | 1byte |
short | 2byte |
int | 4byte |
long | 8byte |
실수형 | |
float | 4byte |
double | 8byte |
문자형 | |
char | 2byte |
[상수이해]
1. 상수란?
- 프로그램 수행 중 값이 변하지 않는 데이터를 의미한다.
2. 종류
(1) 논리(boolean)
- 참(true)
- 거짓(false)
(2) 정수
- 자료형이 표현할 수 있는 값의 범위 내에서 사용하여야 한다.
- 접미사 'L' 또는 'l'을 붙이며, 일반적으로 대문자를 사용한다.
- 'L'을 사용하면 long형 상수값이 되며, 'L'을 사용하지 않으면 int형 상수값이 된다.
진수 표현 | 정수상수의 표현 | ||
10진수 | 123 | byte | 123, 0x7B, 0173 |
16진수 | 0x123 | short | 123, 0x7B, 0173 |
8진수 | 0123 | int | 123, 0x7B, 0173 |
long | 123L, 0x7B, 0173L |
(3) 실수
- 자료형이 표현할 수 있는 값의 범위 내에서 사용하여야 한다.
- 접미사 'F' 또는 'f'를 붙이며, 일반적으로 소문자를 사용한다.
- 'f'를 사용하면 float형 상수값이 되며, 'f'를 사용하지 않으면 double형 상수값이 된다.
실수상수의 표현 | |
float | 123.45f |
double | 123.45 |
1) 지수 형식 표기 방법
- 알파벳 소문자 e 또는 대문자 E를 이용한다.
- 가수부와 지수부를 분리해서 표현한다.
지수형식으로 상수표현 | |||
123.456 | 1.23456 * 10² | 1.23456e+02 1.23456E+02 |
(4) 문자 / 문자열
- 문자 상수 - 작은 따옴표 사용
- 문자열 상수 - 큰 따옴표 사용
문자 / 문자열 상수의 표현 | ||
구분 | 자료형 | 상수표현 |
문자 | char | '자', 'a', '*' |
문자열 | String | "자바 프로그래밍" |
2. 변수 이해
[변수이해]
1. 식별자란?
(1) 식별자(identifier)
- 프로그래머가 필요 시 프로그램 내에 정의 또는 선언하여 사용하는 이름을 말한다.
- 예) 변수이름, 메소드 이름 등이 있다.
(2) 식별자 만드는 규칙
- 알파벳 대소문자, 한글, 숫자, _(언더바), $(달러 표시)를 사용한다.
- 공백을 포함하여 위에 없는 것들은 사용이 불가하다.
- 식별자의 첫 문자는 알파벳 대소문자, _(언더바), 한글로 시작하여야 하며 숫자는 사용이 불가하다.
- 예약어도 사용이 불가하며 알파벳 사용시 대소문자를 구분하여 사용한다.
올바른 식별자 | 잘못된 식별자 | ||
start | 소문자 알파벳으로 시작 | 9stars | 숫자로 시작 |
Total | 대문자 알파벳으로 시작 | Counting stars | 중간 공백 |
_sum | _(언더바)로 시작 | int | 예약어 사용 |
합계 | 한글로 시작 | Looptotal! | 특수문자 사용 |
2. 예약어란?
(1) 예약어
- 자바 언어에서 사용하는 문법적 단어들을 의미한다.
- 식별자로 사용할 수 없다.
(2) 예약어 (예시)
- byte / short / int / long / float / double / char / String
- if / switch / else / case for / while / do
3. 변수란?
- 데이터를 저장하는 컴퓨터 메모리 공간을 가리키는 식별자이다.
- 변수에 데이터를 저장, 수정, 읽기 가능하다.
- 프로그램이 실행되는 동안 변수의 데이터 값이 유효하다.
- 데이터의 자료형 크기에 따라 컴퓨터 메모리 공간이 확보된다.
[변수사용]
1. 변수 선언 방법
int i = 100 ;
- int : (자료형) 프로그래머가 원하는 자료형
- i : (변수이름) 식별자 만드는 규칙에 맞게 프로그래머가 정한다.
- = : (대입연산자) 오른쪽에 위치한 상수값을 변수에 저장한다.
- 100 : (상수값) 자료형과 같은 상수값을 사용한다. 여기선 정수를 의미한다.
- ; : (세미콜론) 프로그램 한 줄의 마지막임을 표현한다.
(+) 같은 식, 다른 표현
int i; // 변수 선언
i = 100; // 변수에 상수값 저장
2. 변수 이름 표기법
(1) 가독성 있게 표현하기
- 의미 없는 변수 이름은 사용하지 않는다. (abc, a1, b2 ...)
- 변수 사용 목적에 맞게 표기한다.
(2) 표기법
1) 카멜 표기법
- 2개의 단어를 연결할 때 사용하는 표기법이다.
- 첫 번째 단어는 소문자로, 두 번째 단어는 대문자로 시작하여 표기한다.
- 예) scoreCount, myGrade
2) 스네이크 표기법
- 카멜 표기법과 같이 2개의 단어를 연결할 때 사용하는 표기법이다.
- 첫 번째 단어와 두 번째 단어를 _(언더바)를 사용, 연결하여 표기한다.
- 예) score_count, my_grade
3. 변수 선언 위치와 사용범위
(1) 변수 선언 위치
- 프로그램 내 원하는 위치에 선언이 가능하나 중복하여 선언할 수 없다.
- 선언하는 위치에 따라서 사용 범위가 정해진다. (지역변수, 전역변수)
public class Hello {
public static void main(String[] args) {
int countNum = 1; // 변수선언 이후 모든 영역에서 사용가능하다.
System.out.println(countNum);
int countTotal = 1; // countTotal 선언 이전에는 사용이 불가능하다.
} // line 2 ~ line 8까지 main() 메소드라고 부른다.
}
(+) 지역변수, 전역변수
public class Varia {
public static void main(String[] args) {
int globalInt = 0; // 전역변수
{
int localInt = 0; // 지역변수, 전역변수와 같은 이름은 사용할 수 없다.
} // 지역변수가 선언된 {}를 벗어나면 효력이 없다.
}
}
[변수의 데이터 표현 범위]
1. 오버플로우 (Overflow)
- 변수의 자료형에 따라 표현할 수 있는 데이터의 최소값과 최대값이 있다.
- 변수가 표현할 수 있는 최대값보다 큰 값이 변수에 지정될 때 발생한다.
- 오버플로우 발생 시 문법적 오류가 발생한다.
정수형 자료형 short의 데이터 표현범위 | |
-32,768 ~ 32,767 | |
short test1 = 32767; | short test2 = 32768; |
short 자료형 최대값 이하이므로 정상 | short 자료형 최대값보다 크므로 오버플로우 발생 |
2. 언더플로우 (Underflow)
- 변수가 표현할 수 있는 최소값보다 작은 값이 변수에 지정될 때 발생한다.
- 언더플로우 발생 시 문법적 오류가 발생한다.
정수형 자료형 short의 데이터 표현범위 | |
-32,768 ~ 32,767 | |
short test1 = -32768; | short test2 = -32769; |
short 자료형 최대값 이상이므로 정상 | short 자료형 최소값보다 작으므로 언더플로우 발생 |
[자료형 변환]
1. 자료형 변환이란?
(1) A라는 자료형의 값을 B라는 자료형 값으로 변환하는 것을 말한다.
(2) 종류
- 자동 자료형 변환
- 강제 자료형 변환 (Casting)
2. 자동 자료형 변환
- 메모리 크기가 작은 자료형의 값을 메모리 크기가 큰 자료형 값으로 변환하는 것.
- byte -> short -> int / float -> long / double
byte by = 100;
short sh = 29;
int in = 2908;
long lo = 12908;
float fl = 129.08f;
double dou = 129.08;
sh = by; // byte에서 short로
in = sh; // short에서 int로
lo = in; // int에서 long으로
dou = fl; // float에서 double로
3. 강제 자료형 변환
- 메모리 크기가 큰 자료형의 값을 메모리 크기가 작은 자료형의 값으로 변환하는 것을 말한다.
- 변수의 값은 작은 자료형 크기에 맞는 값이어야 하며, 오버플로우에 주의한다.
- 실수형 자료형의 값이 정수형 자료형의 값으로 변환될 때는 소수점 이하는 버려진다.
- byte <- short <- int / float <- long / double
- 캐스트(Cast) 연산자를 사용하여 강제 자료형 변환을 한다.
byte by = 100;
short sh = 29;
int in = 2908;
long lo = 12908;
float fl = 129.08f;
double dou = 129.08;
// 형식
// 대입하고자 하는 변수명 = (대입하고자 하는 변수명의 '타입') 변환시키고자 하는 변수명;
by = (byte) sh; // short에서 byte로
sh = (short) in; // int에서 short로
in = (int) fl; // float에서 int로
fl = (float) dou; // double에서 float로
3. 표준 입출력 이해
[표준 출력 메소드]
1. System.out.println() 메소드
- 화면(표준 출력)에 내용을 출력해주는 메소드이다.
- 소괄호 사이 화면에 출력할 내용을 지정한다.
- 화면에 내용을 출력한 후 줄 바꿈이 실행된다.
System.out.println(" ~~ ");
// System.out : 표준 출력 객체
// ~~ : 화면에 출력할 내용 지정
(1) 소괄호 사이에 화면에 출력할 내용 지정 방법
- 큰 따옴표(" ") 사이에 있는 문자열은 화면에 그대로 출력된다.
- 변수는 변수의 값이 화면에 출력된다.
- 상수는 상수의 값이 그대로 화면에 출력된다.
- 수식은 수식이 계산된 결과값이 화면에 출력된다.
- 화면에 출력될 항목들은 " + " 기호로 연결한다.
-
// 큰따옴표 사이 문자열 화면 출력 System.out.println("출력"); // 결과: 출력 // 변수는 변수의 값이 화면에 출력 int i = 1; System.out.println(i); // 결과: 1 // 상수는 상수의 값이 화면에 출력 System.out.println(100); // 결과: 100 // 수식은 수식이 계산된 결과값이 화면에 출력 System.out.println(1+2); // 결과: 3 // 화면에 출력될 항목들은 "+" 기호로 연결 int j = 100; System.out.println("j의 값은" + j + 200 + "을 더하면" + (j+200)); // 결과: j의 값은 100, 200을 더하면 300
2. System.out.print() 메소드
- System.out.println() 메소드 사용법과 동일하다.
- 차이점은 화면에 내용을 출력한 후 줄 바꿈을 실행하지 않는다.
System.out.println("안녕");
System.out.println("하세요");
// 결과
// 안녕
// 하세요
System.out.print("안녕");
System.out.print("하세요");
// 결과 : 안녕하세요
[표준 입력 메소드]
1. 표준 입력 메소드 사용 방법
- Scanner 클래스 import 하기
- 표준 입력 객체를 이용하여 Scanner 클래스의 객체 생성하기
- Scanner 객체를 이용하여 표준입력(keyboard)로부터 데이터 입력 받기
import java.util.Scanner;
Scanner scan = new Scanner(System.in); // System.in = 표준입력(키보드) 객체
int a = scan.nextInt(); // Scanner 객체, 정수형 자료 입력
double b = scan.nextDouble(); // 실수형 자료 입력(double)
String c = scan.nextLine(); // 문자열 자료 입력(String)