๐Ÿ’ป/JAVA

[Java] 12์ผ์ฐจ : ์ž๋ฐ”์˜ ๊ธฐ๋ณธ API ํด๋ž˜์Šค 6

๋”ฐ๊ถˆ 2024. 3. 2. 23:29

 

Arrays 

๋ฐฐ์—ด ์กฐ์ž‘ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ๋ชจ๋“  ๋ฉ”์†Œ๋“œ๊ฐ€ static์œผ๋กœ ์ •์˜๋˜์–ด ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‹จ์ˆœํ•œ ๋ฐฐ์—ด ๋ณต์‚ฌ๋Š” System,arraycopy() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, Arrays๋Š” ๋ฐฐ์—ด ๋ณต์‚ฌ ๋ฐ ์ถ”๊ฐ€์ ์œผ๋กœ ํ•ญ๋ชฉ ์ •๋ ฌ, ํ•ญ๋ชฉ ๊ฒ€์ƒ‰, ํ•ญ๋ชฉ ๋น„๊ต์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

 

package ch07.unit08;

import java.util.Arrays;
import java.util.Collections;

public class Ex01_Arrays {

	public static void main(String[] args) {
		String s;
		String[] ss = new String[] {"์„œ์šธ","๋ถ€์‚ฐ","๋Œ€๊ตฌ","์ธ์ „","๊ด‘์ฃผ","๋Œ€์ „","์šธ์‚ฐ","์„ธ์ข…"};
		
		
		//Arrays : ๋ฐฐ์—ด์— ๊ด€๋ จ๋œ ๋ฉ”์†Œ๋“œ ์ œ๊ณต
		s = Arrays.toString(ss); // 
			// toString : ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋ฅผ "[๊ฐ’1, ๊ฐ’2...]" ํ˜•์‹์˜ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜
		System.out.println(s);
		
		// ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
		Arrays.sort(ss);
		s = Arrays.toString(ss); // [๊ด‘์ฃผ, ๋Œ€๊ตฌ, ๋Œ€์ „, ๋ถ€์‚ฐ, ์„œ์šธ, ์„ธ์ข…, ์šธ์‚ฐ, ์ธ์ „]
		System.out.println(s);
		
		// ๋‚ด๋ฆผ์ฐจ์ˆœ
		Arrays.sort(ss, Collections.reverseOrder());;
		s = Arrays.toString(ss); // [์ธ์ „, ์šธ์‚ฐ, ์„ธ์ข…, ์„œ์šธ, ๋ถ€์‚ฐ, ๋Œ€์ „, ๋Œ€๊ตฌ, ๊ด‘์ฃผ]
		System.out.println(s);
		
		//Object : ๋ชจ๋“  ํด๋ž˜์Šค์˜ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค๋กœ
		// ๋ฌธ์ž์—ด, ์ •์ˆ˜, ์‹ค์ˆ˜ ๋“ฑ ๋ชจ๋“  ์ž๋ฃŒํ˜• ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
		// Object [] oo = {"์ž๋ฐ”",70,"์Šคํ”„๋ง",80}; // ๋ฐฐ์—ด์— ์„œ๋กœ ๋‹ค๋ฅธ ์ž๋ฃŒํ˜•์ด ์กด์žฌ
		// Arrays.sort(oo); // ๋Ÿฐ์˜ค
			// ๋ฐฐ์—ด์— ์„œ๋กœ ๋‹ค๋ฅธ ์ž๋ฃŒํ˜•์ด ์กด์žฌํ•˜๋ฏ€๋กœ
	}

}

 

 

 

package ch07.unit08;

import java.util.Arrays;

public class Ex02 {

