JiYoung Dev πŸ–₯

[JAVA] λ³€μˆ˜μ™€ μž…μΆœλ ₯ λ³Έλ¬Έ

full stack/JAVA

[JAVA] λ³€μˆ˜μ™€ μž…μΆœλ ₯

Shinjio 2023. 3. 21. 21:05

2023.03.20 ν•™μŠ΅λ‚΄μš©

참고자료 : JAVA Programming 

 

πŸ”Ž μžλ°” ν”„λ‘œκ·Έλž¨μ˜ ꡬ쑰

ν”„λ‘œμ νŠΈ(project)
μ›Œν¬μŠ€νŽ˜μ΄μŠ€μ˜ ν•˜μœ„ 폴더
ν•˜λ‚˜μ˜ μ‹€ν–‰νŒŒμΌ λ‹¨μœ„
첫 λ¬ΈμžλŠ” λŒ€λ¬Έμžλ‘œ μ‹œμž‘ν•˜λŠ” 것을 ꢌμž₯

νŒ¨ν‚€μ§€(package)
클래슀λ₯Ό κΈ°λŠ₯λ³„λ‘œ λ¬Άμ–΄λ‘” μΌμ’…μ˜ μΉ΄ν…Œκ³ λ¦¬
μ†Œλ¬Έμžλ‘œ μ‹œμž‘, 가급적 ν•œ 단어 μ‚¬μš© ꢌμž₯
ν˜‘μ—…ν•  경우 ν‘œμ€€ νŒ¨ν„΄μ— 따름 (com.νšŒμ‚¬μ΄λ¦„.ν”„λ‘œμ νŠΈλͺ…)

클래슀(class)
κ°€μž₯ ν•˜μœ„μ˜ μ†ŒμŠ€μ½”λ“œ 파일
λŒ€λ¬Έμž λͺ…μ‚¬λ‘œ μ‹œμž‘

 

πŸ“– 클래슀 λ§Œλ“€κΈ°

μžλ°” ν”„λ‘œκ·Έλž¨μ˜ μž‘μ„±μ— μžˆμ–΄ κ°€μž₯ κΈ°λ³Έμ μ΄λ©΄μ„œλ„ μ€‘μš”ν•œ 것은, 클래슀λ₯Ό λ§Œλ“€κ³ , κ·Έ μ•ˆμ— λ³€μˆ˜, μƒμˆ˜, ν•¨μˆ˜(λ©”μ†Œλ“œ) λ“± λͺ¨λ“  ν”„λ‘œκ·Έλž¨ μš”μ†Œλ₯Ό μž‘μ„±ν•œλ‹€λŠ” 점. 클래슀 λ°”κΉ₯에 μ–΄λ–€ 것도 μž‘μ„±ν•΄μ„œλŠ” μ•ˆλœλ‹€. 

 

public은 μžλ°”μ˜ μ ‘κ·Όμ§€μ •μž(access specifier)λ‘œμ„œ λ‹€λ₯Έ λͺ¨λ“  ν΄λž˜μŠ€μ—μ„œ 클래슀 Helloλ₯Ό 자유둭게 μ‚¬μš©ν•  수 μžˆλ‹€λŠ” μ„ μ–Έ

class ν‚€μ›Œλ“œλ‘œ 클래슀 이름을 μ„ μ–Έ

 

πŸ“– μ£Όμ„λ¬Έ

주석문은 ν”„λ‘œκ·Έλž¨μ˜ 싀행에 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠμœΌλ©°, ν”„λ‘œκ·Έλž¨μ— λŒ€ν•œ μ„€λͺ…μ΄λ‚˜ νŠΉμ΄μ‚¬ν•­ 등을 자유둭게 κΈ°λ‘ν•˜κΈ° μœ„ν•΄ μ‚¬μš©

 

// ν•œμ€„ 주석

/* */ μ—¬λŸ¬μ€„ 주석

 

πŸ“– main() λ©”μ†Œλ“œ

main() λ©”μ†Œλ“œμ—μ„œλΆ€ν„° 싀행을 μ‹œμž‘

main()은 λ°˜λ“œμ‹œ public, static, void νƒ€μž…μœΌλ‘œ μ„ μ–Έλ˜μ–΄μ•Ό ν•˜λ©°, ν•œ ν΄λž˜μ„œμ— 2개 μ΄μƒμ˜ main()을 μž‘μ„±ν•˜λ©΄ μ•ˆλ¨

