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)

+ Recent posts