[Java] 데이터 타입, 입출력, 형변환
전체적으로 C언어와 비슷한 점이 많다. 메모리를 알아서 할당해준다는 점에서 C보다는 편하지만, 데이터 타입을 일일이 명시해줘야 한다는 점 등 파이썬보다는 번거로운 면이 있다. 끝에;
를 넣어줘야하고 삼항 연산자와 do-while 문을 지원하는 등 C언어와는 비슷하고, 파이썬과는 다르다.
데이터 타입
- 문자열(String)이 대문자로 시작한다. 문자열을 보는 관점이 파이썬과는 달라서이다.
- 기본 데이터 타입과 참조 데이터 타입이 있는데, 문자열은 참조 데이터타입에 해당한다.
String
은char
배열을 참조한다.char
을 사용할 때는 꼭 작은 따옴표'
를,String
에서는 꼭 큰 따옴표"
를 사용해야 한다.char
도String
에 넣어서 쓸 수 있기 때문에String
,"
만 써도 무방하다. 자동 형변환도 일어난다.
기본형과 참조형 데이터타입
기본형(Primitive Type)
int
,double
,boolean
처럼 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입- 기본형은 사이즈가 명확하게 정해져있다. (
int
4byte,long
8byte,double
8byte)
참조형(Refernce Type)
- 데이터에 접근하기 위한 참조(주소)를 저장하는 데이터 타입
- 동적으로 사이즈를 변경할 수 있다.
- 선언하는 변수가 null값이 될 수 있는 경우
int
말고Integer
로 선언한다. (큐/스택에서peek
,poll
)
데이터 출력
System.out.println()
는 파이썬에서의print()
와 같고, 출력 후 줄바꿈\n
을 포함한다.System.out.print()
는 출력 후 줄바꿈을 하지 않는다.
데이터 입력
System.in
으로 사용자 입력을 받는 것이 복잡하고 어렵기 때문에,Scanner
클래스를 사용한다.
1
2
3
4
5
6
7
8
9
10
11
12
import java.util.Scanner;
public class ScannerEx {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("나이 입력: ");
int age = input.nextInt();
System.out.print("이름 입력: ");
String name = input.nextLine();
}
}
nextInt()
메서드로 정수를 읽은 후nextLine()
메서드로 문자열을 읽으려고 할 때, 이전의 개행 문자(‘\n’)이 남아 있으면 예상치 못한 동작이 발생할 수 있다. 따라서 이를 방지하기 위해nextLine()
메서드를 호출하여 개행 문자를 제거해 준다.
1
2
int age = input.nextInt(); // nextInt()가 \n 앞까지만 읽어서 \n이 남게된다.
input.nextLine(); // 남은 \n을 읽어주고 버린다.
문자열 비교
String
,ArrayList
,HashMap
과 같은 클래스들은 모두 객체(Object)를 참조하는 참조 데이터 타입이다.- 문자열과 같은 객체의 내용을 비교할 때는
==
이 아닌equals()
메소드를 사용해야 한다. str1.equals(str2)
→ 결과는 boolean 타입이다.
형변환
int
→long
→double
- 작은 범위에서 큰 범위로는 대입할 수 있으며, 자동 형변환이 일어난다.
- 큰 범위에서 작은 범위의 대입은 소수점 버림, 오버플로우의 문제가 발생할 수 있다.
- 같은 타입끼리의 계산은 그 타입의 결과를 낸다. (3/2 → 1)
- 서로 다른 타입의 계산은 큰 범위로 자동 형변환이 일어난다.
1
2
3
4
5
6
7
8
9
10
11
12
13
Scanner scanner = new Scanner(System.in);
int sum = 0;
int count = 0;
int input = 0;
System.out.println("숫자 입력. 중단하려면 -1 입력: ");
while ((input = scanner.nextInt()) != -1) {
sum += input;
count++;
}
double average = (double) sum / count;
String -> int 변환
1
2
String numberStr = "123";
int number = Integer.parseInt(numberStr);
int -> String 변환
1
2
int number = 123;
String numberStr = String.valueOf(number);
(자료형).valueOf(값)
- 기본 자료형의 값을 해당 래퍼 클래스 타입으로 변환
- Byte.valueOf(byte b)
- Short.valueOf(short s)
- Integer.valueOf(int i)
- Long.valueOf(long l)
- Float.valueOf(float f)
- Double.valueOf(double d)
- Boolean.valueOf(boolean b)
- Character.valueOf(char c)
Java14 Switch문
1
2
3
4
5
6
int coupon = switch (grade) {
case 1 -> 1000;
case 2 -> 2000;
case 3 -> 3000;
default -> 500;
};
- 이런 기능도 지원한다.
Reference - 김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
This post is licensed under CC BY 4.0 by the author.