Java - API
API
* API : Application Programming Interface * '๋ผ์ด๋ธ๋ฌ๋ฆฌ'๋ผ๊ณ ๋ ํจ.
Mathํด๋์ค
* ์ํ๊ณผ ๊ด๋ จ๋ ์ ์ฉํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํด๋์ค * java.lang.math์ ์์นํด ์์. * ๋ชจ๋ ๋ฉ์๋๋ค์ด static, ๋ชจ๋ ํ๋๋ค์ด ์์ํ๋์ * => ๊ฐ์ฒด ์์ฑ์ ํ ํ์๊ฐ ์์. * * Math m = new Math(); * [์ค๋ฅ] The constructor Math() is not visible * Ctrlํค๋ฅผ ๋๋ฅด๊ณ Open declaration์ ๋ณด๋ฉด ์์ฑ์๊ฐ private๋ก ๋์ด์์ * * static : ํ๋ก๊ทธ๋จ ์คํ๊ณผ ๋์์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ฌ๋ ค๋์. * ๊ณต์ (์ฌ์ฌ์ฉ)์ ๊ฐ๋ ์ด ๊ฐํจ. * => ์ฑ๊ธํค ํจํด(ํด๋์ค์ ๊ฐ์ฒด๋ฅผ API๋ฌธ์์ ๋จ ํ๋ฒ ์์ฑํ๊ณ , ์ด๋ฅผ ์ฌ์ฉํจ)
package com.kh.chap01_math.run;
// import java.lang.Math; => ์๋ต๊ฐ๋ฅ(ํญ์ import๋์ด์์)
public class MathRun {
public static void main(String[] args) {
// ์์
// ํ์ด(์์ฃผ์จ) => Mathํด๋์ค ๋ด์ ์์ํ๋๋ก ์ ์๋์ด ์์.
System.out.println("ํ์ด : "+ Math.PI);
// ๋ฉ์๋
// ๊ฐ์ฒด๋ช
.๋ฉ์๋๋ช
(๋งค๊ฐ๋ณ์) : ๋ฐํํ
// 1. ์ฌ๋ฆผ์ฒ๋ฆฌ => Math.ceil(double) : double
double num1 = 4.349;
System.out.println("์ฌ๋ฆผ : "+Math.ceil(num1)); // 5.0
// 2. ๋ฐ์ฌ๋ฆผ์ฒ๋ฆฌ => Math.round(double) : long
System.out.println("๋ฐ์ฌ๋ฆผ : "+Math.round(num1)); // 4
// 3. ๋ฒ๋ฆผ์ฒ๋ฆฌ => Math.floor(double) : double
System.out.println("๋ฒ๋ฆผ : "+Math.floor(num1)); // 4.0
// 4. ์ ๋๊ฐ(absolute) => Math.abs(int,double,long,float) : int, double, long, float(์ค๋ฒ๋ก๋ฉ ๋์ด์์.)
int num2 = -10;
System.out.println("์ ๋๊ฐ : "+Math.abs(num2)); // 10
// 5. ์ต์๊ฐ => Math.min(int,int) : int
System.out.println("์ต์๊ฐ : "+Math.min(5, 10)); // 5
// 6. ์ต๋๊ฐ => Math.max(int,int) : int
System.out.println("์ต๋๊ฐ : "+Math.max(5, 10)); // 10
// 7. ์ ๊ณฑ๊ทผ(square root) => Math.sqrt(double) : double
System.out.println("4์ ์ ๊ณฑ๊ทผ : "+Math.sqrt(4)); // 2.0
// 8. ์ ๊ณฑ => Math.pow(double, double) : double
System.out.println("2์ 10์ ๊ณฑ : "+Math.pow(2, 10)); // 1024.0
}
}
Stringํด๋์ค
์์ํ(String Pool)
* String์ "๋ถ๋ณํด๋์ค"(๋ณํ์ง ์๋ ํด๋์ค)๋ผ๊ณ ๋ถ๋ฆผ. * => String ๊ฐ์ฒด ๊ธฐ์ค์ผ๋ก ๊ฐ์ด ์์ ๋๋ ์๊ฐ, ๊ธฐ์กด์ ๋ด๊ธด ๊ณต๊ฐ์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ ๊ฒ์ด ์๋, * => ์๋ก์ด ๊ณณ์์ ์๋ก์ด ๋ฌธ์์ด์ด ์๊ธฐ๊ณ ๊ทธ ์์น๋ฅผ ์ฐธ์กฐํจ. * * String ๊ฐ์ฒด๋ฅผ ๋ง๋ค๋, ๋ฆฌํฐ๋ด์ ์ ์ํ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด๋ฅผ ๋ง๋ค๋ฉด * ๊ทธ ๋ด์ฉ๋ฌผ์ด heap์์ญ์ ์๋ "์์ํ(StringPool)"์ ์์ญ์ ์ฌ๋ผ๊ฐ๊ฒ ๋จ. * ์ด ์์ญ์์๋ ์ค๋ณต๋๋ ๋ด์ฉ์ด ์๋ค๋ฉด, ์ค๋ณต๋ ๋ด์ฉ์ ๋นผ๋ ๋์ , ๊ฐ์ ์ฃผ์๊ฐ์ ์ฐธ์กฐํ๊ฒ ํจ.
package com.kh.chap02_String.controller;
public class A_StringPoolTest {
// Stringํํ์ ๊ฐ์ฒด ๋ง๋ค๊ธฐ
// 1. ์์ฑ์๋ฅผ ํตํด์ ๋ฌธ์์ด ๋ด๊ธฐ => String str = new String();
public void method1() {
String str1 = new String("Hello");
String str2 = new String("Hello");
// Stack Heap
//
// 0123 --------> Hello
// str1 0123
//
// 1234 --------> Hello
// str2 1234
System.out.println(str1 == str2); // false, ์ฃผ์๊ฐ ๋น๊ต
System.out.println(str1/*.toString*/); // Hello
// ์ toString์ธ๋ฐ๋ ์ฃผ์๊ฐ์ด ์๋ ์ค์ ๊ฐ์ด ๋์ค๋๊ฐ?
// Objectํด๋์ค์ toString()๋ฉ์๋์ ๋ฌ๋ฆฌ,
// Stringํด๋์ค์ toString()๋ฉ์๋์ ๊ฒฝ์ฐ
// ์ค๋ฒ๋ผ์ด๋ฉ์ ํ์ฌ ์ค์ ๋ด๊ฒจ์๋ ์ฃผ์๊ฐ์ด ์๋, ์ค์ ๋ด๊ฒจ์๋ ๋ฌธ์์ด์ ๋ฐํํ๊ฒ๋ ํจ.
System.out.println(str1.equals(str2)); // true, ์ค์ ๋ฌธ์์ด ๋น๊ต
// String ํด๋์ค์ equals()๋ฉ์๋์ ๊ฒฝ์ฐ,
// ์๋๋ ์ค์ ๋ด๊ฒจ์๋ ์ฃผ์๊ฐ์ ๋น๊ตํ๋ ์ญํ ์์
// ์ค์ ๋ด๊ฒจ์๋ ๋ฌธ์์ด์ ๋น๊ตํ ์ ์๊ฒ๋ ์ค๋ฒ๋ผ์ด๋ฉ ํ ๊ฒ์.
System.out.println(str1.hashCode()); // 69609650
System.out.println(str2.hashCode()); // 69609650
// ์ฐธ์กฐํ๋ณ์(๊ฐ์ฒด)์์ ์ฃผ์๊ฐ์ 10์ง์์ ํํ๋ก ๋ฐํํด์ฃผ๋ ๋ฉ์๋
// str1๊ณผ str2์ ์ฃผ์๊ฐ์ด ๊ฐ๊ฒ ๋์ด.
// ์ด์ ๋ Stringํด๋์ค์ hashcode()๋ฉ์๋์ ๊ฒฝ์ฐ
// ์ค์ ๋ด๊ฒจ์๋ ์ฃผ์๊ฐ์ 10์ง์ ํํ๋ก ๋ด๋ณด๋ด๋ ์ญํ ์ ๋ง์ผ๋,
// ์ด ์ญํ ์์ ์ค์ ๋ด๊ฒจ์๋ ๋ฌธ์์ด ๊ธฐ๋ฐ์ผ๋ก ํด์์ฝ๋๋ฅผ 10์ง์ ํํ๋ก ๋ง๋ค์ด์ ๋ด๋ณด๋ด๊ฒ๋ ์ค๋ฒ๋ผ์ด๋ฉํจ.
// ์ฆ, ๋๋ค "Hello"๋ก ๋ฌธ์์ด์ด ๋๋ฑํ๊ธฐ ๋๋ฌธ์, ๊ฐ์ ์ฃผ์๊ฐ์ด ๋์ด.
// ๊ทธ๋ ๋ค๋ฉด ์ง์ง ์ฃผ์๊ฐ์ ํด์์ฝ๋๋ฅผ ์๊ณ ์ถ๋ค๋ฉด?
// System.identityHashCode(์ฐธ์กฐํ๋ณ์๋ช
)
// => ํด๋น ๊ฐ์ฒด์ ์ค์ ์ฃผ์๋ฅผ ํด์์ฝ๋๋ก ์ถ๋ ฅ
System.out.println(System.identityHashCode(str1));
System.out.println(System.identityHashCode(str2));
}
// 2. ๊ฐ์ ๋ฆฌํฐ๋ด๋ก์จ ๋์
ํด๋ฒ๋ฆฌ๊ธฐ => String str = "~";
public void method2() {
String str1 = "hello";
String str2 = "hello";
// โ> hello(์ค๋ณต๋ ๋ด์ฉ)
// Stack Heap โโ
// [์์ํ]
// 0123 โโโโโโโโโโ> hello
// str1 0123
// โ
// 1234 โโโโโโโโโโโโโโ
// str2
// String ๊ฐ์ฒด๋ฅผ ๋ง๋ค๋, ๋ฆฌํฐ๋ด์ ์ ์ํ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด๋ฅผ ๋ง๋ค๋ฉด
// ๊ทธ ๋ด์ฉ๋ฌผ์ด heap์์ญ์ ์๋ "์์ํ(StringPool)"์ ์์ญ์ ์ฌ๋ผ๊ฐ๊ฒ ๋จ.
// ์ด ์์ญ์์๋ ์ค๋ณต๋๋ ๋ด์ฉ์ด ์๋ค๋ฉด, ์ค๋ณต๋ ๋ด์ฉ์ ๋นผ๋ ๋์ , ๊ฐ์ ์ฃผ์๊ฐ์ ์ฐธ์กฐํ๊ฒ ํจ.
System.out.println(str1 == str2); // true, ์ฃผ์๊ฐ ๋น๊ต
System.out.println(str1/*toString*/);
System.out.println(str2/*toString*/);
System.out.println(str1.equals(str2)); // true, ์ค์ ๊ฐ ๋น๊ต
System.out.println(str1.hashCode());
System.out.println(str2.hashCode()); // ์ค์ ๋ด์ฉ๋ฌผ(๋ฌธ์์ด)์ ๊ธฐ๋ฐ์ผ๋ก 10์ง์ํ
System.out.println(System.identityHashCode(str1));
System.out.println(System.identityHashCode(str2)); // ์ค์ ์ฃผ์๊ฐ์ ๋ฐํ
}
// ๋ถ๋ณํด๋์ค
// => ๊ธฐ์กด์ ๋ด์ฉ๋ฌผ์ด ๋ณํ์ง ์๊ณ , ์๋ก์ด ์ฃผ์์ ์๋ก์ด ๋ด์ฉ์ ์ถ๊ฐํ๊ณ , ์ฐธ์กฐํ๋ ์ฃผ์๋ฅผ ๋ฐ๊ฟ.
public void method3() {
String str = "hello";
System.out.println(System.identityHashCode(str));
str = "goodbye";
System.out.println(System.identityHashCode(str));
str += "abc";
System.out.println(str);
System.out.println(System.identityHashCode(str));
// โ> hello(0123), goodbye(1234) => ์ฐ๊ฒฐ์ด ๋๊ฒจ, ์ธ์ ๊ฐ GC๊ฐ ์ง์์ค.
// Stack Heap โโ
// [์์ํ]
// 2345 goodbyeabc
// str 2345
//
/*
* ๊ธฐ์กด์ ์์ํ์ ์ฐ๊ฒฐ์ด ๋๊ธด ๋ฌธ์์ด๋ค์ GC์ ์ํด ์ ๋ฆฌ๋จ.
* "๋ถ๋ณ"์ด๋ผ๊ณ ํด์ ์์ ์ด ์์ ์๋๋ ๊ฒ์ด ์๋๋ผ(์ด ๊ฒฝ์ฐ๋ "์์"์)
* ๊ธฐ์กด์ ๊ทธ ์๋ฆฌ์์ ์์ ๋๋ ๊ฐ๋
์ด ์๋, ๋งค๋ฒ ์๋ก์ด ์ฃผ์๊ฐ์ ์ฐธ์กฐํ๋ ๊ฐ๋
*/
}
}
String ๋ฉ์๋
package com.kh.chap02_String.controller;
import java.util.Arrays;
import java.util.Scanner;
public class B_StringMethodTest {
public void method() {
String str1 = "Hell world";
// ๋ฉ์๋๋ช
(๋งค๊ฐ๋ณ์) : ๋ฐํํ
// 1. ๋ฌธ์์ด.charAt(int index) : char
// => ๋ฌธ์์ด๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ index ์์น์ ๋ฌธ์ ํ๋๋ง์ ์ถ์ถํด์ฃผ๋ ๋ฉ์๋
char ch = str1.charAt(3);
System.out.println("ch : "+ch); // l
// 2. ๋ฌธ์์ด.concat(String str) : str
// => ๋ฌธ์์ด๊ณผ ์ ๋ฌ๋ ๋ ๋ค๋ฅธ ๋ฌธ์์ด์ ํ๋๋ก ํฉ์ณ์ ๋ฐํํด์ค.
// => ๋ฌธ์์ด = ๋ฌธ์์ด + str๊ณผ ๊ฐ์ ์ญํ
// => ๋จ, ๋ ๋ญํ
์ด๋ก๋ง ๋ฌถ์ ์ ์์.
String str2 = "!!!";
System.out.println(str1.concat(str2));
System.out.println(str1 + str2);
// 3. ๋ฌธ์์ด.length() : int
// => ํ์ฌ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๋ฐํํด์ค.
System.out.println("str1์ ๊ธธ์ด : "+str1.length()); // 10(๋์ด์ฐ๊ธฐ ํฌํจ)
// 4-1. ๋ฌธ์์ด.substring(int ์์index) : String
// => ๋ฌธ์์ด์ ์์index์์น์์๋ถํฐ ๋๊น์ง์ ๋ถ๋ถ๋ฌธ์์ด์ ์ถ์ถํ์ฌ ๋ฐํํด์ฃผ๋ ๋ฉ์๋์.
System.out.println("Str1์ ๋ถ๋ถ๋ฌธ์์ด : "+str1.substring(6)); // orld
// 4-2. ๋ฌธ์์ด.substring(int ์์index, int ๋index) : String => ์ค๋ฒ๋ก๋ฉ
// => ๋ฌธ์์ด์ ์์index์์น์์๋ถํฐ ๋ index์ ์์น์ ๋ถ๋ถ๋ฌธ์์ด์ ์ถ์ถํ์ฌ ๋ฐํํด์ฃผ๋ ๋ฉ์๋์.
System.out.println("str1์ ๋ถ๋ถ๋ฌธ์์ด : "+str1.substring(0,6)); // Hell w (0 <= ์ธ๋ฑ์ค ๋ฒ์ < 6)
// 5. ๋ฌธ์์ด.replace(char old, char new) : String
// => old์ ํด๋นํ๋ ๋ฌธ์์ด์ new๋ก ๋ณํ์์ผ์, ํด๋น ๋ฌธ์์ด์ ๋ฐํ์์ผ์ฃผ๋ ๋ฉ์๋
String str3 = str1.replace('l', 'c');
System.out.println("str3 : "+str3);
// 6. ๋ฌธ์์ด.trim() : String
// => ๋ฌธ์์ด์์์ ์๋ค ๊ณต๋ฐฑ์ ์ ๊ฑฐํ ๋ฌธ์์ด์ ๋ฐํํด์ฃผ๋ ๋ฉ์๋
String str4 = " JA VA ";
System.out.println("str4.trim()์ ์ฉ : " + str4.trim()); // JA VA
// QUIZ) ์ค๊ฐ์ ๊ณต๋ฐฑ์ ์์ ๊ณ ์ถ๋ค๋ฉด?
System.out.println((str4).replace(" ", ""));
// 7-1. ๋ฌธ์์ด.toUpperCase() : String
// => ํด๋น ๋ฌธ์์ด์ ๋ชจ๋ ๋๋ฌธ์๋ก ๋ณ๊ฒฝ ํ, ๊ทธ ๋ฌธ์์ด์ ๋ฐํ์์ผ์ค.
System.out.println("๋๋ฌธ์ : " + str1.toUpperCase());
// 7-2. ๋ฌธ์์ด.toLowerCase() : String
// => ํด๋น ๋ฌธ์์ด์ ๋ชจ๋ ์๋ฌธ์๋ก ๋ณ๊ฒฝ ํ, ๊ทธ ๋ฌธ์์ด์ ๋ฐํ์์ผ์ค.
System.out.println("์๋ฌธ์ : " + str1.toLowerCase());
/*
* ์ฌ์ฉ์๋ก๋ถํฐ
* ์ข
๋ฃ๋ฅผ ์ํ๋ฉด Y๋ฅผ ์
๋ ฅํ์์ค. ๋ผ๊ณ ์ ๋
*/
System.out.println("---------------------------------------------------");
Scanner sc = new Scanner(System.in);
System.out.println("์ข
๋ฃํ์๊ฒ ์ต๋๊น? (Y,N) : ");
// ์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ
char answer1 = sc.nextLine().charAt(0); // 'y' / 'Y'
if(answer1 == 'y' || answer1 =='Y') {
System.out.println("์์คํ
์ ์ข
๋ฃํฉ๋๋ค.");
}else {
System.out.println("์์คํ
์ ์ข
๋ฃํ์ง ์์ต๋๋ค.");
}
// ๋๋ฒ์งธ ๋ฐฉ๋ฒ
char answer2 = sc.nextLine().toUpperCase().charAt(0);
// ์ง์ ์ ๊ทผ์ฐ์ฐ์(.)๋ก ์ฐ์ ์์๊ฐ ๋ชจ๋ ๊ฐ๊ธฐ ๋๋ฌธ์ ์ผ์ชฝ์์๋ถํฐ ์คํ๋จ.
// ์ฌ์ฉ์์
๋ ฅ => ๋๋ฌธ์ => ๋ฌธ์์ถ์ถ(๋ฉ์๋ Chaining)
if(answer2 =='Y') {
System.out.println("์์คํ
์ ์ข
๋ฃํฉ๋๋ค.");
}else {
System.out.println("์์คํ
์ ์ข
๋ฃํ์ง ์์ต๋๋ค.");
}
System.out.println("---------------------------------------------------");
// ๋ฌธ์์ด => char[]
// str1๋ฌธ์์ด ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด ํ๋ํ๋๋ฅผ ์ถ์ถํด์ ๋ฌธ์ ๋ฐฐ์ด์ ๋ด๊ฒ ๋ค.
char[] arr = new char[str1.length()];
for(int i=0; i<arr.length; i++) {
arr[i] = str1.charAt(i);
}
System.out.println(Arrays.toString(arr));
// 8. ๋ฌธ์์ด.toCharArray() : char[]
// => ๋ฌธ์์ด์ ๊ฐ ๋ฌธ์๋ค์ char๋ฐฐ์ด์ ์ฎ๊ฒจ๋ด์
// => ๊ทธ ๋ฐฐ์ด ์์ฒด๋ฅผ ๋ฐํํด์ฃผ๋ ๋ฉ์๋
char[] arr2 = str1.toCharArray();
System.out.println(Arrays.toString(arr2));
// char[] => ๋ฌธ์์ด
char[] arr3 = {'a','p','p','l','e'};
String result = "";
for(int i=0; i<arr3.length; i++) {
result = result+arr3[i]; // ๋ฌธ์์ดํ + ๋ค๋ฅธ์๋ฃํ = ๋ฌธ์์ดํ
}
System.out.println("result : "+ result);
// 9. static valueOf(char[] data) : String
// => ์ ๋ฌ๋ char๋ฐฐ์ด์ ๋ด๊ธด ๋ฌธ์๋ค์ ํ๋์ ๋ฌธ์์ด๋ก ์ฐ์ด์ด์ ๋ฐํํด์ฃผ๋ ๋ฉ์๋
System.out.println("๋ฉ์๋ ์ฌ์ฉ ํ : "+String.valueOf(arr3));
}
}
StringTokenizer
package com.kh.chap02_String.controller;
import java.util.StringTokenizer;
public class C_StringTokenizerTest {
public void method1() {
String str = "Java,Oracle,JDBC,HTML,Server,Spring";
// [๋ฐฉ๋ฒ1]
// 1. ๊ตฌ๋ถ์๋ฅผ ์ ์ํด์ ํด๋น ๋ฌธ์์ด์ ๋จ์ด ๋จ์๋ก ๋ถ๋ฆฌ
// ๋ถ๋ฆฌ๋ ๋ฌธ์์ด๋ค์ String๋ฐฐ์ด์ ์ฐจ๊ณก์ฐจ๊ณก ๋ด์์ ๊ด๋ฆฌ
String[] arr = str.split(",");
// split์ด๋ผ๋ ๋ฌธ์์ด์ ์ชผ๊ฐ์ฃผ๋ ๋ฉ์๋๋ฅผ ํ์ฉ(String ํด๋์ค)
// [ํํ๋ฒ] ๋ฌธ์์ด.split(String๊ตฌ๋ถ์) : String[]
// 2. ๊ฐ ์ธ๋ฑ์ค์ ๊ฐ์ด ๋น ๋ฐฐ์ด์ ๋ง๋ค์ด ์ฃผ๊ธฐ
for(int i=0; i<arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
// 3. ๋ฐฐ์ด์ ์ด์ฉํ์ฌ ๊ฐ์ ์ถ๋ ฅํ๊ธฐ
// ๋ฐฐ์ด์ ๊ฒฝ์ฐ, for๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์ธ ์ ์์(ํฅ์๋ for๋ฌธ, for each๋ฌธ)
// [ํํ๋ฒ]
// for(๊ฐ์ ๋ด์์ค ๋ณ์ ์ ์ธ๋ฌธ : ์์ฐจ์ ์ผ๋ก ์ ๊ทผํ๊ณ ์ถ์ ๋ฐฐ์ด๋ช
๋๋ ์ปฌ๋ ์
๋ช
) { ๋ฐ๋ณต์ ์ผ๋ก ์คํํ ์ฝ๋ }
for(String s : arr) { // ์ฃผ์์ฌํญ : ํด๋น ๋ฐฐ์ด์ ํ์
์ ๋ง๊ฒ ๋ณ์์ ์ธ๋ฌธ์ ์์ฑํด์ผ ํจ!!
// arr[0] = s => system.out.print(s) : Java
// arr[1] = s => system.out.print(s) : Oracle
// arr[2] = s => system.out.print(s) : JDBC
// ...
// arr[5] = s => system.out.print(s) : Spring
// ๋ด๋ถ์ ์ผ๋ก s๋ผ๋ ๋ฌธ์์ด ํ์
์ ๋ณ์์ arr[i] ๋ฐฉ์ ๋ค์ ๊ฐ์ด ์์ฐจ์ ์ผ๋ก ๋ด๊ธฐ๋ฉด์, ์ฝ๋๋ฅผ ์คํํจ.
// ๊ฐ์ ์ด๋ฏธ ๋ฝ์์ ๋ณ์์ ๋ด์ ์ ๊ณต๋๋ ํ์์ด๋ผ, ๋ฐฐ์ด์ ๋ค์ ๊ฐ์ ๋ณ๊ฒฝํ๋ ์ฉ๋๋ก๋ ๋ถ๊ฐ๋ฅ
// ๋จ์ง, ๋ฐฐ์ด์ ๊ฐ์ ์ถ๋ ฅํด์ฃผ๋ ์ฉ๋๋ก๋ง ์ฌ์ฉํจ.
System.out.print(s+" ");
}
System.out.println();
System.out.println("-----------------------------------------");
// [๋ฐฉ๋ฒ2]
// ๋ถ๋ฆฌ๋ ๊ฐ๊ฐ์ ๋ฌธ์์ด๋ค์ "ํ ํฐ"์ด๋ผ๋ ๋จ์๋ก ์ทจ๊ธํ๋ ๋ฐฉ๋ฒ
// ์ฌ๊ธฐ์ ํ ํฐ์ด๋? ๋จ์ด์ ํ ๋ญํ
์ด๋ฅผ ๋งํ๋ ๊ฒ์.
// 1. StringTokenizer ํด๋์ค ํ์ฉ(java.util.StringTokenizer)
// [ํํ๋ฒ]
// StringTokenizer ๊ฐ์ฒด๋ช
= new StringTokenizer(๋ถ๋ฆฌ์ํค๊ณ ์ ํ๋ ๋ฌธ์์ด, ๊ตฌ๋ถ์);
StringTokenizer stn = new StringTokenizer(str, ",");
// 2. countTokens();
// ๋ถ๋ฆฌ๋์ด ์กด์ฌํ๋ ๋ฌธ์์ด์ ๋ญํฑ์ด ๊ฐ์๋ฅผ ๋ฐํํด์ค.
System.out.print("๋ถ๋ฆฌ๋ ๋ฌธ์์ด์ ๊ฐ์ : "+stn.countTokens() + "๊ฐ"); // 6๊ฐ
// 3. nextToken();
// Java, Oracle, JDBC, HTML, Server, Spring
// ์ชผ๊ฐ์ง ๋จ์ด๋ฅผ ์์ฐจ์ ์ผ๋ก ๋ฐํํด์ค.
// System.out.println();
System.out.println(stn.nextToken()); // Java
System.out.println(stn.nextToken()); // Oracle
System.out.println(stn.nextToken()); // JDBC
System.out.println(stn.nextToken()); // HTML
System.out.println(stn.nextToken()); // Server
System.out.println(stn.nextToken()); // Spring
System.out.println(stn.nextToken());
// [์ค๋ฅ๋ฉ์ธ์ง]
// java.util.NoSuchElementException
// ํ์ฌ ๋จ์์๋ ๊ฐ์ฒด๋ก๋ถํฐ, ํ ํฐ ๊ฐ์์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด ๋ฐ์ํ๋ ์ค๋ฅ์.
System.out.println();
System.out.println("ํ์ฌ ๋ด๊ฒจ์๋ ํ ํฐ์ ๊ฐ์ : "+stn.countTokens() + "๊ฐ"); // 0๊ฐ
// nextToken์ผ๋ก ๋ฝ์๋ด๋ฉด, ํ์ฌ์ ํ ํฐ ๊ฐ์๊ฐ ๊ฐ์ํจ
// ํ ํฐ์ด ์ถ๋ ฅ๋ ์๋ก countTokens()์ ๊ฒฐ๊ณผ๊ฐ์ด -1์ฉ ๋์,
// ๋ฏธ๋ฆฌ ๋ณ์์ ๋ด์๋๊ณ , ์ด๋ฅผ ์กฐ๊ฑด์์ ์ฌ์ฉํ์ฌ ๋ฐ๋ณต์ ์์ํด์ผ ํจ.
int end = stn.countTokens();
for(int i=0; i<end; i++) {
System.out.print(stn.nextToken()+" ");
}
// ๋์ด์ ๋ฝ์๋ผ ํ ํฐ์ด ์๋?๋ผ๋ ์กฐ๊ฑด์ ์ ์ํ๋ฉด while๋ฌธ ์ฌ์ฉ ๊ฐ๋ฅ
// StingTokenizerํด๋์ค์์ ์ ๊ณตํ๋ hasMoreTokens()๋ฉ์๋๋ฅผ ์ฌ์ฉ
// => StringTokenizer ๊ฐ์ฒด๋ก๋ถํฐ ๋ฝ์๋ผ ํ ํฐ์ด ์๋ ๊ฒฝ์ฐ์ true๋ฅผ ๋ฐํ
while(stn.hasMoreTokens()) { // true๋ฉด ์ถ๋ ฅ๋ฌธ์
System.out.print(stn.nextToken()+" ");
} // false๋ฉด ๋ฒ์ด๋จ.
}
}
Wrapper ํด๋์ค
* ์๋ฃํ => ๊ธฐ๋ณธ์๋ฃํ(8๊ฐ์ง), ์ฐธ์กฐ์๋ฃํ(1๊ฐ์ง) * ๊ธฐ๋ณธ์๋ฃํ์ Stack์ ์ค์ ๊ฐ์ ๋ฐ๋ก ๋ด์์์. * ๊ธฐ๋ณธ์๋ฃํ์ .๋ฉ์๋() ํธ์ถ์ด ๋ถ๊ฐํจ. * * ์ฐธ์กฐ์๋ฃํ์ Stack์ ์ฃผ์๊ฐ, Heap์ ์ค์ ๊ฐ์ ๋ด์์์. * ์ฐธ์กฐ์๋ฃํ์ .๋ฉ์๋() ํธ์ถ์ด ๊ฐ๋ฅํ์. * * Wrapperํด๋์ค * ๊ธฐ๋ณธ์๋ฃํ์ ๊ฐ์ฒดํ์์ผ๋ก ํฌ์ฅํด์ฃผ๋ ํด๋์ค๋ฅผ Wrapperํด๋์ค๋ผ๊ณ ํจ. * * ๊ธฐ๋ณธ์๋ฃํ <-------> Wrapperํด๋์ค * boolean Boolean * char Character * byte Byte * short Short * int Integer * long Long * float Float * double Double * * => ๊ธฐ๋ณธ์๋ฃํ์ Wrapperํด๋์ค ํํ๋ก ๋ฐ๊พธ์ด์ฃผ๋ ์์ ์ Boxing์ด๋ผ๊ณ ํจ. * => Wrapperํด๋์ค๋ฅผ ๊ธฐ๋ณธ์๋ฃํ์ผ๋ก ๋ฐ๊พธ์ด์ฃผ๋ ์์ ์ UnBoxing์ด๋ผ๊ณ ํจ.
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(Java - API), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@kojam9041/Java-API์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ ๋ฐ๊ฒฌ์ ์ ๋
(Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค