ICT/IT정보

μžλ°” λ©”μ†Œλ“œ - μžλ°” ν‘œμ€€ μž…μΆœλ ₯ 클래슀

μ•Œ 수 μ—†λŠ” μ‚¬μš©μž 2022. 6. 9. 16:56
λ°˜μ‘ν˜•

μžλ°” λ©”μ†Œλ“œ - μžλ°” ν‘œμ€€ μž…μΆœλ ₯ 클래슀

​

μ•ˆλ…•ν•˜μ„Έμš”. μ†Œμ†Œν–‰μž…λ‹ˆλ‹€.

μžλ°” ν‘œμ€€ μž…μΆœλ ₯ 클래슀

μ‚¬μš©μžκ°€ ν”„λ‘œκ·Έλž¨κ³Ό λŒ€ν™”ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ‚¬μš©μžμ™€ ν”„λ‘œκ·Έλž¨ μ‚¬μ΄μ˜ μž…μΆœλ ₯을 λ‹΄λ‹Ήν•˜λŠ” μˆ˜λ‹¨μ΄ ν•„μš”ν•©λ‹ˆλ‹€. μžλ°”μ—μ„œλŠ” λͺ¨λ“  것이 객체둜 ν‘œν˜„λ˜λ―€λ‘œ μž…μΆœλ ₯을 λ‹΄λ‹Ήν•˜λŠ” μˆ˜λ‹¨ λ˜ν•œ λͺ¨λ‘ κ°μ²΄μž…λ‹ˆλ‹€.

​

Cμ–Έμ–΄μ˜ printf() ν•¨μˆ˜λ‚˜ scanf() ν•¨μˆ˜μ²˜λŸΌ μžλ°”μ—μ„œλŠ” Systemμ΄λΌλŠ” ν‘œμ€€ μž…μΆœλ ₯ 클래슀λ₯Ό μ •μ˜ν•˜μ—¬ μ œκ³΅ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ System ν΄λž˜μŠ€λŠ” java.lang νŒ¨ν‚€μ§€μ— ν¬ν•¨λ˜μ–΄ μ œκ³΅λ©λ‹ˆλ‹€. System ν΄λž˜μŠ€μ—λŠ” ν‘œμ€€ μž…μΆœλ ₯을 μœ„ν•΄ λ‹€μŒκ³Ό 같은 클래슀 λ³€μˆ˜(static variable)κ°€ μ •μ˜λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

​

  1. System.in
  2. System.out
  3. System.err

​

μžλ°”μ—μ„œλŠ” System.in μŠ€νŠΈλ¦Όμ„ μ‚¬μš©ν•˜μ—¬ ν‘œμ€€ μž…λ ₯ μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€. λ˜ν•œ, System.out μŠ€νŠΈλ¦Όμ΄λ‚˜ System.err μŠ€νŠΈλ¦Όμ„ μ‚¬μš©ν•˜μ—¬ ν‘œμ€€ μž…μΆœλ ₯ μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

System.out.println()

System.out.println() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ λͺ¨λ‹ˆν„°μ— μ „λ‹¬λœ 데이터λ₯Ό 좜λ ₯ν•œ 후에 쀄 λ°”κΏˆκΉŒμ§€ ν•΄μ€λ‹ˆλ‹€. println() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 문법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

System.out.println(좜λ ₯할데이터);

