πŸ΅μžλ°”μ˜ 데이터 νƒ€μž…

dev_itzel_02✨·2025λ…„ 3μ›” 23일

🍡Java Programming

λͺ©λ‘ 보기
3/3
post-thumbnail

πŸ“Œλ°μ΄ν„° νƒ€μž…

μžλ°”μ—μ„œ λ‹€λ£° 수 μžˆλŠ” λ°μ΄ν„°μ˜ μ’…λ₯˜

βœ”οΈκΈ°λ³Έ νƒ€μž…(8개)

  • boolean
  • char
  • byte
  • short
  • int
  • long
  • float
  • double

μ •μˆ˜ μ €μž₯ν•˜λŠ” νƒ€μž… πŸ‘‰πŸΌ byte, short, int, long
μ‹€μˆ˜ μ €μž₯ν•˜λŠ” νƒ€μž… πŸ‘‰πŸΌ float, double
Β» νƒ€μž…λ§ˆλ‹€ 크기가 λ‹€λ₯΄κΈ° λ•Œλ¬Έμ—, λ‹€λ£¨λŠ” κ°’μ˜ λ²”μœ„μ— 따라 μ μ ˆν•œ νƒ€μž…μ„ 선택해야 ν•œλ‹€.

μžλ°”μ—μ„œ μ˜μ–΄, ν•œκΈ€ ꡬ뢄없이 문자 ν•˜λ‚˜λŠ” 2λ°”μ΄νŠΈμ˜ μœ λ‹ˆμ½”λ“œλ‘œ μ €μž₯λœλ‹€. λ”°λΌμ„œ 문자 νƒ€μž…μ„ λ‚˜νƒ€λ‚΄λŠ” charλŠ” 2λ°”μ΄νŠΈμ΄λ‹€.

βœ”οΈλ ˆνΌλŸ°μŠ€ νƒ€μž…(1개)

νƒ€μž…μ€ 1개 μ΄μ§€λ§Œ μš©λ„λŠ” 3가지이닀.

  • 배열에 λŒ€ν•œ 레퍼런슀 πŸ‘‰πŸΌ 배열에 λŒ€ν•œ μ£Όμ†Œ κ°’
  • ν΄λž˜μŠ€μ— λŒ€ν•œ 레퍼런슀 πŸ‘‰πŸΌ 객체에 λŒ€ν•œ μ£Όμ†Œ κ°’
  • μΈν„°νŽ˜μ΄μŠ€μ— λŒ€ν•œ 레퍼런슀

λ ˆνΌλŸ°μŠ€λž€?
Cμ–Έμ–΄μ˜ 포인터와 λΉ„μŠ·ν•œ κ°œλ…μ΄λ‹€.
ν•œ κ°€μ§€ λ‹€λ₯Έ 점은 μ‹€μ œ μ£Όμ†Œκ°’μ„ κ°€μ§€μ§€ μ•ŠλŠ”λ‹€λŠ” 것이닀.

βœ”οΈλ¬Έμžμ—΄

반면, λ¬Έμžμ—΄μ€ μžλ°”μ˜ κΈ°λ³Έ νƒ€μž…μ— μ†ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μžλ°” λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ μ œκ³΅ν•˜λŠ” String 클래슀λ₯Ό μ΄μš©ν•œλ‹€.

String strName = "apple";

μžλ°”μ—μ„œλŠ” λ¬Έμžμ—΄κ³Ό κΈ°λ³Έ νƒ€μž…μ˜ + 연산이 μ‹€ν–‰λ˜λ©΄, κΈ°λ³Έ νƒ€μž…μ˜ 값이 λ¬Έμžμ—΄λ‘œ λ°”λ€Œκ³  두 λ¬Έμžμ—΄μ΄ μ—°κ²°λœ μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ΄ μƒμ„±λœλ‹€.

strName + 1.8 -> "apple1.8"

βœ”οΈλ³€μˆ˜μ™€ μ„ μ–Έ

λ³€μˆ˜ : 데이터λ₯Ό μ €μž₯ν•˜λŠ” 곡간

λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λ©΄ νƒ€μž… 크기의 λ©”λͺ¨λ¦¬κ°€ ν• λ‹Ήλ˜λ©°, ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 쀑 값을 μ“°κ³  μ½λŠ” κ³΅κ°„μœΌλ‘œ μ‚¬μš©λœλ‹€.

int price;

데이터 νƒ€μž…κ³Ό λ³€μˆ˜ μ΄λ¦„μœΌλ‘œ μ„ μ–Έν•œλ‹€.
μ‹€μˆ˜λŠ” μ €μž₯λ˜μ§€ μ•ŠλŠ”λ‹€β—

  • μ •μˆ˜λ₯Ό μ €μž₯ν•  4λ°”μ΄νŠΈ 곡간이 ν• λ‹Ή
  • κ³΅κ°„μ˜ 이름은 price둜 λΆ™μž„
char c1, c2, c3;

같은 νƒ€μž…μ˜ λ³€μˆ˜λŠ” ,둜 μ—¬λŸ¬ 개 μ„ μ–Έ κ°€λŠ₯ν•˜λ‹€.

πŸ”Ήλ³€μˆ˜ μ„ μ–Έκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™”

int radius = 10;
char c1 = 'a', c2 = 'b', c3 = 'c';
double weight = 25.3;

πŸ”Ήλ³€μˆ˜ 읽기와 μ €μž₯

radius = 10 * 5;
c1 = 'r';
weight = weight + 5.0; // λ³€μˆ˜ 값을 읽고 5.0을 더해 weight에 λ‹€μ‹œ μ €μž₯

μ„ μ–Έν•œ 후에도 값을 λ‹€μ‹œ μ €μž₯ν•˜κ³  읽을 수 μžˆλ‹€.

βœ”οΈλ¦¬ν„°λŸ΄

ν”„λ‘œκ·Έλž¨μ— 직접 ν‘œν˜„ν•œ κ°’

  • μ •μˆ˜ : 34
  • μ‹€μˆ˜ : 42.1
  • 문자 : "%"
  • 논리 : true
  • λ¬Έμžμ—΄ : "hi"

πŸ”Ήμ •μˆ˜ λ¦¬ν„°λŸ΄

int n = 15; // 10μ§„μˆ˜
int m = 015; // 8μ§„μˆ˜
int k = 0x15; // 16μ§„μˆ˜
int b = 0b0101; // 2μ§„μˆ˜

μ •μˆ˜ λ¦¬ν„°λŸ΄μ€ 기본적으둜 int νƒ€μž…μœΌλ‘œ μžλ™ μ»΄νŒŒμΌλœλ‹€.
λ§Œμ•½ long νƒ€μž…μœΌλ‘œ μ§€μ •ν•˜λ €λ©΄ 숫자 뒀에 L λ˜λŠ” l을 λΆ™μ—¬μ•Ό ν•œλ‹€. 보톡 μ†Œλ¬Έμž l은 숫자 1κ³Ό ν˜Όλ™λ˜λ―€λ‘œ λŒ€λ¬Έμž L 을 μ‚¬μš©ν•˜λŠ” 것이 μ’‹λ‹€.

λ¦¬ν„°λŸ΄ 뒀에 λΆ™μ΄λŠ” μ•ŒνŒŒλ²³μ„ 접미사라고 ν•œλ‹€. μ•žμ— 뢙이면 접두사라고 ν•œλ‹€.

long g = 24L;

이미 longμ΄λΌλŠ” 데이터 νƒ€μž…μ„ λͺ…μ‹œν–ˆλŠ”λ°, μ™œ ꡳ이 접미사λ₯Ό λΆ™μ—¬μ•Ό ν•˜λŠ”μ§€ κΆκΈˆν–ˆλ‹€.

μ—¬κΈ°μ„œ λ¨Όμ € μ•Œμ•„μ•Ό ν•˜λŠ” 것은
λ³€μˆ˜μ— 값을 μ €μž₯ν•  λ•ŒλŠ” "λ³€μˆ˜μ˜ νƒ€μž…"κ³Ό "λ¦¬ν„°λŸ΄ νƒ€μž…"이 μΌμΉ˜ν•΄μ•Ό ν•œλ‹€λŠ” 것이닀❗
(λ¬Όλ‘ , μ˜ˆμ™ΈλŠ” μ‘΄μž¬ν•œλ‹€,,)