μžλ°” μ‘μš©ν”„λ‘œκ·Έλž¨μ΄ μ—¬λŸ¬ 클래슀둜 μ΄λ£¨μ–΄μ§€λŠ” 경우, 싀행을 μ‹œμž‘ν•  ν΄λž˜μŠ€μ—λ§Œ main()을 두면 λ˜λ―€λ‘œ, λͺ¨λ“  ν΄λž˜μŠ€κ°€ main()을 κ°€μ§€μ§€λŠ” μ•ŠμŒ

 

πŸ“– λ¬Έμž₯

μžλ°”μ—μ„œ λͺ¨λ“  λ¬Έμž₯은 ';'둜 λλ‚˜μ•Ό 함

 

πŸ“– ν™”λ©΄ 좜λ ₯

μ •μˆ˜, 문자, λ¬Έμžμ—΄ λ“± ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©ν•˜λŠ” 데이터λ₯Ό 화면에 좜λ ₯ν•˜κΈ° μœ„ν•΄ System.out.println()μ΄λ‚˜ System.out.print()λ₯Ό 이용

 

System.out.print(좜λ ₯ν•˜κ³  싢은 ꡬ문);
- System : ν‘œμ€€ μž…μΆœλ ₯ 클래슀
- out : 좜λ ₯ μ—­ν•  μˆ˜ν–‰

System.out.print(좜λ ₯ν•˜κ³  싢은 ꡬ문); 
> 좜λ ₯ν•˜κ³  싢은 ꡬ문 좜λ ₯

System.out.println(좜λ ₯ν•˜κ³  싢은 ꡬ문); 
> 좜λ ₯ν•˜κ³  싢은 ꡬ문 좜λ ₯ ν›„ κ°œν–‰

System.out.printf(좜λ ₯ν•˜κ³  싢은 ꡬ문); 
> 좜λ ₯ν•˜κ³  싢은 μ„œμ‹λŒ€λ‘œ 좜λ ₯
> %d - μ •μˆ˜ %f - μ‹€μˆ˜ %s - λ¬Έμžμ—΄

 

 

β€» 문자 인코딩(Character Encoding) μ„€μ •

문자 μΈμ½”λ”©μ΄λž€?
μ‚¬μš©μžκ°€ μž…λ ₯ν•œ λ¬Έμžλ‚˜ κΈ°ν˜Έλ“€μ„ 컴퓨터가 μ΄μš©ν•  수 μžˆλŠ” μ‹ ν˜Έλ‘œ λ§Œλ“œλŠ” 것
* λ””μ½”λ”©(decoding) : 0κ³Ό 1둜 κ΅¬μ„±λœ λ°”μ΄λ„ˆλ¦¬ 데이터λ₯Ό λ‹€μ‹œ 문자둜 λ³΅κ΅¬ν•˜λŠ” 것
* μ΄ν΄λ¦½μŠ€μ—μ„œλŠ” EUC-KR이 κΈ°λ³Έ

UTF-8 : [μ‘°ν•©ν˜•] μ „μ„Έκ³„μ˜ λͺ¨λ“  문자λ₯Ό ν•œκΊΌλ²ˆμ— ν‘œν˜„ν•  수 μžˆλŠ” 인코딩
EUC-KR : [μ™„μ„±ν˜•] ν•œκΈ€/ν•œκ΅­μ—μ„œ ν†΅μš©λ˜λŠ” ν•œμž/영문 ν‘œν˜„μ„ ν•  수 μžˆλŠ” 인코딩. λ¬Έμžν‘œμ— μ—†λŠ” λ¬ΈμžλŠ” ν‘œν˜„ λΆˆκ°€λŠ₯

 

Eclipseμ—μ„œ 문자 인코딩 μ„€μ •ν•˜λŠ” 방법 

β‘  Window - Preference 

β‘‘ 상단 κ²€μƒ‰μ°½μ—μ„œ 'encoding' 검색

β‘’ General Types - Java Class File, Text의 Default encoding을 UTF-8둜 μž‘μ„±

β‘£ λ‚˜λ¨Έμ§€ 메뉴듀은 λͺ¨λ‘ Encoding을 UTF-8둜 선택

 

πŸ”Ž μ‹λ³„μž(identifier)

μ‹λ³„μžλž€ 클래슀, λ³€μˆ˜, μƒμˆ˜, λ©”μ†Œλ“œ 등에 λΆ™μ΄λŠ” 이름

 

πŸ“– μ‹λ³„μž 이름 κ·œμΉ™

1. 특수문자, 곡백은 μ‹λ³„μžλ‘œ μ‚¬μš©ν•  수 μ—†μœΌλ‚˜ '_', '$'λŠ” μ˜ˆμ™Έλ‘œ μ‚¬μš© κ°€λŠ₯

2. ν•œκΈ€λ„ μ‹λ³„μžλ‘œ μ‚¬μš© κ°€λŠ₯ν•˜λ‚˜ ꢌμž₯ν•˜μ§€ μ•ŠμŒ

3. if, while, class λ“± μžλ°” μ–Έμ–΄μ˜ ν‚€μ›Œλ“œλŠ” μ‹λ³„μžλ‘œ μ‚¬μš©ν•  수 μ—†μŒ

4. μ‹λ³„μžμ˜ 첫 번째 문자둜 μˆ«μžλŠ” μ‚¬μš©ν•  수 μ—†μŒ

5. λŒ€μ†Œλ¬Έμžλ₯Ό ꡬ별 

6. 길이 μ œν•œμ΄ μ—†μŒ

 

ν—κ°€λ¦¬μ•ˆ ν‘œκΈ°λ²•(Hungarian case)
λ³€μˆ˜μ˜ μžλ£Œν˜•μ„ λ³€μˆ˜λͺ…μ˜ μ ‘λ‘μ–΄λ‘œ λΆ™μ΄λŠ” 방식
int intNum; or int iNum

카멜 ν‘œκΈ°λ²•(Camel case)
단어와 단어 사이λ₯Ό λŒ€λ¬Έμžλ‘œ κ΅¬λΆ„ν•˜λŠ” ν‘œκΈ°λ²•
int myNumber;

파슀칼 ν‘œκΈ°λ²•(Pascal case)
λͺ¨λ“  λ‹¨μ–΄μ˜ 첫 κΈ€μžλ§Œμ„ λŒ€λ¬Έμžλ‘œ λ‚˜νƒ€λ‚΄κ³  λ‚˜λ¨Έμ§€λŠ” μ†Œλ¬Έμžλ‘œ λ‚˜νƒ€λ‚΄λŠ” ν‘œκΈ°λ²•
int MyNumber;

언더바 ν‘œκΈ°λ²•(Snake case)
λ³€μˆ˜λͺ… 단어 사이에 _λ₯Ό μ΄μš©ν•΄μ„œ κ΅¬λΆ„ν•˜λŠ” 방법
int my_number

 

πŸ“– μžλ°” ν‚€μ›Œλ“œ = μ˜ˆμ•½μ–΄(reserved word)

μ˜ˆμ•½μ–΄λŠ” μ‹λ³„μžλ‘œ μ‚¬μš©μ΄ λΆˆκ°€λŠ₯

ν‚€μ›Œλ“œ(μ˜ˆμ•½μ–΄)

 

πŸ“– μ’‹μ€ 이름을 λΆ™μ΄λŠ” κ΄€μŠ΅

1. λͺ©μ μ— λ§žλŠ” 이름 뢙이기 (μ–΄λ–€ μš©λ„λ‘œ μ‚¬μš©λ˜λŠ”μ§€ μ•Œ 수 있게)

2. μ΄λ¦„μ˜ 길이에 μ—°μ—°ν•˜μ§€ 말고 μΆ©λΆ„νžˆ κΈ΄ μ΄λ¦„μœΌλ‘œ λΆ™μ΄λŠ”κ²Œ μ’‹μŒ 

3. μ–Έμ–΄μ˜ κ΄€μŠ΅μ„ λ”°λ₯΄λŠ”κ²Œ μ’‹μŒ

 

클래슀 이름, ν”„λ‘œμ νŠΈ 이름 = 파슀칼 ν‘œκΈ°λ²•
클래슀 μ΄λ¦„μ˜ 첫 번째 λ¬ΈμžλŠ” λŒ€λ¬Έμžλ‘œ μ‹œμž‘ν•˜κ³ , μ—¬λŸ¬ 단어가 λ³΅ν•©λ˜λ©΄ 각 λ‹¨μ–΄μ˜ 첫 번째 문자만 λŒ€λ¬Έμžλ£Œ ν‘œμ‹œ

