JavaπŸŽ€

πŸ’›λ³€μˆ˜μ™€ νƒ€μž…

Jeein0313 2022. 11. 30. 15:56

1οΈβƒ£λ³€μˆ˜ μ„ μ–Έ

int age; // λ³€μˆ˜ νƒ€μž…, λ³€μˆ˜ 이름

λ³€μˆ˜ 이름은 첫 번째 κΈ€μžκ°€ λ¬Έμžμ—¬μ•Όν•˜κ³ , μ€‘κ°„λΆ€ν„°λŠ” 문자, 숫자, $, _ 포함 κ°€λŠ₯ν•˜λ‹€.

μ²«λ¬ΈμžλŠ” μ†Œλ¬Έμžλ‘œ μ‹œμž‘ν•˜κ³ , 캐멀 μŠ€νƒ€μΌ(λŒ€μ†Œλ¬Έμžκ°€ μ„žμ—¬μžˆλ„λ‘)둜 μž‘μ„±ν•œλ‹€.

ex. mathScore, sportsCar

 

❕ μ΄ˆκΈ°ν™”λ˜μ§€ μ•Šμ€ λ³€μˆ˜λ₯Ό 연산식에 μ‚¬μš©ν•  경우 컴파일 μ—λŸ¬κ°€ λ°œμƒν•œλ‹€.

int value;
int result=value+10;

2οΈβƒ£μ •μˆ˜ νƒ€μž…

 

μžλ°”μ˜ λ³€μˆ˜ νƒ€μž…μ—λŠ” μ •μˆ˜, μ‹€μˆ˜, 논리값을 μ €μž₯ν•˜λŠ” primitive type(κΈ°λ³Έ νƒ€μž…)이 8개 μ‘΄μž¬ν•œλ‹€.

μ •μˆ˜ : byte char, short, int, long

μ‹€μˆ˜ : float, double

논리 : boolean (true/false)

 

μ •μˆ˜ νƒ€μž… 5개

 

byte 1byte 8bit  -128~127
short 2byte 16bit -32768~32767
char 2byte 16bit -32768~32767
int 4byte 32bit μ•½ -21μ–΅~21μ–΅
long 8byte 64bit μ•½ -922κ²½~922κ²½

λ©”λͺ¨λ¦¬ 크기λ₯Ό n개라 ν•  λ•Œ, μ •μˆ˜ νƒ€μž…μ€ 2μ§„μˆ˜λ‘œ μ €μž₯ν•œλ‹€.

 

[μ–‘μ˜ μ •μˆ˜]

κ°€μž₯ μ™Όμͺ½μ— μœ„μΉ˜ν•œ λΉ„νŠΈλŠ” λΆ€ν˜Έλ₯Ό λ‚˜νƒ€λ‚΄κ³ , 이 λΉ„νŠΈκ°€ 0이면 μ–‘μˆ˜, 1이면 μŒμˆ˜μ΄λ‹€. 그리고 이 λΉ„νŠΈκ°€ 0인 경우, λ‚˜λ¨Έμ§€ λΉ„νŠΈλŠ” λ°μ΄ν„°μ˜ 양적인 크기λ₯Ό 의미.

λΆ€ν˜Έλ₯Ό κ²°μ •μ§“λŠ” κ°€μž₯ μ™Όμͺ½μ— μœ„μΉ˜ν•œ λΉ„νŠΈλ₯Ό κ°€λ¦¬μΌœ MSB(Most Significant Bit)라 ν•œλ‹€. 이 λΉ„νŠΈμ— λ”°λΌμ„œ κ°’μ˜ λΆ€ν˜Έλ§Œ λ‹¬λΌμ§€λŠ” 것이 μ•„λ‹ˆλΌ, λ‚˜λ¨Έμ§€ λΉ„νŠΈμ˜ 해석 방법도 달라진닀.

 

[음의 μ •μˆ˜]

λ§Œμ•½μ— -1을 μœ„μ™€ 같은 λ°©λ²•μœΌλ‘œ ν‘œν˜„ν•œ λ‹€λ©΄? 10000001

1+(-1) =0 → 00000001 + 10000001 = 10000010 (0이 μ•„λ‹Œ κ²°κ³Όκ°€ λ‚˜μ˜΄)

λ”°λΌμ„œ 음의 μ •μˆ˜λŠ” μ–‘μ˜ μ •μˆ˜μ˜ μ΄μ§„μˆ˜ ν‘œν˜„μ— 2의 보수λ₯Ό μ·¨ν•œ 결과둜 ν‘œν˜„ν•œλ‹€.

 