κ·Έλž˜μ„œ λ³€μˆ˜ μ„ μ–Έ μ‹œ μ‹€ν–‰ 과정을 μ•Œμ•„λ³΄μ•˜λ‹€.

μžλ°”λŠ” λ¦¬ν„°λŸ΄μ„ λ¨Όμ € μΈμ‹ν•œ ν›„ λ³€μˆ˜ νƒ€μž…μ„ κ³ λ €ν•˜μ—¬ νƒ€μž… λ³€ν™˜μ„ μˆ˜ν–‰ν•œλ‹€λŠ” 것이닀.

long s = 10;

μœ„μ˜ μ½”λ“œλ₯Όμ˜ μ½”λ“œλ₯Ό μ»΄νŒŒμΌλŸ¬κ°€ ν•΄μ„ν•˜λŠ” 과정을 μ„€λͺ…ν•΄λ³΄μžλ©΄

  1. λ¦¬ν„°λŸ΄ 10을 인식
    πŸ‘‰πŸΌ 10은 μ •μˆ˜ λ¦¬ν„°λŸ΄λ‘œ 기본적으둜 int νƒ€μž…μœΌλ‘œ 해석

  2. λ¦¬ν„°λŸ΄ νƒ€μž…κ³Ό λ³€μˆ˜ νƒ€μž…μ„ 비ꡐ
    πŸ‘‰πŸΌ sλŠ” long νƒ€μž…μ΄μ§€λ§Œ, 10은 int νƒ€μž…

  3. ν˜• λ³€ν™˜
    πŸ‘‰πŸΌ int νƒ€μž…μ˜ 10을 long νƒ€μž…μœΌλ‘œ μžλ™ λ³€ν™˜

λ‹€λ₯Έ 경우λ₯Ό 보자.

long s = 2147483648;  // 컴파일 였λ₯˜ ❌

2147483648은 기본적으둜 int νƒ€μž…μœΌλ‘œ ν•΄μ„λœλ‹€.

ν•˜μ§€λ§Œ int의 μ΅œλŒ€κ°’μ€ 2147483647μ΄λ―€λ‘œ 2147483648은 int λ²”μœ„λ₯Ό μ΄ˆκ³Όν•œλ‹€.

λ”°λΌμ„œ λ¦¬ν„°λŸ΄μ„ int둜 λ¨Όμ € 인식해버렀, λ³€μˆ˜ νƒ€μž…μ„ κ³ λ €ν•˜λŠ” κ³Όμ •μ—μ„œ 였λ₯˜κ°€ λ°œμƒν•˜λŠ” 것이닀.

접미사λ₯Ό μ‚¬μš©ν•˜λŠ” 경우

long s = 2147483648L;  // 정상 λ™μž‘ βœ…

L을 뢙이면 μ²˜μŒλΆ€ν„° long λ¦¬ν„°λŸ΄λ‘œ μΈμ‹λ˜λ―€λ‘œ 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€.

μ˜ˆμ™Έμ μΈ 상황을 보자.

byte s = 127;

byte의 λ²”μœ„λŠ” -128 ~127이닀 .
λ¦¬ν„°λŸ΄μ€ int νƒ€μž…, λ³€μˆ˜ νƒ€μž…μ€ byte이닀.
μœ„μ˜ λ‚΄μš©μ„ λ”°λ₯΄λ©΄ 두 개의 νƒ€μž…μ΄ λ‹€λ₯΄λ―€λ‘œ 였λ₯˜κ°€ λ‚˜μ•Ό 정상이닀.
ν•˜μ§€λ§Œ λ¦¬ν„°λŸ΄μ΄ int νƒ€μž…μΌμ§€λΌλ„ byteνƒ€μž…μ˜ λ²”μœ„λ₯Ό λ²—μ–΄λ‚˜μ§€ μ•ŠμœΌλ―€λ‘œ λ¬Έμ œκ°€ μ—†λ‹€.

double s = 3.14f;

