1. 상수의 데이터 타입

  • double a = 2.2 (O)
  • float a = 2.2  -> Error!
  • float a = 2.2F (O)

결론 : 실수는 double 형의 데이터 타입을 기본적으로 채택한다. double이 아닌 float으로 바꾸고 싶다면 상수에 F를 붙인다. 

 

마찬가지로 int형의 범위를 넘어가는 숫자를 자료형 long을 통해서 나타내고 싶다면...

  • int a = 2147483648 -> Error! : int 자료형의 범위를 넘어간다
  • long a = 2147483648 -> Error! : long 으로 명시적으로 바꿔주지 않았다.
  • long a = 2147483648L (O) : 상수에 L을 붙인다

 

2. 형 변환

정의 : 어떤 데이터의 형식을 바꾸다. 

 

☕ JAVA 타입 형변환 원리 & 방법 - 완벽 정리

타입 변환 (Type Conversion) 하나의 타입을 다른 타입으로 바꾸는 것을 타입 변환 혹은 형변환 이라고 한다. 예를 들어 byte 타입을 int 타입으로 변환하거나 반대로 int 타입을 byte 타입으로 변환하는

inpa.tistory.com

 

 

2.1 자동 형 변환

  • double a = 3.0F
    • 좌변 a : double형
    • 우변 3.0 : F를 통해 float으로 변환

 

Q. 양 변의 데이터 타입이 다른데 에러가 발생하지 않는 이유는?

A. 3.0F라는 상수를 double형으로 자동으로 형 변환

  • float과 double 중 double형이 더 많은 정보를 표현/수용할 수 있다.
  • 따라서 float 형에서 double형으로 형 변환이 일어나더라도 데이터 손실이 없다. 

 

Q. 그렇다면 반대로 double을 float으로 자동으로 형 변환할 수 있을까?

A. 불가능하다

  • float a = 3.0 -> Error!
  • float 보다 double이 더 많은 데이터를 표현할 수 있기 때문에 데이터가 유실될 가능성이 있다. 

 

결론 : 자동 형 변환의 원칙표현 범위가 좁은 데이터 타입에서 넓은 데이터 타입으로만 허용한다. 

2.1.1 예시

		int a = 3;
		float b = 1.0F;
		double c = a + b;

		System.out.println(c);
  1. a+b를 진행한다. int 와 float의 덧셈이므로 우선 형을 같도록 형 변환을 한다. 즉 int가  float형으로 변환된다. 따라서 a+b = 4.0F
  2. 4.0F를 c에 대입한다. c의 데이터 타입은 double형이고 double형에 float형을 대입하면 float형은 double형으로 형 변환이 일어난다.

 

2.2 명시적 형 변환

정의 : 수동으로 직접 형 변환

  • float a = (float)100.0;
  • int b = (int)100.0F;

 

3. 연산자

3.1 연산자의 우선순위

우선순위 연산자 결합 방향
1 [ ]  ()  . ->
2 ++  --  +(양수)  -(음수)  ~  !  (type)  new <-
3 *  /  % ->
4 +(더하기)  -(빼기)  +(문자열 결합 연산자) ->
5 <<  >>  >>> ->
6 <  <=  >  >=  instanceof ->
7 ==  != ->
8 &  & ->
9 ^  ^ ->
10 |  | ->
11 && ->
12 || ->
13 ?  : <-
14 =  *=  /=  +=  -=  %=  <<=  >>= >>>=  &=  ^=  != <-

 

3.2 비교와 불린

  • 주의! 문자열을 비교할 때는 ==(동등 비교 연산자)를 사용하는 것이 아니라 .equals()라는 메소드를 사용해야 한다. 

 

4. 입력과 출력

package org.opentutorials.javatutorials.io;

public class InputDemo {
	public static void main(String[] args) {
		System.out.println(args.length);
	}
}
  • String[] : 문자열로 구선된 배열을 의미
  • args : 문자열 데이터 타입을 담을 수 있는 배열

 

4.1 시작할 때 입력

Run Configuration 클릭
Input 작성

 

4.2 실행 중에 입력

:자바에서 기본적으로 제공하는 라이브러리 가운데 Scanner라는 라이브러리를 이용해 실행중에 입력을 받는다.

package org.opentutorials.javatutorials.io;

// Scanner를 사용하려면 애플리케이션에 로드해야 한다.
// java.util 안에 있는 Scanner라는 객체를 사용하겠다
import java.util.Scanner;

public class InputDemo {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int i = sc.nextInt();	// 실행을 멈추고 입력을 기다리는 상태가 된다
		System.out.println(i*1000);
		sc.close();
	}
}

+ Recent posts