배운것들을 정리합니다.
三昧境

Java/Java Language

[Java 기초] 자료형 type, 문자열 String, 정수 int, 실수 double

ujo_orr 2024. 11. 26. 17:17

자료형(type)

 자료의 형태 Data Type

 

  • 문자열 (String)
    • 큰 따옴표 내에 들어오는 문자형 자료
  • 숫자 자료형 (int, long, double, float)
    • 실수 정수 등의 자료
  • 불리언 자료형 (boolean)
    • true, false를 반환하는 자료

 

  • 기본 자료형
    • 실제 데이터 값을 저장
    • int, long, float, double, boolean, char, ...
  • 참조 자료형
    • 데이터가 저장된 메모리 주소 값을 저장
    • 클래스, 인터페이스, 배열, 열거형 , ...(String))

 

기본 자료형(Primitive)

정수형

자료형 크기 값의 범위 설명
byte 1 byte -128 ~ 127 작은 정수를 저장할 때 사용
shot 2 bytes -32,768 ~ 32,767 byte보다 큰 정수
int 4 bytes -2,147,483,648 ~ 2,147,483,647 일반적인 정수를 저장
long 8 bytes -2^63 ~ 2^63 - 1 큰 정수를 저장 (64비트)

실수형

자료형 크기 값의 범위 설명
float 4 byte 약 ±3.4e-038 ~ ±3.4e+038 단정도 부동소수점 (소수점 저장)
double 8 bytes 약 ±1.7e-308 ~ ±1.7e+308  배정도 부동소수점 (더 정밀함)

문자형

자료형 크기 값의 범위 설명
char 2 byte 0 ~ 65,535 (유니코드 값) 문자 하나를 저장

논리형

자료형 크기 값의 범위 설명
boolean 1 bit true or false 논리값 저장

 

참조 자료형(Reference)

자료형 설명
클래스(class) 정의된 데이터 구조 (필드와 메소드 포함)
배열(array) 같은 타입의 여러 값을 저장하는 데이터 구조
문자열(String) 불변 객체(immutable object) (기본 자료형과 다름)
래퍼 클래스(Wrapper class) 기본 자료형을 객체로 감싸는 클래스
인터페이스(interface) 메소드의 껍데기만 정의하여 다형성 지원

 

기본 자료형과 참조 자료형의 차이

항목 기본 자료형 참조 자료형
저장 방식 실제 값 저장 객체의 메모리 주소 저장
메모리 위치 스택(Stack) 참조 변수는 스택, 객체는 힙(Heap)
기본값 0, false 등 자료형별 기본값 null
동작 연산자(+,-,*,/, ...)로 직접 연산 가능 메소드 호출을 통해 동작 수행

변수(variable)

값을 자료형에 맞게 저장함

// 선언과 동시에 초기화
자료형 변수명 = 값;

String name = "문자열";
char rank = 'A';
int number = 15;
long number2 = 200;
float number3 = 1.5;
double number4 = 19.5;
boolean pan = true;
// 선언따로 값 따로
자료형 변수명 = 값;

String name;
name = "문자열";

char rank;
rank = 'A';

int number;
number = 15;

long number2;
number2 = 200;

float number3;
number3 = 1.5;

double number4;
number4 = 19.5;

boolean pan;
pan = true;

상수(constant)

변하지 않는 값.
한번 지정하면 바꿀 수 없음.

final 자료형 변수명 = 값;

final int number = 1;

// error
number = 2;

형 변환(type casting)

정수, 실수, 문자열 등 자료형간의 변환

// (자료형) 변수명 or 값;

int number = 5;

float number_f = (float) number; //변수명
double number_d = (double) 93; //값

묵시적 형 변환

컴파일러가 데이터 내부자료의 변화가 없다 판단할 때에는

int => long => float => double

처럼 형변환을 할때 파라미터 내부 자료형은 생략가능


연산자(operator)

값의 계산을 위해 사용되는 기호 (+, -)

 

산술연산자(arithmetic operator)