2의 보수 κ΅¬ν•˜λŠ” 법

각 λΉ„νŠΈλ₯Ό λ°˜μ „μ‹œν‚¨λ‹€μŒ(1의 보수), 1을 λ”ν•˜λ©΄ 2의 보수λ₯Ό κ΅¬ν•œλ‹€.

5+(-5) =0 // 00000101 + 11111011 = 100000000 (올림 수(Carry)λŠ” 버린닀) λ”°λΌμ„œ 계산 κ²°κ³Ό 0.

 

byte, short, int, long은 λͺ¨λ‘ λΆ€ν˜Έ μžˆλŠ” μ •μˆ˜ νƒ€μž…μœΌλ‘œ μ΅œμƒμœ„ bitλŠ” λΆ€ν˜Έ bit, λ‚˜λ¨Έμ§€λŠ” κ°’μ˜ λ²”μœ„

 

λ¦¬ν„°λŸ΄ : ν”„λ‘œκ·Έλž˜λ¨Έκ°€ 직접 μž…λ ₯ν•œ κ°’

	//λ¦¬ν„°λŸ΄
        //2μ§„μˆ˜
        int x=0b1011;
        System.out.println(x);//11

        //8μ§„μˆ˜
        int y=013;
        System.out.println(y);//11

        //16μ§„μˆ˜
        int z=0xB3;
        System.out.println(z);//179

 

long νƒ€μž…

기본적으둜 μ»΄νŒŒμΌλŸ¬λŠ” μ •μˆ˜ λ¦¬ν„°λŸ΄μ„ int νƒ€μž… κ°’μœΌλ‘œ κ°„μ£Όν•˜κΈ° λ•Œλ¬Έμ—, int νƒ€μž…μ˜ ν—ˆμš© λ²”μœ„λ₯Ό λ„˜μ–΄κ°€λ©΄ 뒀에 μ†Œλ¬Έμž l, λŒ€λ¬Έμž L을 λΆ™μ—¬ long νƒ€μž… κ°’μž„μ„ μ»΄νŒŒμΌλŸ¬μ— μ•Œλ €μ€˜μ•Ό ν•œλ‹€.

	//long
        long longValue= 100000000000000L;
        System.out.println(longValue);

 

3οΈβƒ£λ¬Έμž νƒ€μž…

ν•˜λ‚˜μ˜ 문자λ₯Ό ' '둜 감싼 것을 문자 λ¦¬ν„°λŸ΄μ΄λΌ ν•œλ‹€. 문자 λ¦¬ν„°λŸ΄μ€ μœ λ‹ˆμ½”λ“œλ‘œ λ³€ν™˜λ˜μ–΄ μ €μž₯되기 λ•Œλ¬Έμ— μ •μˆ˜ νƒ€μž…μ— μ†ν•œλ‹€. (μœ λ‹ˆμ½”λ“œκ°€ μ •μˆ˜μ΄λ―€λ‘œ char νƒ€μž…λ„ μ •μˆ˜ νƒ€μž…μ— μ†ν•œλ‹€) μœ λ‹ˆμ½”λ“œλž€ 세계 각ꡭ의 문자λ₯Ό 0~65535숫자둜 λ§€ν•‘ν•œ ꡭ제 ν‘œμ€€ κ·œμ•½.

 	//char
        char v1='a';
        char v2='κ°€';
        System.out.println((int)v1);//97
        System.out.println((int)v2);//44032

char νƒ€μž…μ˜ λ³€μˆ˜μ— μ–΄λ–€ λ¬Έμžλ„ λŒ€μž…ν•˜μ§€ μ•Šκ³  λ‹¨μˆœνžˆ μ΄ˆκΈ°ν™”λ₯Ό ν•  λͺ©μ μœΌλ‘œ λ‹€μŒκ³Ό 같이 빈 문자λ₯Ό λŒ€μž…ν•˜λ©΄ 컴파일 μ—λŸ¬ λ°œμƒ.

char c='';//컴파일 μ—λŸ¬
char c=' ';//곡백 ν•˜λ‚˜λ₯Ό ν¬ν•¨ν•΄μ„œ μ΄ˆκΈ°ν™”

 

4οΈβƒ£μ‹€μˆ˜ νƒ€μž…