λ³€μˆ˜, λ©”μ†Œλ“œ 이름 = 카멜 ν‘œκΈ°λ²•
λ³€μˆ˜μ™€ λ©”μ†Œλ“œμ˜ 이름 첫 λ‹¨μ–΄λŠ” μ†Œλ¬Έμžλ‘œ ν‘œκΈ°ν•˜κ³  이후 각 λ‹¨μ–΄μ˜ 첫 번째 문자만 λŒ€λ¬Έμžλ‘œ ν‘œκΈ°

μƒμˆ˜ 이름
μƒμˆ˜λŠ” 이름 전체λ₯Ό λŒ€λ¬Έμžλ‘œ ν‘œκΈ°, 단어와 단어 μ‚¬μ΄λŠ” μ–Έλ”λ°”λ‘œ ꡬ뢄

μ½”λ”©μ»¨λ²€μ…˜

 

πŸ”Ž μžλ°”μ˜ 데이터 νƒ€μž…(data type)

πŸ“– κΈ°λ³Έ νƒ€μž…(primitive type)

- boolean

- numeric 수치

β”” Integer μ •μˆ˜

    β”” char : λ¬ΈμžλŠ” μ»΄ν“¨ν„°μ—μ„œ ASCII μ½”λ“œ λ²ˆμ—­ν•˜μ—¬ μ €μž₯ν•˜λ―€λ‘œ μ •μˆ˜λ‘œ λΆ„λ₯˜

    β”” byte

    β”” short

    β”” int

    β”” long

β”” floating λΆ€λ™μ†Œμˆ˜μ 

    β”” float

    β”” double

 

μ‹€μˆ˜μ˜ ν‘œν˜„ 방식 
μ»΄ν“¨ν„°λŠ” μ‹€μˆ˜λ₯Ό μ •μˆ˜μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ 2μ§„μˆ˜λ‘œλ§Œ ν‘œν˜„ν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— μ‹€μˆ˜λ₯Ό ν‘œν˜„ν•˜λŠ” 방법은 μ •μˆ˜μ— λΉ„ν•΄ 훨씬 λ³΅μž‘ν•¨. ν˜„μž¬μ—λŠ” κ³ μ • μ†Œμˆ˜μ (fixed point) 방식과 뢀동 μ†Œμˆ˜μ (floating point) 방식이 μ‚¬μš©λ¨

κ³ μ • μ†Œμˆ˜μ  방식
μ‹€μˆ˜λŠ” 보톡 μ •μˆ˜λΆ€μ™€ μ†Œμˆ˜λΆ€λ‘œ λ‚˜λˆŒ 수 있음. λ”°λΌμ„œ μ‹€μˆ˜λ₯Ό ν‘œν˜„ν•˜λŠ” κ°€μž₯ κ°„λ‹¨ν•œ 방식은 μ†Œμˆ˜λΆ€μ˜ 자릿수λ₯Ό 미리 μ •ν•˜μ—¬, κ³ μ •λœ 자릿수의 μ†Œμˆ˜λ₯Ό ν‘œν˜„ν•˜λŠ” 것
ν•˜μ§€λ§Œ 이 방식은 μ •μˆ˜λΆ€μ™€ μ†Œμˆ˜λΆ€μ˜ μžλ¦Ώμˆ˜κ°€ 크지 μ•ŠμœΌλ―€λ‘œ, ν‘œν˜„ν•  수 μžˆλŠ” λ²”μœ„κ°€ 맀우 적음

뢀동 μ†Œμˆ˜μ  방식
μ‹€μˆ˜λŠ” κ³ μ • μ†Œμˆ˜μ  λ°©μ‹μ²˜λŸΌ μ •μˆ˜λΆ€μ™€ μ†Œμˆ˜λΆ€λ‘œ λ‚˜λˆŒ 수 μžˆμ§€λ§Œ, κ°€μˆ˜λΆ€μ™€ μ§€μˆ˜λΆ€λ‘œλ„ λ‚˜λˆ„μ–΄ ν‘œν˜„ν•  수 있음. 뢀동 μ†Œμˆ˜μ  방식은 μ΄λ ‡κ²Œ ν•˜λ‚˜μ˜ μ‹€μˆ˜λ₯Ό κ°€μˆ˜λΆ€μ™€ μ§€μˆ˜λΆ€λ‘œ λ‚˜λˆ„μ–΄ ν‘œν˜„ν•˜λŠ” 방식. κ³ μ • μ†Œμˆ˜μ  방식은 μ œν•œλœ 자릿수둜 인해 ν‘œν˜„ν•  수 μžˆλŠ” λ²”μœ„κ°€ 맀우 μž‘μ€λ° λ°˜ν•΄ 뢀동 μ†Œμˆ˜μ  방식은 맀우 큰 μ‹€μˆ˜κΉŒμ§€λ„ ν‘œν˜„ν•  수 있음



 