μ΄λ ‡κ²Œ ν‘œμ€€ 좜λ ₯ μŠ€νŠΈλ¦Όμ— μ „λ‹¬λœ λ°μ΄ν„°λŠ” μŠ€νŠΈλ¦Όμ„ 톡해 좜λ ₯ μž₯치둜 μ „λ‹¬λ˜μ–΄ 좜λ ₯λ©λ‹ˆλ‹€.

 
System.out.print(7); // print() λ©”μ†Œλ“œλŠ” 쀄 λ°”κΏˆμ„ ν•˜μ§€ μ•ŠμŒ
System.out.println(3); // μ •μˆ˜ 좜λ ₯
System.out.println(3.14); // μ‹€μˆ˜ 좜λ ₯
System.out.println("μžλ°”!"); // λ¬Έμžμ—΄ 좜λ ₯
System.out.println("λ¬Έμžμ—΄λΌλ¦¬μ˜" + "연결도 κ°€λŠ₯ν•©λ‹ˆλ‹€.");
System.out.println("숫자" + 3 + "κ³Ό λ¬Έμžμ—΄μ˜ 연결도 κ°€λŠ₯ν•©λ‹ˆλ‹€.");
μ‹€ν–‰κ²°κ³Ό
73
3.14
μžλ°”!!
λ¬Έμžμ—΄λΌλ¦¬μ˜ 연결도 κ°€λŠ₯ν•©λ‹ˆλ‹€.
숫자3κ³Ό λ¬Έμžμ—΄μ˜ 연결도 κ°€λŠ₯ν•©λ‹ˆλ‹€.
β€» println() λ©”μ†Œλ“œμ™€ 달리 print() λ©”μ†Œλ“œλŠ” μ „λ‹¬λœ 데이터λ₯Ό 좜λ ₯ν•œ 후에 쀄 λ°”κΏˆμ„ ν•˜μ§€μ•ŠμŠ΅λ‹ˆλ‹€.

JAVA8μ—μ„œμ˜ λ³€κ²½ 사항

2014년에 λ°œν‘œλœ μžλ°”μ˜ μ΅œμ‹  버전인 Java SE 8 λ²„μ „μ—μ„œλŠ” λ§Žμ€ 사항이 λ³€κ²½λ˜κ±°λ‚˜ μƒˆλ‘­κ²Œ μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€. Java SE 8μ—μ„œ λ³€κ²½λ˜κ±°λ‚˜ μƒˆλ‘­κ²Œ μΆ”κ°€λœ 사항 μ€‘μ—μ„œ μ£Όλͺ©ν•  λ§Œν•œ νŠΉμ§•μ„ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

​

  1. λžŒλ‹€ ν‘œν˜„μ‹(lambda expression) : ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°
  2. 슀트림 API(stream API) : λ°μ΄ν„°μ˜ 좔상화
  3. java.time νŒ¨ν‚€μ§€ : Joda-Time을 μ΄μš©ν•œ μƒˆλ‘œμš΄ λ‚ μ§œμ™€ μ‹œκ°„ API
  4. λ‚˜μ¦ˆν˜Ό(Nashorn) : μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ μƒˆλ‘œμš΄ 엔진

λžŒλ‹€ ν‘œν˜„μ‹(Lambda Expression)

λžŒλ‹€ ν‘œν˜„μ‹μ΄λž€ κ°„λ‹¨νžˆ 말해 λ©”μ†Œλ“œλ₯Ό ν•˜λ‚˜μ˜ μ‹μœΌλ‘œ ν‘œν˜„ν•œ κ²ƒμž…λ‹ˆλ‹€. 즉, μ‹λ³„μž 없이 μ‹€ν–‰ν•  수 μžˆλŠ” ν•¨μˆ˜ ν‘œν˜„μ‹μ„ μ˜λ―Έν•˜λ©°, λ”°λΌμ„œ 읡λͺ… ν•¨μˆ˜(anonymous function)라고도 λΆ€λ¦…λ‹ˆλ‹€.

​

λ©”μ†Œλ“œλ₯Ό μ΄λ ‡κ²Œ λžŒλ‹€ ν‘œν˜„μ‹μœΌλ‘œ ν‘œν˜„ν•˜λ©΄ 클래슀λ₯Ό λ§Œλ“€κ³  객체λ₯Ό μƒμ„±ν•˜μ§€ μ•Šμ•„λ„ λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, λžŒλ‹€ ν‘œν˜„μ‹μ€ λ©”μ†Œλ“œμ˜ λ§€κ°œλ³€μˆ˜λ‘œ 전달될 수 있고, λ©”μ†Œλ“œμ˜ κ²°κ³Όκ°’μœΌλ‘œ λ°˜ν™˜λ  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

​

μ΄λŸ¬ν•œ λžŒλ‹€ ν‘œν˜„μ‹μ€ 기쑴의 λΆˆν•„μš”ν•œ μ½”λ“œλ₯Ό 쀄여주고 μž‘μ„±λœ μ½”λ“œμ˜ 가독성을 λ†’μ΄λŠ” 데 κ·Έ λͺ©μ μ΄ μžˆμŠ΅λ‹ˆλ‹€. Java SE 8 λ²„μ „λΆ€ν„°λŠ” λžŒλ‹€ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜μ—¬ μžλ°”μ—μ„œλ„ ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μ„ ν•  수 있게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