	public static void main(String[] args) {
		String[] ss = new String[] {"์„œ์šธ","๋ถ€์‚ฐ","๋Œ€๊ตฌ","์ธ์ „","๊ด‘์ฃผ","๋Œ€์ „","์šธ์‚ฐ","์„ธ์ข…"};
		int idx;
		
		// ์ด์ง„๊ฒ€์ƒ‰ = ์ •๋ ฌ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ๊ฒ€์ƒ‰ ๋ถˆ๊ฐ€
		// idx = Arrays.binarySearch(ss, "์„œ์šธ");
		// System.out.println(idx);
		
		// 1) ์ •๋ ฌ ๋จผ์ € ํ•˜๊ณ 
		Arrays.sort(ss);
		System.out.println(Arrays.toString(ss));
		// 2) ๊ฒ€์ƒ‰
		idx = Arrays.binarySearch(ss, "์„œ์šธ"); // 4 : ์ธ๋ฑ์Šค ๋ฐ˜ํ™˜
		System.out.println(idx);
		
		idx = Arrays.binarySearch(ss, "๊ฒฝ๊ธฐ"); // -1 : ์—†์Œ
		System.out.println(idx);
			
	}

}

 

 

package ch07.unit08;

import java.util.Arrays;

public class Ex03 {

	public static void main(String[] args) {
		String[] ss = new String[] {"์„œ์šธ","๋ถ€์‚ฐ","๋Œ€๊ตฌ","์ธ์ „","๊ด‘์ฃผ","๋Œ€์ „","์šธ์‚ฐ","์„ธ์ข…"};

		// ๋ฐฐ์—ด๋ณต์‚ฌ-1
		String[] ss2 = Arrays.copyOf(ss, ss.length);
		System.out.println(ss == ss2); // false
		System.out.println(Arrays.toString(ss2));
		
		
		// ๋ฐฐ์—ด๋ณต์‚ฌ -2
									// ๋ณต์‚ฌ๋Œ€์ƒ, form, to-1
		String[] ss3 = Arrays.copyOfRange(ss, 1, 4);
		System.out.println(Arrays.toString(ss3)); // [๋ถ€์‚ฐ, ๋Œ€๊ตฌ, ์ธ์ „]
		
		
		// ๋ฐฐ์—ด ๋ณต์‚ฌ-3 // arraycopy()๋Š” Arrays.copyOf() ๋ณด๋‹ค ์„ฑ๋Šฅ ์ข‹์Œ.
		String[] ss4 = new String[ss.length];
		System.arraycopy(ss, 0, ss4, 0, ss.length);
		System.out.println(Arrays.toString(ss4));
	}

}

 

 

package ch07.unit08;

import java.util.Arrays;

public class Ex04 {

	public static void main(String[] args) {
		int []a = {1,2,3};
		int []b = {1,2,3};
		int []c = {1,2,3,4,5};
		
		// ์ฃผ์†Œ ๋น„๊ต
		System.out.println(a == b); // false
		System.out.println(a == c); // false
		System.out.println(a.equals(b)); // false
		
		
		// ๋ฐฐ์—ด์˜ ๊ฐ’๋น„๊ต
		System.out.println(Arrays.equals(a, b)); // true
		System.out.println(Arrays.equals(a, c)); // false
		
		// 2์ฐจ์› ๋ฐฐ์—ด
		int [][] aa = {{1,2,3}, {4,5,6}};
		int [][] bb = {{1,2,3}, {4,5,6}};
		// Arrays.equals() : 2์ฐจ์› ๋ฐฐ์—ด์—์„œ๋Š” 1์ฐจ์›์ด ๊ฐ€์ง„ ์ฃผ์†Œ๋น„๊ต(์–•์€๋น„๊ต)
		System.out.println(Arrays.equals(aa, bb)); // false

		// Arrays.deepEquals() : 2์ฐจ์› ๋ฐฐ์—ด์—์„œ 2์ฐจ์›์˜ ๊ฐ’๋น„๊ต(๊นŠ์€๋น„๊ต)
		System.out.println(Arrays.deepEquals(aa, bb)); // true
		
	}

}

 

LocalDate 

๋กœ์ปฌ ๋‚ ์งœ ํด๋ž˜์Šค๋กœ ๋‚ ์งœ ์ •๋ณด๋งŒ ํ•„์š” ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

package ch07.unit09;

import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.temporal.ChronoUnit;
// LocalDate ์“ฐ๊ธฐ
public class Ex01_LocalDate {

	public static void main(String[] args) {
		// ์‹œ์Šคํ…œ ๋‚ ์งœ
		LocalDate date1 = LocalDate.now();
		System.out.println("ํ˜„์žฌ ๋‚ ์งœ : " + date1);
//		String s = date1; // ์•ˆ๋จ
		String s = date1.toString();
		System.out.println(s);
		
		// ๋‚ ์งœ ์„ค์ •
		LocalDate date2 = LocalDate.of(2024, 5, 8); // m์— -1ํ•  ํ•„์š” ์—†์Œ
		System.out.println(date2);
		
		// ์‹œ์Šคํ…œ ์‹œ๊ฐ„
		LocalTime time1 = LocalTime.now();
		s = time1.toString();
		System.out.println(s); // 14:37:15.849691300
		
		// ์‹œ๊ฐ„ ์„ค์ •
		LocalTime time2 = LocalTime.of(17, 50, 0, 0);
		System.out.println(time2); // 17:50
		
		// ์‹œ์Šคํ…œ ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„
		LocalDateTime dt = LocalDateTime.now();
		System.out.println(dt); 
			// 2024-02-29T14:38:19.085077600
		String[] ss = dt.toString().split("T"); // dt๋Š” ๋ฌธ์ž์—ด์ด ์•„๋‹ˆ๋ฏ€๋กœ toString์œผ๋กœ ๋ฐ”๊พผ ํ›„ ๋ถ„๋ฆฌ
		System.out.println(ss[0] + " " + ss[1]); // 2024-02-29 14:40:46.453227200

		// ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„์„ ์„ค์ •
		LocalDateTime dt2 = LocalDateTime.of(2024, 5, 8, 11,10,0,0); // 0์ด๋ฉด ์ดˆ, ๋ฐ€๋ฆฌ์ดˆ ์•ˆ๋‚˜์˜ด
		System.out.println(dt2); // 2024-05-08T11:10

		
		// ํŠน์ • ์‹œ์ ์˜ ํƒ€์ž„ ์Šคํ…œํ”„ ์–ป๊ธฐ
		Instant i1 = Instant.now();
		try {
			Thread.sleep(10); // ์ž ์‹œ ๋ฉˆ์ถ”๊ธฐ
		} catch (Exception e) {
		}
		Instant i2 = Instant.now();
		
		if(i1.isBefore(i2)) {
			System.out.println("i1์ด ๋น ๋ฆ…๋‹ˆ๋‹ค.");
		} else if(i1.isAfter(i2)) {
			System.out.println("i1์ด ๋А๋ฆฝ๋‹ˆ๋‹ค.");
		} else {
			System.out.println("๋™์ผ");
		} // ๋‘ ํƒ€์ž„์˜ ์ฐจ์ด ๋‚˜๋…ธ์„ธ์ปจ๋“œ ๊ณ„์‚ฐ
		System.out.println("์ฐจ์ด : " + i1.until(i2, ChronoUnit.NANOS));

		
	}

}

 

 

 

LocalTime

๋กœ์ปฌ ์‹œ๊ฐ„ ํด๋ž˜์Šค๋กœ ์‹œ๊ฐ„ ์ •๋ณด๋งŒ ํ•„์š” ํ•  ๋•Œ ์‚ฌ์šฉ ํ•œ๋‹ค.

 

package ch07.unit09;

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;

public class Ex02 {