μ—¬λŸ¬κ°€μ§€ μžλ£Œν˜•

  1byte 2byte 4byte 8byte
1byte boolean      
2byte   char    
4byte byte short int long
8byte     float double

 

μ•„μŠ€ν‚€ μ½”λ“œ

 

β€» μžλ°”μ—μ„œλŠ” μ˜μ–΄λ“  ν•œκΈ€μ΄λ“  문자 ν•˜λ‚˜λŠ” 2λ°”μ΄νŠΈμ˜ μœ λ‹ˆμ½”λ“œ(unicode)둜 μ €μž₯됨

 

 

 

πŸ“– λ ˆνΌλŸ°μŠ€ νƒ€μž…(reference type)

배열에 λŒ€ν•œ 레퍼런슀

클래슀(class)에 λŒ€ν•œ 레퍼런슀 - String reference (문자λ₯Ό μ—¬λŸ¬κ°œ λ¬Άμ–΄μ„œ μ €μž₯ν•  수 μžˆλŠ” λ¬Έμžμ—΄ μžλ£Œν˜•)

μΈν„°νŽ˜μ΄μŠ€(interface)에 λŒ€ν•œ 레퍼런슀

 

 

πŸ“– λ¦¬ν„°λŸ΄(literal)

λ¦¬ν„°λŸ΄μ΄λž€ ν”„λ‘œκ·Έλž¨μ— 직접 ν‘œν˜„ν•œ 값을 말함. 

 

논리 λ¦¬ν„°λŸ΄μ€ boolean(1byte) νƒ€μž…μœΌλ‘œ μžλ™ 컴파일 됨

μ •μˆ˜ λ¦¬ν„°λŸ΄μ€ int(4byte) νƒ€μž…μœΌλ‘œ μžλ™ 컴파일 됨

μ‹€μˆ˜ λ¦¬ν„°λŸ΄μ€ double(8byte) νƒ€μž…μœΌλ‘œ μžλ™ 처리

문자 λ¦¬ν„°λŸ΄μ€ 단일 μΈμš©λΆ€ν˜Έ(' ')둜 문자λ₯Ό ν‘œν˜„

특수문자 λ¦¬ν„°λŸ΄

μ’…λ₯˜ 의미 μ’…λ₯˜ 의미
\b 백슀페이슀 \r 캐리지 리턴
\t νƒ­ \" 이쀑 μΈμš©λΆ€ν˜Έ
\n λΌμΈν”Όλ“œ(μ—”ν„°) \' 단일 μΈμš©λΆ€ν˜Έ
\f νΌν”Όλ“œ \\ λ°±μŠ¬λž˜μ‹œ

 

πŸ“– λ³€μˆ˜ μ„ μ–Έ

λ³€μˆ˜(variable)μ΄λž€ ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ λ™μ•ˆ 데이터λ₯Ό μ €μž₯ν•˜λŠ” 곡간. μ‚¬μ „적 μ˜λ―Έλ‘œλŠ” "λ³€ν•  수 μžˆλŠ” 수"이며 ν”„λ‘œκ·Έλž¨μ΄ μš΄μ˜μ²΄μ œλ‘œλΆ€ν„° 할당받은 λ©”λͺ¨λ¦¬ 곡간을 μ‚¬μš©

λ©”μ†Œλ“œ 내에 μ„ μ–Έλ˜μ–΄ μ‚¬μš©λ˜λŠ” λ³€μˆ˜λ₯Ό μ§€μ—­λ³€μˆ˜(local variable)라 ν•˜λ©°, μ§€μ—­λ³€μˆ˜λŠ” λ©”μ†Œλ“œ λ‚΄μ—μ„œλ§Œ μ‚¬μš©λ˜λ©°, λ©”μ†Œλ“œμ˜ 싀행이 λλ‚˜λ©΄ μ†Œλ©Έλ¨

 

λ³€μˆ˜ μ„ μ–Έ
μžλ£Œν˜• λ³€μˆ˜λͺ… ;