이 κ²½μš°λ„ λ§ˆμ°¬κ°€μ§€μ΄λ‹€.
접미사 fλ₯Ό λͺ…μ‹œν•˜μ—¬ λ¦¬ν„°λŸ΄μ€ float νƒ€μž…μ΄μ§€λ§Œ double의 데이터 λ²”μœ„κ°€ 더 크기 λ•Œλ¬Έμ— λ¬Έμ œκ°€ μ—†λ‹€.

πŸ”Ήμ‹€μˆ˜ λ¦¬ν„°λŸ΄

12.  12.0  .1234  0.1234  1234E-4

μ†Œμˆ˜μ  ν˜•νƒœλ‚˜ μ§€μˆ˜ ν˜•νƒœλ‘œ ν‘œν˜„ν•œλ‹€.
μ§€μˆ˜ eλŠ” 10의 nμŠΉμ„ λ‚˜νƒ€λ‚Έλ‹€. e3은 10의 3승으둜 1000을 λ‚˜νƒ€λ‚Έλ‹€.

μ—¬κΈ°μ„œ μ€‘μš”ν•œκ²ƒ eλŠ” μ‹€μˆ˜ν˜•μ„ λ‚˜νƒ€λ‚΄λ―€λ‘œ κ·Έλƒ₯ 1000이 μ•„λ‹Œ 1000.0이닀.

μ‹€μˆ˜ λ¦¬ν„°λŸ΄μ€ double νƒ€μž…μœΌλ‘œ μžλ™ μ²˜λ¦¬λœλ‹€.

float f = 0.1234f;
double w = .1234D;

f = 0.1234둜 ν•˜λ©΄ 컴파일 였λ₯˜κ°€ λ‚œλ‹€. κΈ°λ³Έ doubleνƒ€μž…μœΌλ‘œ μΈμ‹ν•˜κ³  λ³€μˆ˜ νƒ€μž…κ³Ό μΌμΉ˜ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έβ—

πŸ”Ήλ¬Έμž λ¦¬ν„°λŸ΄

단일 μΈμš©λΆ€ν˜Έ ' '둜 ν‘œν˜„ν•˜κ±°λ‚˜ \u λ‹€μŒμ— 문자의 μœ λ‹ˆμ½”λ“œ 값을 μ‚¬μš©ν•˜μ—¬ ν‘œν˜„ν•œλ‹€.

char a = 'A';
char b = 'κΈ€';
char c = \u0041;

πŸ”ΉνŠΉμˆ˜λ¬Έμž λ¦¬ν„°λŸ΄

λ°±μŠ¬λž˜μ‹œ \ λ‹€μŒμ— 특수 기호λ₯Ό λΆ™μ—¬ ν‘œν˜„ν•œλ‹€.
μ΄μŠ€μΌ€μ΄ν”„ μ‹œν€€μŠ€λΌκ³ λ„ ν•œλ‹€.

πŸ”Ήλ…Όλ¦¬ λ¦¬ν„°λŸ΄κ³Ό boolean νƒ€μž…

true, false

boolean a = true;
boolean b = 10 > 0; // μ°Έμ΄λ―€λ‘œ true
boolean c = 1; // νƒ€μž… 뢈일치 였λ₯˜. 숫자λ₯Ό μ°Έ, κ±°μ§“μœΌλ‘œ μ‚¬μš© λΆˆκ°€

πŸ‘»Tip. κΈ°λ³Έ νƒ€μž… μ΄μ™Έμ˜ λ¦¬ν„°λŸ΄

πŸ”Ήnull λ¦¬ν„°λŸ΄

null은 κΈ°λ³Έ νƒ€μž…μ— μ‚¬μš©λ  수 μ—†κ³ , 객체 λ ˆνΌλŸ°μŠ€μ— λŒ€μž…λœλ‹€.

int n = null; // 였λ₯˜. κΈ°λ³Έ νƒ€μž…μ€ λΆˆκ°€
String str = null; // 정상

πŸ”Ήλ¬Έμžμ—΄ λ¦¬ν„°λŸ΄

이쀑 μΈμš©λΆ€ν˜Έ " " μ‚¬μš©ν•˜λ©°, λͺ¨λ“  λ¬Έμžμ—΄μ€ String클래슀의 객체이닀.

String str = "Good";

πŸ”Ήvar ν‚€μ›Œλ“œ

Java10 λΆ€ν„° μ§€μ—­ λ³€μˆ˜ μ„ μ–Έ μ‹œ, λ³€μˆ˜ νƒ€μž… λŒ€μ‹  var ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.

var price = 200;
var name = "what";
var pi = 3.14;
var point = new Point();

λ¦¬ν„°λŸ΄ νƒ€μž…μ„ 톡해 μžλ™μœΌλ‘œ λ³€μˆ˜ νƒ€μž…μ„ μ§€μ •ν•œλ‹€.

ν•˜μ§€λ§Œ, λ³€μˆ˜ 선언문에 μ΄ˆκΉƒκ°’μ΄ μ£Όμ–΄μ§€μ§€ μ•ŠμœΌλ©΄ 였λ₯˜κ°€ λ°œμƒν•œλ‹€.

var name;

νƒ€μž…μ„ μΆ”λ‘ ν•  수 μ—†κΈ° λ•Œλ¬Έβ—
λ˜ν•œ, var μ‚¬μš©μ€ μ§€μ—­ λ³€μˆ˜μ—λ§Œ ν•œμ •λœλ‹€λŠ” 점

βœ”οΈμƒμˆ˜

λ³€μˆ˜ μ„ μ–Έ μ‹œ final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄ μ„ μ–Έν•œλ‹€.
λ³€μˆ˜μ™€ 달리 μ‹€ν–‰ 쀑에 값을 λ³€κ²½ν•  수 μ—†λ‹€.

final double PI = 3.141592;

μƒμˆ˜ 선언은 λ³€μˆ˜ 이름은 주둜 λŒ€λ¬Έμžλ‘œ μž‘μ„±ν•œλ‹€.

PI = 3.14; // 컴파일 였λ₯˜
public class CircleArea {
    public static void main(String[] args) {
        final double PI = 3.14; // μƒμˆ˜ μ„ μ–Έ

        double radius = 10.0; // λ¦¬ν„°λŸ΄ κΈ°λ³Έ νƒ€μž…μ€ double
        double circleArea = radius*radius*PI;

        System.out.println("면적:" + circleArea);
    }
}

βœ”οΈνƒ€μž… λ³€ν™˜

λ³€μˆ˜λ‚˜ μƒμˆ˜ λ˜λŠ” λ¦¬ν„°λŸ΄ νƒ€μž…μ„ λ‹€λ₯Έ νƒ€μž…μœΌλ‘œ λ°”κΎΈλŠ” 것

πŸ”Ήμžλ™ νƒ€μž… λ³€ν™˜

μΉ˜ν™˜λ¬Έ(=) μ΄λ‚˜ μˆ˜μ‹ λ‚΄μ—μ„œ νƒ€μž…μ΄ μΌμΉ˜ν•˜μ§€ μ•Šμ„ λ•Œ, μ»΄νŒŒμΌλŸ¬λŠ” 였λ₯˜ λŒ€μ‹  μž‘μ€ νƒ€μž…μ„ 큰 νƒ€μž…μœΌλ‘œ μžλ™ λ³€ν™˜ν•œλ‹€.

long m = 25; // λ¦¬ν„°λŸ΄μ€ int. long으둜 μžλ™ λ³€ν™˜
double d = 3.14 * 10; // μ‹€μˆ˜ 연산을 μœ„ν•΄ 10이 10.0으둜 μžλ™ λ³€ν™˜

πŸ”Ήκ°•μ œ νƒ€μž… λ³€ν™˜

κ°œλ°œμžκ°€ κ°•μ œλ‘œ νƒ€μž… λ³€ν™˜μ„ μ§€μ‹œν•˜λŠ” 경우.

double d = 1.9;
int n = (int)d; // κ°•μ œ νƒ€μž… λ³€ν™˜

1.9μ—μ„œ 1만 μ €μž₯λœλ‹€. 이에 데이터 손싀이 λ°œμƒν•˜κ²Œ λœλ‹€. μΊμŠ€νŒ…μ΄λΌκ³ λ„ λΆ€λ₯Έλ‹€.


[좜처]

profile
πŸœπŸ‘£steadinessπŸœπŸ‘£

0개의 λŒ“κΈ€