​

λ‹€μŒ μ˜ˆμ œλŠ” 전톡적인 λ°©μ‹μ˜ μŠ€λ ˆλ“œ 생성과 λžŒλ‹€ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•œ μŠ€λ ˆλ“œ 생성을 λΉ„κ΅ν•˜λŠ” μ˜ˆμ œμž…λ‹ˆλ‹€.

 
new Thread(new Runnable() {
	public void run() {
		System.out.println("전톡적인 λ°©μ‹μ˜ 일회용 μŠ€λ ˆλ“œ 생성");
	}
}).start();

new Thread(()->{
	System.out.println("λžŒλ‹€ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•œ 일회용 μŠ€λ ˆλ“œ 생성");
}).start();
μ‹€ν–‰κ²°κ³Ό
전톡적인 λ°©μ‹μ˜ 일회용 μŠ€λ ˆλ“œ 생성
λžŒλ‹€ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•œ 일회용 μŠ€λ ˆλ“œ 생성

슀트림 API(Stream API)

μžλ°”μ—μ„œλŠ” λ§Žμ€ μ–‘μ˜ 데이터λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•΄μ„œ λ°°μ—΄μ΄λ‚˜ μ»¬λ ‰μ…˜μ„ μ‚¬μš©ν•©λ‹ˆλ‹€. λ˜ν•œ, μ΄λ ‡κ²Œ μ €μž₯된 데이터에 μ ‘κ·Όν•˜κΈ° μœ„ν•΄μ„œλŠ” λ°˜λ³΅λ¬Έμ΄λ‚˜ 반볡자(iterator)λ₯Ό μ‚¬μš©ν•˜μ—¬ 맀번 μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€.

​

ν•˜μ§€λ§Œ, μ΄λ ‡κ²Œ μž‘μ„±λœ μ½”λ“œλŠ” 길이가 λ„ˆλ¬΄ κΈΈκ³  가독성도 떨어지며 μ½”λ“œμ˜ μž¬μ‚¬μš©μ΄ 거의 λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€. λ˜ν•œ, λ°μ΄ν„°λ² μ΄μŠ€μ˜ 쿼리와 같이 μ •ν˜•ν™”λœ 처리 νŒ¨ν„΄μ„ 가지지 λͺ»ν–ˆκΈ°μ— λ°μ΄ν„°λ§ˆλ‹€ λ‹€λ₯Έ λ°©λ²•μœΌλ‘œ μ ‘κ·Όν•΄μ•Όλ§Œ ν–ˆμŠ΅λ‹ˆλ‹€.

​

μ΄λŸ¬ν•œ λ¬Έμ œμ μ„ κ·Ήλ³΅ν•˜κΈ° μœ„ν•΄μ„œ Java SE 8 버전뢀터 λ„μž…ν•œ 방법이 λ°”λ‘œ 슀트림 APIμž…λ‹ˆλ‹€. 슀트림 APIλŠ” 데이터λ₯Ό μΆ”μƒν™”ν•˜μ—¬ λ‹€λ£¨λ―€λ‘œ, λ‹€μ–‘ν•œ λ°©μ‹μœΌλ‘œ μ €μž₯된 데이터λ₯Ό 읽고 μ“°κΈ° μœ„ν•œ κ³΅ν†΅λœ 방법을 μ œκ³΅ν•©λ‹ˆλ‹€. λ”°λΌμ„œ 슀트림 APIλ₯Ό μ΄μš©ν•˜λ©΄ λ°°μ—΄μ΄λ‚˜ μ»¬λ ‰μ…˜λΏλ§Œ μ•„λ‹ˆλΌ νŒŒμΌμ— μ €μž₯된 데이터도 λͺ¨λ‘ 같은 λ°©λ²•μœΌλ‘œ λ‹€λ£° 수 μžˆμŠ΅λ‹ˆλ‹€.

 
String[] arr = new String[]{"λ„·", "λ‘˜", "μ…‹", "ν•˜λ‚˜"};