λ³€μˆ˜ μ„ μ–Έ + κ°’ μ΄ˆκΈ°ν™”
μžλ£Œν˜• λ³€μˆ˜λͺ… =(λŒ€μž…μ—°μ‚°μž) κ°’ ;
* λŒ€μž…μ—°μ‚°μž : λŒ€μž…μ—°μ‚°μžλ₯Ό κΈ°μ€€μœΌλ‘œ 였λ₯Έμͺ½μ˜ 값을 μ™Όμͺ½μ— λ„£κ² λ‹€. 


μž¬ν• λ‹Ή
λ³€μˆ˜λͺ… = κ°’ ;

β€» 이전에 μ„ μ–Έλœ λ³€μˆ˜ 이름은 μ€‘λ³΅ν•΄μ„œ μ‚¬μš© λΆˆκ°€(μž¬μ„ μ–Έμ€ λΆˆκ°€λŠ₯ν•˜λ‹€)

 

πŸ“– μƒμˆ˜(constant)

사전적 μ˜λ―Έλ‘œλŠ” "λΆˆλ³€ν•˜λŠ”" λ˜λŠ” "λ³€ν•˜μ§€ μ•ŠλŠ” 수" → ν•œ 번 λ„£μœΌλ©΄ λ³€ν•˜μ§€ μ•ŠλŠ” 수λ₯Ό λ„£λŠ”λ° μ‚¬μš©

→ μ²˜μŒμ— 값을 ν• λ‹Ήν•˜λŠ” 것은 κ°€λŠ₯ν•˜λ‚˜ μž¬ν• λ‹Ήμ€ λΆˆκ°€λŠ₯

ν”„λ‘œκ·Έλž˜λ°μ—μ„œλŠ” 데이터λ₯Ό 담을 수 μžˆλŠ”(μ €μž₯ν•  수 μžˆλŠ”) 곡간

ν”„λ‘œκ·Έλž¨μ΄ μš΄μ˜μ²΄μ œλ‘œλΆ€ν„° 할당받은 λ©”λͺ¨λ¦¬ 곡간을 μ‚¬μš©

λ³€μˆ˜ μ„ μ–Έ μ‹œ final ν‚€μ›Œλ“œ μ‚¬μš©

 

λ³€μˆ˜μ™€ μƒμˆ˜ μ„ μ–Έ 및 μ΄ˆκΈ°ν™”

 

πŸ“– νƒ€μž… λ³€ν™˜(ν˜•λ³€ν™˜)

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

 

μžλ™ νƒ€μž… λ³€ν™˜

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

 

long m = 25;

κ°’ 25λŠ” intν˜• → intν˜•μ€ 4byte, longν˜•μ€ 8byte둜 μž‘μ€ intν˜•μ—μ„œ 큰 longν˜•μœΌλ‘œ λ³€ν™˜ν•˜λŠ” κ²ƒμ΄λ―€λ‘œ μžλ™ νƒ€μž… λ³€ν™˜

 

κ°•μ œ νƒ€μž… λ³€ν™˜

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

() μ•ˆμ— νƒ€μž…μ„ λͺ…μ‹œν•˜μ—¬ κ°•μ œ νƒ€μž… μ§€μ‹œν•  수 있음

κ°•μ œ νƒ€μž… λ³€ν™˜μ„ ν•˜λ©΄ 컴파일 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•Šμ„ 뿐 λ²”μœ„λ₯Ό μ΄ˆκ³Όν•œ 만큼 데이터 손싀이 λ°œμƒν•¨

 

int n = 3000;
byte b = (byte)3000;

byteλŠ” 숫자 127κΉŒμ§€ ν‘œν˜„ κ°€λŠ₯. λ”°λŸΏ μžλ™ νƒ€μž…λ³€ν™˜μ΄ λΆˆκ°€ν•¨. κ°•μ œ νƒ€μž… λ³€ν™˜μ„ ν•΄μ€˜μ•Ό 함
3000 - 127 만큼 Overflow λ°œμƒ

 

πŸ”Ž μžλ°”μ—μ„œ ν‚€ μž…λ ₯

πŸ“– System.in

ν‚€λ³΄λ“œ μž₯치λ₯Ό 직접 μ œμ–΄ν•˜κ³  ν‚€ μž…λ ₯을 λ°›λŠ” ν‘œμ€€ μž…λ ₯ 슀트림 객체