float 4byte 32bit 1.4e-45~3.4e38(μ–‘μˆ˜ κΈ°μ€€) 7자리(유효 μ†Œμˆ˜ μ΄ν•˜ 자리)
double 8byte 64bit 4.9e-324~1.8e308(μ–‘μˆ˜ κΈ°μ€€) 15자리

μžλ°” IEEE 754 ν‘œμ€€μ— κ·Όκ±°ν•΄μ„œ floatνƒ€μž…κ³Ό double νƒ€μž…μ˜ 값을 뢀동 μ†Œμˆ˜μ  λ°©μ‹μœΌλ‘œ λ©”λͺ¨λ¦¬μ— μ €μž₯.

http://www.tcpschool.com/java/java_datatype_floatingPointNumber

 

μ½”λ”©κ΅μœ‘ ν‹°μ”¨ν”ΌμŠ€μΏ¨

4μ°¨μ‚°μ—…ν˜λͺ…, μ½”λ”©κ΅μœ‘, μ†Œν”„νŠΈμ›¨μ–΄κ΅μœ‘, μ½”λ”©κΈ°μ΄ˆ, SWμ½”λ”©, κΈ°μ΄ˆμ½”λ”©λΆ€ν„° μžλ°” 파이썬 λ“±

tcpschool.com

μ»΄νŒŒμΌλŸ¬λŠ” μ‹€μˆ˜ λ¦¬ν„°λŸ΄μ„ 기본적으둜 double νƒ€μž…μœΌλ‘œ ν•΄μ„ν•˜κΈ° λ•Œλ¬Έμ— double νƒ€μž… λ³€μˆ˜μ— λŒ€μž…ν•΄μ•Ό ν•œλ‹€. float νƒ€μž…μ— λŒ€μž…ν•˜κ³  μ‹Άλ‹€λ©΄ λ¦¬ν„°λŸ΄ 뒀에 μ†Œλ¬Έμž 'f'λ‚˜ λŒ€λ¬Έμž'F'λ₯Ό λΆ™μ—¬ μ»΄νŒŒμΌλŸ¬κ°€ float νƒ€μž…μž„μ„ μ•Œ 수 μžˆλ„λ‘ ν•΄μ•Ό ν•œλ‹€.

 

double var = 3.14;

float var = 3.14f;
float var = 3.14F;

 

5️⃣ 논리 νƒ€μž…

boolean stop=true;
boolean stop=false;

boolean νƒ€μž… λ³€μˆ˜λŠ” 주둜 두가지 μƒνƒœκ°’μ„ μ €μž₯ν•  ν•„μš”κ°€ μžˆμ„ 경우 μ‚¬μš©λ˜λ©°, μƒνƒœκ°’μ— 따라 쑰건문과 μ œμ–΄λ¬Έμ˜ 흐름을 λ³€κ²½ν•˜λŠ”λ° μ‚¬μš©λœλ‹€.

 

6️⃣ λ¬Έμžμ—΄ νƒ€μž…

String str="hello";

μ΄μŠ€μΌ€μ΄ν”„ 문자

	//escape 문자
        System.out.println("hello\"");
        System.out.println("hello\'");
        System.out.println("hello\\");
        System.out.println("hello\thi");//hello   hi

 

7️⃣ μžλ™ νƒ€μž… λ³€ν™˜ (promotion)

κ°’μ˜ ν—ˆμš© λ²”μœ„κ°€ μž‘μ€ νƒ€μž…μ΄ 큰 νƒ€μž…μœΌλ‘œ λŒ€μž…λ  λ•Œ

byte < short, char < int < long < float< double

	//μžλ™ νƒ€μž… λ³€ν™˜ 큰=μž‘μ€
        byte byteV=10;
        int intV=byteV;

        long longV=500000000000L;
        float floatV=longV;
        
        //char의 경우 int둜 μžλ™ λ³€ν™˜λ˜λ©΄ μœ λ‹ˆμ½”λ“œ 값이 int νƒ€μž…μ— λŒ€μž…λ¨
        char charV='A';
        int unitV=charV;
        
        //μ˜ˆμ™Έ : byte νƒ€μž…μ€ char둜 λ³€ν™˜ν•  수 μ—†μŒ.

 

8️⃣ κ°•μ œ νƒ€μž… λ³€ν™˜(casting)