//λ°°μ—΄μ—μ„œ 슀트림 생성
Stream<String> stream1 = Arrays.stream(arr);
stream1.forEach(e -> System.out.print(e + " "));
System.out.println();

//λ°°μ—΄μ˜ νŠΉμ • λΆ€λΆ„λ§Œμ„ μ΄μš©ν•œ 슀트림 생성
Stream<String> stream2 = Arrays.stream(arr, 1, 3);
stream2.forEach(e -> System.out.print(e + " "));
μ‹€ν–‰κ²°κ³Ό
λ„· λ‘˜ μ…‹ ν•˜λ‚˜
λ‘˜ μ…‹

java.time νŒ¨ν‚€μ§€

JDKμ—μ„œλŠ” Date 클래슀λ₯Ό μ‚¬μš©ν•˜μ—¬ λ‚ μ§œμ— κ΄€ν•œ 처리λ₯Ό μˆ˜ν–‰ν–ˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ, Date ν΄λž˜μŠ€λŠ” ν˜„μž¬ λŒ€λΆ€λΆ„μ˜ λ©”μ†Œλ“œκ°€ μ‚¬μš©μ„ ꢌμž₯ν•˜μ§€ μ•Šκ³ (deprecated)μžˆμŠ΅λ‹ˆλ‹€.

​

JDK 1.1λΆ€ν„° μƒˆλ‘­κ²Œ 제곡된 Calendar ν΄λž˜μŠ€λŠ” λ‚ μ§œμ™€ μ‹œκ°„μ— λŒ€ν•œ 정보λ₯Ό 얻을 μˆ˜λŠ” μžˆμ§€λ§Œ, λ‹€μŒκ³Ό 같은 λ¬Έμ œμ μ„ 가지고 μžˆμŠ΅λ‹ˆλ‹€.

​

  1. Calendar μΈμŠ€ν„΄μŠ€λŠ” λΆˆλ³€ 객체(immutable object)κ°€ μ•„λ‹ˆλΌμ„œ 값이 μˆ˜μ •λ  수 μžˆμŠ΅λ‹ˆλ‹€.
  2. 윀초(leap second)와 같은 νŠΉλ³„ν•œ 상황을 κ³ λ €ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  3. Calendar ν΄λž˜μŠ€μ—μ„œλŠ” μ›”(month)을 λ‚˜νƒ€λ‚Ό λ•Œ 1μ›”λΆ€ν„° 12월을 0λΆ€ν„° 11κΉŒμ§€λ‘œ ν‘œν˜„ν•΄μ•Όν•˜λŠ” λΆˆνŽΈν•¨μ΄ μžˆμŠ΅λ‹ˆλ‹€.

​

λ”°λΌμ„œ λ§Žμ€ μžλ°” κ°œλ°œμžλ“€μ€ Calendar 클래슀뿐만 μ•„λ‹ˆλΌ 더 λ‚˜μ€ μ„±λŠ₯의 Joda-Timeμ΄λΌλŠ” 라이브러리λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•΄ μ™”μŠ΅λ‹ˆλ‹€.

​

java SE 8 λ²„μ „μ—μ„œλŠ” μ΄λŸ¬ν•œ Joda-Time 라이브러리λ₯Ό λ°œμ „μ‹œν‚¨ μƒˆλ‘œμš΄ λ‚ μ§œμ™€ μ‹œκ°„ API인 java.time νŒ¨ν‚€μ§€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. java.time νŒ¨ν‚€μ§€λŠ” μœ„μ™€ 같은 λ¬Έμ œμ μ„ λͺ¨λ‘ ν•΄κ²°ν–ˆμœΌλ©° λ‹€μ–‘ν•œ κΈ°λŠ₯을 μ§€μ›ν•˜λŠ” λ‹€μˆ˜μ˜ ν•˜μœ„ νŒ¨ν‚€μ§€λ₯Ό ν¬ν•¨ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€..

LocalDate today = LocalDate.now();
System.out.println("μ˜¬ν•΄λŠ”" + today.getYear() + "λ…„ μž…λ‹ˆλ‹€.");