System.in은 μž…λ ₯된 ν‚€λ₯Ό λ‹¨μˆœν•œ λ°”μ΄νŠΈ μ •λ³΄λ‘œ μ‘μš©ν”„λ‘œκ·Έλž¨μ—κ²Œ μ œκ³΅ν•˜λ―€λ‘œ, μ‘μš©ν”„λ‘œκ·Έλž¨μ€ 받은 λ°”μ΄νŠΈ 정보λ₯Ό λ¬Έμžλ‚˜ 숫자둜 λ³€ν™˜ν•΄μ•Όν•˜λŠ” λ²ˆκ±°λ‘œμ›€μ΄ 있음. κ·ΈλŸ¬λ―€λ‘œ ν‚€λ³΄λ“œμ—μ„œ μž…λ ₯된 ν‚€λ₯Ό λ¬Έμžλ‚˜ μ •μˆ˜, μ‹€μˆ˜, λ¬Έμžμ—΄ λ“± μ‚¬μš©μžκ°€ μ›ν•˜λŠ” νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•΄μ£ΌλŠ” Scanner 클래슀λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 효과적. 

 

πŸ“– Scannerλ₯Ό μ΄μš©ν•œ ν‚€ μž…λ ₯

ScannerλŠ” μ‘μš©ν”„λ‘œκ·Έλž¨μ΄ ν‚€ μž…λ ₯을 μ‰½κ²Œ 받을 수 μžˆλ„λ‘ μžλ°” νŒ¨ν‚€μ§€μ—μ„œ μ œκ³΅ν•˜λŠ” 클래슀. 

 

Scanner 객체 생성

sc κ°μ²΄λŠ” System.in 객체λ₯Ό μ΄μš©ν•˜μ—¬ ν‚€λ³΄λ“œλ‘œλΆ€ν„° 일련의 λ°”μ΄νŠΈ 정보듀을 μž…λ ₯λ°›κ³ , 이 λ°”μ΄νŠΈλ“€μ„ μ •μˆ˜, μ‹€μˆ˜, 문자, λ¬Έμžμ—΄ λ“± μžλ°” μ‘μš©ν”„λ‘œκ·Έλž¨μ΄ μ›ν•˜λŠ” νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•˜μ—¬ 리턴

 

importλ¬Έ μ‚¬μš©

Scanner ν΄λž˜μŠ€λŠ” μžλ°”μ—μ„œ μ œκ³΅λ˜λŠ” java.util νŒ¨ν‚€μ§€μ— 있음

 

Scanner 클래슀둜 ν‚€ μž…λ ₯λ°›κΈ°

Scanner ν΄λž˜μŠ€λŠ” μ‚¬μš©μžκ°€ μž…λ ₯ν•˜λŠ” ν‚€ 값을 곡백 문자(' ', '\t', '\n')λ₯Ό κΈ°μ€€μœΌλ‘œ λΆ„λ¦¬ν•˜μ—¬ 토큰 λ‹¨μœ„λ‘œ 읽음

좜λ ₯이 μ•ˆ 된 λ‚˜λ¨Έμ§€ 값은 버퍼(buffer, μž„μ‹œκ³΅κ°„)에 μ €μž₯ → λ‹€μŒ λ©”μ†Œλ“œμ—μ„œ μ‚¬μš©

Scanner 클래슀λ₯Ό μ΄μš©ν•˜μ—¬ ν‚€ μž…λ ₯을 받을 λ•Œ Scanner 클래슀의 λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μžκ°€ μž…λ ₯ν•œ λ¬Έμžμ—΄, μ •μˆ˜, μ‹€μˆ˜ 등을 읽음

 

λ©”μ†Œλ“œ μ„€λͺ…
String - next() λ‹€μŒ 토큰을 λ¬Έμžμ—΄λ‘œ 리턴
byte - nextByte() λ‹€μŒ 토큰을 byte νƒ€μž…μœΌλ‘œ 리턴
short - nextShort() λ‹€μŒ 토큰을 short νƒ€μž…μœΌλ‘œ 리턴
int - nextInt() λ‹€μŒ 토큰을 int νƒ€μž…μœΌλ‘œ 리턴
long - nextLong() λ‹€μŒ 토큰을 long νƒ€μž…μœΌλ‘œ 리턴
float - nextFloat() λ‹€μŒ 토큰을 float νƒ€μž…μœΌλ‘œ 리턴
double - nextDouble() λ‹€μŒ 토큰을 double νƒ€μž…μœΌλ‘œ 리턴
boolean - nextBoolean() λ‹€μŒ 토큰을 boolean νƒ€μž…μœΌλ‘œ 리턴
String - nextLine() '\n'을 ν¬ν•¨ν•˜λŠ” ν•œ 라인을 읽고, '\n'을 버린 λ‚˜λ¨Έμ§€ λ¬Έμžμ—΄ 리턴
void - close() Scanner의 μ‚¬μš© μ’…λ£Œ
boolean - hasNext ν˜„μž¬ μž…λ ₯된 토근이 있으면 true, μ•„λ‹ˆλ©΄ μž…λ ₯ λ•ŒκΉŒμ§€ λ¬΄ν•œμ • λŒ€κΈ°, μƒˆλ‘œμš΄ μž…λ ₯이 λ“€μ–΄μ˜¬ λ•Œ true 이턴, ctrl-z ν‚€κ°€ μž…λ ₯되면 μž…λ ₯ λμ΄λ―€λ‘œ false 리턴

 

 