	public static void main(String[] args) {
		LocalDateTime now = LocalDateTime.now();
		
		int y = now.getYear();
		int m = now.getMonthValue();
		int d = now.getDayOfMonth();
		
		DayOfWeek week = now.getDayOfWeek();
		String w = week.toString(); // ์˜์–ด๋กœ ๋‚˜์˜ด
		
		int h = now.getHour();
		int mi = now.getMinute();
		int s = now.getSecond();
		int n = now.getNano();
		
		System.out.printf("%d-%02d-%d \n", y,m,d); // ํ•œ์ž๋ฆฌ๋งŒ ์žˆ์„๋•Œ ์•ž์— 0๋ถ™์ด๊ธฐ
		System.out.printf("%d-%02d-%d %02d:%02d:%02d.%d %s\n", y,m,d,h,mi,s,n, w); // ํ•œ์ž๋ฆฌ๋งŒ ์žˆ์„๋•Œ ์•ž์— 0๋ถ™์ด๊ธฐ
		

		LocalDate date = now.toLocalDate(); // ํ˜„์žฌ ๋‚ ์งœ. ์œค๋…„ ๋ฉ”์†Œ๋“œ isLeapYear๋Š” LocalDate์— ์žˆ์Œ. 
		System.out.println(date);
		if(date.isLeapYear()) {
			System.out.println("์œค๋…„์˜ ํ•ด์ž…๋‹ˆ๋‹ค.");
		} else {
			System.out.println("์œค๋…„์ด ์•„๋‹™๋‹ˆ๋‹ค.");
		}
		
		LocalDate date2 = LocalDate.of(2024, 5, 5);
		// ๋…„๋„๊ฐ€ ๋‹ค๋ฅด๋ฉด ๋…„๋„์ฐจ์ด, ๋…„๋„๊ฐ€ ๋‹ค๋ฅด๋ฉด ์›”์ฐจ์ด, ์›”์ด ๊ฐ™์œผ๋ฉด ์ผ์ฐจ์ด
		int diff = LocalDate.now().compareTo(date2); // 2-5 = -3
		System.out.println(diff); // 
		
	}

}

 

 

 

package ch07.unit09;

import java.time.LocalDateTime;

public class Ex03 {
	public static void main(String[] args) {

	LocalDateTime now = LocalDateTime.now();
	System.out.println(now); //
	
	// ๋‚ ์งœ ๊ณ„์‚ฐ
	LocalDateTime dt = now
			.plusYears(1) // 1๋…„ ๋”ํ•˜๊ณ 
			.minusMonths(3) // 3๊ฐœ์›” ๋นผ๊ธฐ
			.plusDays(3) //
			.plusHours(2);
	
	
	System.out.println(dt);

	}
}

 

 

 

DateTimeFormatter 

java.util.DateFormat ํด๋ž˜์Šค๋ฅผ ๋Œ€์ฒดํ•  ์šฉ๋„๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค. ํ•˜์œ„ ํ˜ธํ™˜์„ฑ ๋•Œ๋ฌธ์— java.util.DateFormat  ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” formatter.toFormat() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋œ๋‹ค. ์ถœ๋ ฅ ํ˜•์‹์„ ์ง์ ‘ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ofPattern() ์ •์  ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd")

 

	/**
	 * ๋ฌธ์ž์—ด์„ LocalDate ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ 
	 * @param date ๋ณ€ํ™˜ํ•  ๋‚ ์งœ(String)
	 * @return	๋ณ€ํ™˜ ํ•œ ๋‚ ์งœ(LocalDate)
	 */
	public LocalDate toLocalDate(String date) {
		LocalDate result = null;
		
		if( ! isValidDate(date)) {
			throw new IllegalArgumentException("๋‚ ์งœ ํ˜•์‹ ์˜ค๋ฅ˜ : " + date);
		}
		
		try {
			date = date.replaceAll("\\-|\\/|\\.", "");
			
			DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyMMdd");
			result = LocalDate.parse(date, dtf);
			
		} catch (Exception e) {
			throw new IllegalArgumentException("๋‚ ์งœ ํ˜•์‹ ์˜ค๋ฅ˜ : " + date);
		}
		
		return result;
		
	}