책 내용 중
"자료형을 충분히 이해하지 않고 프로그래밍을 시작하려는 것은 기초 공사를 제대로 하지 않고 건물을 세우는 것과 같다." 라는 구절이 있다. 그 만큼 자료형은 굉장히 중요한 부분이니 자료형을 잘 이해하고 넘어가자!!
자료형
자료형(data type)이란, 데이터의 종류와 크기를 결정하는 기본 구성 요소로 숫자, 문자열처럼 자료 형태로 사용하는 모든 것을 뜻한다.
프로그래밍에서 가장 기본적이면서 핵심 단위가 되는 것이 바로 자료형이다.
자료형 - 숫자
(1) 정수
정수를 표현하는 자료형은 int,long이다.
자료형표현 범위
int | -2,147,483,648 ~ 2,147,483,647 |
long | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
int,long을 사용한 예시를 살펴보자.
long 자료형 변수에 값을 대입할 때 int 자료형의 최댓값인 2,147,483,647 보다 크면 8764827384923849L; 처럼 끝에 접미사로 L자를 붙여주어야 한다.
만약 큰 숫자에 접미사 L을 누락하면 컴파일 오류가 발생한다.
🤔 왜 컴파일 오류가 발생할까?!
자바에서는 숫자 리터럴(값)을 기본적으로 int로 간주한다. 그래서 int 범위를 넘어서는 숫자를 long 타입으로 처리하려면, 컴파일러에게 long 타입의 리터럴임을 명시적으로 알려줘야 한다._ 이때 사용하는 것이 접미사 L이다!!
만약, 명시적으로 알려주지 않으면 int 리터럴로 간주하게 된다. 따라서 int 범위를 넘어서는 값을 int로 간주할 수 없어 컴파일 오류가 발생한다.
(2) 실수
자바에서 실수를 표현하는 자료형은 float,double이다.
자료형표현 범위
float | -3.4 x 10^28 ~ 3.4 x 10^38 |
double | -1.7 x 10^308 ~ 1.7 x 10^308 |
float와 double을 사용한 예를 알아보자.
자바에서 실수형은 기본 값이 double이므로 float 변수에 값을 대입할 때에는 반드시 접미사 F를 반드시 붙여줘야 한다!
만약에 float 자료형에 값을 대입할 때 접미사를 누락하면 컴파일 오류가 발생한다.
대문자 F대신 소문자 f도 사용 가능하다.
(3) 8진수와 16진수
8진수와 16진수는 int 자료형을 사용한다.
8진수 : 숫자 0으로 시작
16진수 : 숫자 0과 알파벳 x로 시작
int octal = 023; //십진수 : 19
int hex = 0xC3; // 십진수 : 195
(4) 문자열
자바에서 문자열을 나타내는 자료형은 String이다.
String a= "Happy Java";
String b= "a";
String c = "123";
new 키워드를 사용하여 객체로 만들어 사용할 수 있다. (*객체에 대한 자세한 이야기는 다음 시간에 다뤄볼 것이다. 우선 "새로 생성된 자료형" 정도로 알고 넘어가자.)
String a= new String("Happy Java");
String b= new String("a");
String c = new String("123");
다만, 문자열을 표현할 때는 가급적이면 첫 번째 표현식 즉,리터럴 표기 방식을 사용하는 것이 좋다. 리터럴 표기 방식은 가독성이 좋고 컴파일할 때 최적화에 도움을 준다.
**리터럴 표기 방식??
String a= "Happy Java"와 String b= new String("Happy Java"); a,b 변수는 같은 문자열 값을 갖게 되지만 완전히 동일하지는 않다.
a는 리터럴 표기 방식으로, 객체를 생성하지 않고 고정된 값을 그대로 대입하는 방법을 말한다.
b는 항상 새로운 String 객체를 만들게 된다. 따라서 리터럴 표기 방식으로 하는 것이 더 낫다.
(5) 원시 자료형
int, long, double, float, boolean, char 자료형은 원시 자료형이라고 한다.
원시 자료형은 new 키워드로 값을 생성할 수 없다. 원시 자료형은 다음 리터럴 표기 방식으로만 값을 세팅할 수 있다.
boolean result=true;
char a= 'A';
int i = 100000;
🔥 주의사항!!
String은 리터럴 표기 방식을 사용할 수 있지만 원시 자료형에 포함되지 않는다. String은 리터럴 표기 방식을 사용할 수 있도록 자바에서 특별 대우해주는 자료형이다!
(5-1 ) Wrapper 클래스
원시 자료형Wrapper 클래스
int | Integer |
long | Long |
double | Double |
float | Float |
boolean | Boolean |
char | Char |
원시 자료형에는 각각 그에 대응하는 Wrapper 클래스가 있다. Wrapper 클래스는 원시 자료형을 대신하여 사용할 수 있는 자료형으로, 객체지향 프로그래밍의 모든 기능을 활용할 수 있게 해준다.
ArrayList , HashMap, HashSet 등은 데이터를 생성할 때 원시 자료형 대신 그에 대응하는 Wrapper 클래스를 사용해야 한다. 값 대신 객체를 주고받을 수 있어서 코드를 객체 중심으로 작성하는 데 유리하다. 또한 멀티 스레드 환경에서 동기화를 지원하기 위해서도 Wrapper 클래스는 반드시 필요하다!
(6) 문자열 내장 메서드
(1) equals
문자열 2개가 같은지를 비교하여 결괏값을 리턴한다.
String a = "Hello";
String b = "hello";
String c = "Java";
System.out.println(a.equals(b)); // true
System.out.println(a.equals(c)); // false
문자열의 값을 비교할 때는 반드시 equals를 써야한다. == 연산자를 사용하면 기대하는 값과 다르게 나온다.
==연산자는 자료형이 같은 객체인지 판별할 때 사용하는 연산자이다.
String a = "Hello";
String b = new String("hello");
System.out.println(a.equals(b)); // true
System.out.println(a==b); // false
(2) indexOf
문자열에서 특정 문자열이 시작되는 위치를 리턴한다.
String a = "Hello Java";
System.out.println(a.indexOf("Java")); // 6출력
(3) contains
문자열에서 특정 문자열이 포함되어 있는지 여부를 리턴한다.
String a = "Hello Java";
System.out.println(a.contains("Java")); // true
(4) charAt
문자열에서 특정 문자의 위치를 리턴한다.
String a = "Hello Java";
System.out.println(a.charAt(6)); // "J" 출력
(5) replaceAll
문자열에서 특정 문자열을 다른 문자열로 바꿀 때 사용한다.
String a = "Hello Java";
System.out.println(a.replaceAll("Java","World")); // "Hello World" 출력
(6) subString
문자열에서 특정 문자열을 뽑아낼 때 사용한다. subString(시작 위치, 끝 위치) 형태로 사용한다.
String a = "Hello Java";
System.out.println(a.subString(0,4)); // "Hello" 출력
(6) toUpperCase
문자열을 모두 대문자로 변경할 때 사용한다.
String a = "Hello Java";
System.out.println(a.toUpperCase()); // "HELLO JAVA" 출력
(7) split
문자열을 특정한 구분자로 나누어 문자열 배열로 리턴한다.
String a = "a:b:c:d";
System.out.println(a.split(":")); // { "a","b","c","d"} 출력
(8) 문자열 포매팅
(1) String.format
숫자 : %d
문자열 : %s
문자 1개 : %c
부동 소수 " %f
8진수 : %o
16진수: %x
특수문자 %: %%
System.out.println(String.format("I eat %d apples.",3)) // 출력 : I eat 3 apples.
(2) System.out.printf
String.format 은 포매팅된 문자열을 리턴한다. 따라서 앞선 예제에서 포매팅된 문자열을 출력할 때 System.out.println 메서드를 함께 사용했다.
System.out.printf를 사용하면 String.format 메서드가 없어도 같은 형식으로 간단히 포매팅된 문자열을 출력할 수 있다.
오늘은 간단히 Java 자료형에 대해 알아보았다. 다음 시간에는 배열과 맵 , 집합 등의 자료형 2탄으로 찾아오려고 한다.😀
해당 게시글은 벨로그에서 이전된 글입니다. (https://velog.io/@yerim159/Java-%EC%9E%90%EB%B0%94%EC%9D%98-%EA%B8%B0%EC%B4%88-%EC%9E%90%EB%A3%8C%ED%98%95)
'Java' 카테고리의 다른 글
[Java] 자료구조 (1) | 2025.04.24 |
---|---|
[Java] 알고리즘 (0) | 2025.04.24 |
[Java] 자바 변수와 자료형 (0) | 2025.04.24 |
[Java] 자바 시작하기 (0) | 2025.04.24 |