연산자 비고 예시 결과
+ 더하기 10 + 5 15
- 빼기 10 - 5 5
* 곱하기 10 * 5 50
/ 나누기 10 / 5 2
% 나머지 11 % 5 1
++ 증가 ++num
num++
num의 값 1 증가 (전위 연산)
num의 값 1 증가 (후위 연산)
-- 감소 --num
num--
num의 값 1 감소 (전위 연산)
num의 값 1 감소 (후위 연산)

 

대입연산자(assignment operator)

(int num = 10; 일때)

연산자 비고 예시 결과
= 우측에 있는 값 또는 식을
좌측에 있는 변수에 대입
num = num + 2;
num = num -2;
12
8
+= (좌 + 우) 결과를 좌측에 대입 num += 2; 12
-= (좌 - 우) 결과를 좌측에 대입 num -= 2; 8
*= (좌 * 우) 결과를 좌측에 대입 num *= 2; 20
/= (좌 / 우) 결과를 좌측에 대입 num /= 2; 5
%= (좌 % 우) 결과를 좌측에 대입 num %= 2; 0

 

비교연산자(comparison operation)

연산자 비고 예시 결과
> 좌측이 우측보다 큰가? 5 > 3 true
>= 좌측이 우측보다 크거나 같은가? 5 >= 5 true
< 좌측이 우측보다 작은가? 5 < 3 false
<= 좌측이 우측보다 작거나 같은가? 5 <= 3 false
== 좌측과 우측이 같은가? 5 == 5 true
!= 좌측과 우측이 다른가? 5 != 3 true

 

논리연산자(logical operator)

연산자 비고 예시 결과
&& and
좌측과 우측이 모두 참인가?
(5 > 3) && (3 > 1) true
|| or
좌측과 우측중 하나라도 참인가?
(5 > 3) || (3 < 1) true
! (참 또는 거짓)의 반대 !(5 == 5) false

 

삼항 연산자(ternary operator)

연산자 비고 예시 결과
조건 ? : 거짓 조건이 참 == 왼쪽
조건이 거짓 == 오른쪽
int x = 3;
int y =5;
int max = (x>y) ? x : y;
5

 


문자열(String)

(String name = "I am John"; 일때)

기능 비고 예시 결과
length 길이 name.length(); 11
toUpperCase 대문자로 name.toUpperCase(); I AM JOHN
toLowerCase 소문자로 name.toLowerCase(); i am john
contains 포함 여부 name.contains("John"); true
indexOf 인덱스 위치 정보 name.indexOf("John"); 5
lastIndexOf 인덱스 마지막 위치 정보 name.lastIndexOf("n"); 8
startWith 문자열로 시작하는가? name.startWith("John"); false
endsWith 문자열로 끝나는가? name.endsWith("n") true
replace 문자열 변환 name.replacer("John, Tommy"); I am Tommy
substring 문자열 자르기 name.substring(5); John
trim 앞뒤 공백 제거 name.trim(); I am John
concat 문자열 결합 name.concat(" Doe"); I am John Doe

 

비교

//같은 메모리 공간을 참조
String s1 = "Java";
String s2 = "Java";
System.out.println(s1 == s2); // true

// 다른 메모리 공간을 참조
String s1 = new String("Java");
String s2 = new String("Java");
System.out.println(s1 == s2); // false

// 문자열 내용을 비교하려면 equals
String s1 = new String("Java");
String s2 = new String("Java");
System.out.println(s1.equals(s2)); // true

일반적으로 String을 선언할시 똑같은 문자열이면 같은 메모리 주소에 저장되고
같은 메모리공간을 참조함

new 키워드로 선언할시 각각 다론 메모리 주소에 할당되어 같은 문자로 취급하지 않음.
(ex. 동명이인)

특수문자(Escape Sequence)

특수 문자 비고 예시 결과
\n 줄바꿈 System.out.println("A\nB"); A
B
\t System.out.println("A\tB"); A           B
\\ 역슬래쉬 System.out.println("A\\B"); A\B
\" 큰 따옴표 System.out.println("A\"B"); A"B
\' 작은 따옴표 System.out.println("A\'B"); A'B