LocalDate otherDay = today.withYear(2003);
System.out.println("μ˜¬ν•΄λŠ”" + otherDay.getYear() + "λ…„ μž…λ‹ˆλ‹€.");
μ‹€ν–‰κ²°κ³Ό
μ˜¬ν•΄λŠ” 2022λ…„ μž…λ‹ˆλ‹€.
μ˜¬ν•΄λŠ” 2003λ…„ μž…λ‹ˆλ‹€.

λ‚˜μ¦ˆν˜Ό(Nashorn)

μ§€κΈˆκΉŒμ§€ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ κΈ°λ³Έ μ—”μ§„μœΌλ‘œλŠ” λͺ¨μ§ˆλΌμ˜ 리노(Rhino)κ°€ μ‚¬μš©λ˜μ–΄ μ™”μŠ΅λ‹ˆλ‹€. λͺ¨μ§ˆλΌμ˜ λ¦¬λ…ΈλŠ” κ·Έ λ‹Ήμ‹œμ—λŠ” ν›Œλ₯­ν•œ 슀크립트 μ–Έμ–΄μ˜€μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 세월이 흐λ₯΄λ©΄μ„œ μžλ°”μ˜ μ΅œμ‹  κ°œμ„ μ‚¬ν•­ 등을 μ œλŒ€λ‘œ ν™œμš©ν•˜μ§€ λͺ»ν•˜λŠ” λ“± λ…Έν›„ν™”λœ λͺ¨μŠ΅μ„ λ³΄μ—¬μ£Όκ²Œ λ©λ‹ˆλ‹€.

​

λ”°λΌμ„œ 이번 Java SE 8 λ²„μ „λΆ€ν„°λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ μƒˆλ‘œμš΄ μ—”μ§„μœΌλ‘œ 였라클의 λ‚˜μ¦ˆν˜Όμ„ λ„μž…ν•˜κ²Œ λ©λ‹ˆλ‹€. λ‚˜μ¦ˆν˜Όμ€ 기쑴에 μ‚¬μš©λ˜μ–΄ 온 리노에 λΉ„ν•΄ μ„±λŠ₯κ³Ό λ©”λͺ¨λ¦¬ κ΄€λ ¨ λ©΄μ—μ„œ 크게 κ°œμ„ λœ 슀크립트 μ—”μ§„μž…λ‹ˆλ‹€.


이번 ν¬μŠ€νŒ…μ—μ„œλŠ” μ „ ν¬μŠ€νŒ…κ³Ό μ΄μ–΄μ§€λŠ” μžλ°”ν”„λ‘œκ·Έλž¨μ˜ μžλ°” λ©”μ†Œλ“œμΈ System λ©”μ†Œλ“œλ₯Ό μ•Œμ•„λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

​

μžλ°” λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μžλ°”ν”„λ‘œκ·Έλž¨μ„ ν•  수 있으며 μžλ°” λ©”μ†Œλ“œμ˜ λ”μš± μžμ„Έν•œ ꡐ윑과 λ‚΄μš©μ΄ κΆκΈˆν•˜μ‹œλ‹€λ©΄ μ•„λž˜μ˜ 넀이버 폼을 톡해 κ°„λ‹¨ν•˜κ²ŒλΌλ„ κΆκΈˆν•˜μ‹  점을 λ‚¨κ²¨μ£Όμ‹œλ©΄ μ œκ°€ 직접 λΉ λ₯΄κ³  μ •ν™•ν•œ λ‹΅λ³€ λ„μ™€λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€.

​

κ°μ‚¬ν•©λ‹ˆλ‹€ :)

​

β–Ό μžλ°”ν”„λ‘œκ·Έλž¨μ— λŒ€ν•œ κΆκΈˆν•œ 점 남기기 β–Ό

http://it-kgedu1.kr/support/edu_consult.php

 

IT학원 - KG아이티뱅크 ν™ˆνŽ˜μ΄μ§€

IT학원 KG아이티뱅크 (μ’…λ‘œ, 강남, λ…ΈλŸ‰μ§„, λΆ€μ‚°) 톡합 ν™ˆνŽ˜μ΄μ§€, 학원비 및 μˆ˜κ°•λ£Œ 쑰회. λ°©λ¬Έμƒλ‹΄μ˜ˆμ•½, κ΅μœ‘κ³Όμ •, μƒλ‹΄μ•ˆλ‚΄

it-kgedu1.kr

 

λ°˜μ‘ν˜•