β–Ό 이름(λ¬Έμžμ—΄)κ³Ό λ‚˜μ΄(μ •μˆ˜)λ₯Ό μž…λ ₯λ°›κ³  μ•„λž˜μ™€ 같이 좜λ ₯

πŸ”Ž μžλ°” 였λ₯˜

πŸ“– μ˜€λ₯˜ 확인 방법

1. 였λ₯˜μ˜ 맨 λ§ˆμ§€λ§‰μ€„ νŒŒλž€μƒ‰ 링크둜 였λ₯˜ λ°œμƒν•œ μ½”λ“œ νŒŒμ•…

2. 맨 μœ—μ€„ 였λ₯Έμͺ½μ—μ„œ 였λ₯˜ μœ ν˜• 확인

 

 

πŸ“– μ»΄νŒŒμΌ 였λ₯˜

μ½”λ“œ 밑에 빨간쀄

μ½”λ“œ μžμ²΄μ— 였λ₯˜κ°€ μžˆμ„ λ•Œλ‘œ μ΄λ•ŒλŠ” 컴파일 μžμ²΄κ°€ λΆˆκ°€λŠ₯함

 

πŸ“– λŸ°νƒ€μž„ 였λ₯˜

μ»΄νŒŒμΌμ€ κ°€λŠ₯함. μ½”λ“œ 자체λ₯Ό ν•΄μ„ν•˜λŠ”κ±΄ κ°€λŠ₯함. κ·ΈλŸ¬λ‚˜ 싀행은 λΆˆκ°€λŠ₯. 

μ½”λ“œ μƒμ—λŠ” κ³ μΉ˜μ§€ λͺ»ν•¨. 보톡 μ˜ˆμ™Έμ²˜λ¦¬λ₯Ό ν•΄μ€˜μ•Ό 함

였λ₯˜λ₯Ό λ³΄μ—¬μ£ΌλŠ”κ²Œ μ•„λ‹ˆλΌ 메세지λ₯Ό λ³΄μ—¬μ£ΌλŠ” λ“±μ˜ 행동을 ν•΄μ€˜μ•Ό 함

 

 

βš™ μ˜ˆμ™Έμƒν™© λ°œμƒμ‹œ catch문으둜 μ²˜λ¦¬ν•˜κΈ° 

try 무쑰건 μ‹€ν–‰  ;   μ˜ˆμ™Έ 상황이 λ°œμƒν•˜κ²Œ 되면 catchλ¬Έ μ•ˆμœΌλ‘œ 듀어감.

e : λ°œμƒν•œ 였λ₯˜ 이름 뢙이기 

 

package test01;
import java.util.InputMismatchException;      - import둜 외뢀에 μ‘΄μž¬ν•˜λŠ” 클래슀 μ‚¬μš©
import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("이름 : ");
        String name = sc.next();
         
        int age = 0;     - main λ©”μ†Œλ“œ λ‚΄μ„œ age λ³€μˆ˜ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ μ„ μ–Έν•˜κ³  0으둜 μ΄ˆκΈ°ν™”
        try {    - 무쑰건 μ‹€ν–‰
            System.out.print("λ‚˜μ΄ : ");
            age = sc.nextInt();
        }catch(InputMismatchException e){   - 였λ₯˜ μž…λ ₯
                System.out.println("숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”!");    - 였λ₯˜ λ°œμƒμ‹œ μ‹€ν–‰λ¬Έ
           }
       
        System.out.printf("이름은 %s이고 λ‚˜μ΄λŠ” %dμž…λ‹ˆλ‹€", name, age);
    }
}