타입은 어떤 값의 유형 및 종류를 의미한다. 타입에 따라 값이 차지하는 메모리 공간의 크기와 값이 저장되는 방식이 결정된다.
타입은 저장하고자 하는 값을 그대로 저장하는 기본타입과, 저장하고자 하는 값을 임의의 메모리 공간에 저장한 후, 그 메모리 공간의 주소를 저장하는 참조타입으로 분류된다.
기본 타입은 데이터의 실제 값을 저장하고, 참조타입은 데이터가 저장된 곳을 나타내는 주소값이 저장된다.
정수 타입 : 숫자를 나타내는 타입으로 byte
, short
, int
, long
의 총 4개의 타입으로 분류한다.
실수 타입 : 소수점을 가지는 값을 의미하며, float
형과 double
형으로 분류된다.
double형 리터럴에는 접미사 d를 붙여도, 붙이지 않아도 되지만, float형 리터럴에는 반드시 접미사 f를 붙여주어야 한다.
// float형 리터럴을 float형 변수에 할당
float num1 = 3.14f;
// double형 리터럴을 double형 변수에 할당
double num2 = 3.141592d;
double num2 = 3.141592;
double형은 float형보다 정밀도가 더 높고, 더 큰 실수를 저장할 수 있으며, 더 정확하게 저장할 수 있다.
논리 타입 : boolean
형 한가지 뿐이며, 참 또는 거짓을 저장할 수 있는 데이터 타입으로, 오직 true 혹은 false를 값으로 가진다.
문자 타입 : char
형 하나만 존재한다. 문자형 리터럴을 작성할 때에는 반드시 큰 따옴표 ””
가 아닌 작은 따옴표 ’’
를 사용해야 한다. 큰 따옴표를 사용한 리터럴은 문자형 리터럴이 아니라 문자열 리터럴로 인식되기 때문이다.
바이트 크기가 작은 타입에서 큰 타입으로 변환할 때 (예 : byte → int)
덜 정밀한 타입에서 더 정밀한 타입으로 변환할 때 (예 : 정수 → 실수)
재할당이 금지된 변수다. 즉, 변수와 같이 선언하고 할당하여 사용할 수 있지만, 재할당이 금지되어져 있다. 상수는 final
이라는 키워드를 사용해 선언할 수 있으며, 관례적으로 대문자에 언더바 _
를 넣어 구분하는 SCREAMING_SNAKE_CASE
를 사용한다.
상수를 사용하는 이유
문자가 가리키는 값 그 자체를 리터럴이라고 함.
float 타입의 변수에 실수형 리터럴을 할당할 때, 리터럴 뒤에 접미사 f
를 붙여주어야 한다.
long 타입의 변수에 정수형 리터럴을 할당할 때, 리터럴 뒤에 접미사 L
을 붙여주어야 한다.
소문자 l을 붙여도 되지만, 숫자와의 혼동을 방지하기 위해 보통 대문자 L
을 사용한다.
float weight = 74.5f;
final long LIGHT_YEAR = 9460730472580L;
float = 9460730472580.0F;
double = 9460730472580.0D;
String 타입은 큰따옴표 ""
로 감싸진 문자열을 의미한다.
String 타입의 변수는 String 변수명;
으로 선언할 수 있다.
String str = new String("Java");
System.out.println("문자열 : " + str); // "문자열 : Java"
System.out.println(str.charAt(0)); // 'J'
System.out.println(str.charAt(1)); // 'a'
System.out.println(str.charAt(2)); // 'v'
System.out.println(str.charAt(3)); // 'a'
compareToIgnoreCase()
메서드를 사용하면 된다.public class CompareToTest{
public static void main(String[] args){
Integer x = 3;
Integer y = 4;
Double z = 1.0;
System.out.println( x.compareTo(y) ); // -1
System.out.println( x.compareTo(3) ); // 0
System.out.println( x.compareTo(2) ); // 1
System.out.println( z.compareTo(2.7) ); // -1
}
}
String str = new String("Java");
System.out.println("문자열 : " + str); // 문자열 : Java
System.out.println(str.concat("수업")); // Java수업
System.out.println("concat() 메서드 호출 후 문자열 : " + str);
// concat() 메서드 호출 후 문자열 : Java
String str = new String("Oracle Java");
System.out.println("문자열 : " + str); // 문자열 : Oracle Java
System.out.println(str.indexOf('o')); // -1
System.out.println(str.indexOf('a')); // 2
System.out.println(str.indexOf("Java")); // 7
System.out.println("indexOf() 메서드 호출 후 원본 문자열 : " + str);
// indexOf() 메서드 호출 후 원본 문자열 : Oracle Java
String str = new String(" Java ");
System.out.println("문자열 : " + str); // 문자열 : Java
System.out.println(str + '|'); // Java |
System.out.println(str.trim() + '|'); // Java|
System.out.println("trim() 메서드 호출 후 문자열 : " + str); // trim() 메서드 호출 후 문자열 : Java
toUpperCase()
메서드는 해당 문자열의 모든 문자를 대문자로 변환시켜 준다.String str = new String("Java");
System.out.println("문자열 : " + str); // 문자열 : Java
System.out.println(str.toLowerCase()); // java
System.out.println(str.toUpperCase()); // JAVA
System.out.println("두 메서드 호출 후 문자열 : " + str); // 두 메서드 호출 후 문자열 : Java