큰 ν—ˆμš© λ²”μœ„ νƒ€μž…μ„ μž‘μ€ ν—ˆμš© λ²”μœ„ νƒ€μž…μœΌλ‘œ μͺΌκ°œμ„œ μ €μž₯ν•˜λŠ” 것

 	//κ°•μ œ νƒ€μž… λ³€ν™˜ : 큰 것을 μž‘μ€ κ²ƒμœΌλ‘œ μͺΌκ°œμ„œ 계산
        int intV2=10;
        byte byteV2=(byte)intV2;//-128~127κΉŒμ§€μ˜ λ²”μœ„λ§Œ μ›λž˜ κ°’ 보쑴 κ°€λŠ₯

 

9️⃣ μ—°μ‚°μ‹μ—μ„œ μžλ™ νƒ€μž… λ³€ν™˜

 

[μ •μˆ˜μ˜ 경우]

	//μ •μˆ˜ λ¦¬ν„°λŸ΄μ΄ μ•„λ‹ˆλΌ λ³€μˆ˜κ°€ ν”Όμ—°μ‚°μžλ‘œ μ‚¬μš©λ˜λ©΄ μ‹€ν–‰ μ‹œ νƒ€μž… λ³€ν™˜μ΄ 일어남.
        byte a=10;
        byte b=20;
        byte result=a+b;//compile error! int둜 νƒ€μž… λ³€ν™˜

int νƒ€μž…λ³΄λ‹€ λ²”μœ„κ°€ μž‘μ€ byte, shortλŠ” int νƒ€μž…μœΌλ‘œ μžλ™ νƒ€μž… λ³€ν™˜

 

[μ‹€μˆ˜μ˜ 경우]

두 ν”Όμ—°μ‚°μžκ°€ λͺ¨λ‘ 같은 float,double 일 경우 ν•΄λ‹Ή νƒ€μž…μœΌλ‘œ 연산됨. ν•˜μ§€λ§Œ, ν”Όμ—°μ‚°μž 쀑 ν•˜λ‚˜κ°€ double이면 λ‹€λ₯Έ ν”Όμ—°μ‚°μžλ„ double νƒ€μž…μœΌλ‘œ λ³€ν™˜λ˜μ–΄ μ—°μ‚°λ˜κ³  μ—°μ‚° κ²°κ³Ό λ˜ν•œ double νƒ€μž…μ΄ λœλ‹€. 

	//μ‹€μˆ˜μ˜ 경우
        float f1=1.5f;
        float f2=2.5f;
        float result=f1+f2;
        
        float f3=1.2f;
        double d1=1.5;
        float result2=f3+d1; //compile error! double둜 λ³€ν™˜

μžλ°”μ—μ„œ + μ—°μ‚°μžλŠ” 두가지 κΈ°λŠ₯을 ν•œλ‹€. ν”Όμ—°μ‚°μžκ°€ λͺ¨λ‘ 숫자일 κ²½μš°μ—λŠ” λ§μ…ˆ 연산을, ν”Όμ—°μ‚°μž 쀑 ν•˜λ‚˜κ°€ λ¬Έμžμ—΄μΌ κ²½μš°μ—λŠ” λ‚˜λ¨Έμ§€ ν”Όμ—°μ‚°μžλ„ λ¬Έμžμ—΄λ‘œ μžλ™ λ³€ν™˜λ˜μ–΄ λ¬Έμžμ—΄ κ²°ν•© 연산을 μˆ˜ν–‰ν•œλ‹€.

System.out.println(1+2+3);//6
System.out.println(1+"2"+3);//123

 

πŸ”Ÿ λ¬Έμžμ—΄μ„ κΈ°λ³Έ νƒ€μž…μœΌλ‘œ λ³€ν™˜

[λ¬Έμžμ—΄ -> 숫자둜]

	String str="10";
        System.out.println(Byte.parseByte(str));//10
        System.out.println(Short.parseShort(str));//10
        System.out.println(Integer.parseInt(str));//10
        System.out.println(Long.parseLong(str));//10
        System.out.println(Float.parseFloat(str)); //10.0
        System.out.println(Double.parseDouble(str)); //10.0
        System.out.println(Boolean.parseBoolean(str)); //false

[κΈ°λ³Ένƒ€μž… -> λ¬Έμžμ—΄]

	String istr=String.valueOf(1);
        String cstr=String.valueOf('a');
        String bstr=String.valueOf(true);

cf.

[char -> λ¬Έμžμ—΄]

	String str=String.valueOf('a');
        String str2=Character.toString('b');

 

[λ¬Έμžμ—΄ -> char]

 	String str3="hello";
        char c=str3.charAt(0);

        char[] ch=str3.toCharArray();