๐ Today I Learned(๊ฐ๋ฐ์ธ์ดํ์ต)
[JAVA] ๋ฌธ์์ด ์๋ฅด๊ธฐ · ๋ถ๋ฆฌ( substring() · split() )
T1) ๋ฌธ์์ด ์๋ฅด๊ธฐ ๋ฌธ์์ด์์ ํน์ ๋ถ๋ถ์ ๋ฌธ์์ด์ ์ถ์ถํ๊ณ ์ถ๋ค๋ฉด substring() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค. substring() ๋ฉ์๋์์๋ ๋น์ฐํ ๊ณต๋ฐฑ๋ ํฌํจํ๋ค. substring(์์์ง์ ) = ์์์ง์ ๋ถํฐ ๋๊น์ง ๋ฐํ substring(์์์ง์ , ๋์ง์ ) = ์์์ง์ ๋ถํฐ ๋์ง์ -1 ์์น๊น์ง ๋ฐํ public class StringVarTest { public static void main(String[] args) { String str = " ๋ฌธ์๋ฌธ์ง๋ฐฉ๋ฌธ"; System.out.println(str.substring(1));//๋ฌธ์๋ฌธ์ง๋ฐฉ๋ฌธ System.out.println(str.substring(1, 3));//๋ฌธ์ } } T2) ๋ฌธ์์ด ๋ถ๋ฆฌ ๋ฌธ์์ด์์ ํน์ ๋ฌธ์(๊ตฌ๋ถ์)๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด..
[JAVA] ๋ฌธ์์ด ๊ธธ์ด · ๋ฌธ์์ด ๋์ฒด
T1) ๋ฌธ์์ด ๊ธธ์ด ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ์๊ณ ์ถ๋ค๋ฉด length() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค. ๋ฌธ์์ด์ ๊ธธ์ด๋ ๊ณต๋ฐฑ์ ํฌํจํ๋ค. public class StringVarTest { public static void main(String[] args) { String str = ""; String str1 = "๋ฌธ์์ด"; String str2 = "๋ฌธ ์ ์ด"; System.out.println(str.length()); // 0 System.out.println(str1.length()); // 3 System.out.println(str2.length()); // 5 } } T2) ๋ฌธ์์ด ๋์ฒด ๋ฌธ์์ด ์ผ๋ถ๋ถ์ ๋ค๋ฅธ ๋ฌธ์์ด๋ก ๋์ฒดํ๊ณ ์ถ์ผ๋ฉด replace() · replaceAll() · replaceFirst()..
[JAVA] ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ์์ญ
T1) java ๋ช ๋ น์ด๋ก JVM์ด ๊ตฌ๋๋๋ค๋ฉด JVM์ ์ด์์ฒด์ ์์ ํ ๋น๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ(Runtime Data Area)์ ์ด๋ป๊ฒ ๊ตฌ๋ถํด์ ์ฌ์ฉํ ๊น? ๋ฉ์๋ ์์ญ(Method) : ๋ฐ์ดํธ์ฝ๋ ํ์ผ์ ์ฝ์ ๋ด์ฉ์ด ์ ์ฅ๋๋ ์์ญ์ด๋ค. ํด๋์ค๋ณ๋ก ์์, ์ ์ ํ๋, ๋ฉ์๋ ์ฝ๋, ์์ฑ์ ์ฝ๋ ๋ฑ์ด ์ ์ฅ๋๋ค. ํ ์์ญ(Heap) : ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ ์์ญ์ด๋ค. ๊ฐ์ฒด์ ๋ฒ์ง(์ฃผ์)๋ ๋ฉ์๋ ์์ญ๊ณผ ์คํ ์์ญ์ ์์์ ๋ณ์์์ ์ฐธ์กฐํ ์ ์๋ค. ์คํ ์์ญ(Stack) : ๋ฉ์๋๋ฅผ ํธ์ถํ ๋๋ง๋ค ์์ฑ๋๋ ํ๋ ์(Frame)์ด ์ ์ฅ๋๋ ์์ญ์ด๋ค. ๋ฉ์๋ ํธ์ถ์ด ๋๋๋ฉด ํ๋ ์์ ์๋ ์ ๊ฑฐ๋๋ค. ํ๋ ์ ๋ด๋ถ์๋ ๋ก์ปฌ ๋ณ์ ์คํ์ด ์๋ค. ํ๋ ์ ๋ด๋ถ์์ ๊ธฐ๋ณธ ํ์ ๋ณ์์ ์ฐธ์กฐ ํ์ ๋ณ์๊ฐ ์์ฑ๋๊ณ ์ ๊ฑฐ๋๋ค. ๊ฒฐ๋ก : ==, ..
[JAVA] ๋ฐ์ดํฐ ํ์ ๋ถ๋ฅ
๋ฐ์ดํฐ ํ์ (Data Type) ๊ธฐ๋ณธ ํ์ (primitive type) ์ ์ ํ์ byte char short int long ์ค์ ํ์ float double ๋ ผ๋ฆฌํ์ boolean ์ฐธ์กฐ ํ์ (reference type) ๋ฐฐ์ด ํ์ ์ด๊ฑฐํ์ ํด๋์ค ์ธํฐํ์ด์ค ๊ธฐ๋ณธ ํ์ ์ผ๋ก ์ ์ธ๋ ๋ณ์๋ ๊ฐ ์์ฒด๋ฅผ ์ ์ฅํ๊ณ , ์ฐธ์กฐ ํ์ ์ผ๋ก ์ ์ธ๋ ๋ณ์๋ *๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋ฉ๋ชจ๋ฆฌ ๋ฒ์ง๋ฅผ ์ ์ฅํ๋ค. ๊ธฐ๋ณธ ํ์ ๋ณ์ ( ๊ฐ ) ์ฐธ์กฐ ํ์ ๋ณ์ ( ๋ฉ๋ชจ๋ฆฌ ๋ฒ์ง ) → ( ๋ฉ๋ชจ๋ฆฌ ๋ฒ์ง) ๊ฐ์ฒด ๋ณ์๋ค์ ์คํ(stack)์ด๋ผ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์์ฑ์ด ๋๋ค. ์คํ์ ์ ์ฅ๋ ๋ณ์๋ค ์ค ๊ธฐ๋ณธํ์ ๋ณ์๋ค์ ์ง์ ๊ฐ์ ๋ค๊ณ ์์ง๋ง, ์ฐธ์กฐ ํ์ ๋ณ์๋ค์ ์ฐธ์กฐํ ๋ฐ์ดํฐ์ ๋ฒ์ง(์ฃผ์)๊ฐ์ ์ ์ฅํ๊ณ ๊ทธ ์ฃผ์๋ฅผ ํตํด ํ(heap) ์์ญ์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ค..
[JAVA] Switch Expressions (Java 12์ดํ)
Switch & Switch Expressions ์ฌ์ฉ์์ public class SwitchValueExample { public static void main(String[] args) { String grade = "B"; //Java 11 ์ด์ ๋ฌธ๋ฒ int score1 = 0; switch(grade) { case "A": score1 = 100; break; case "B": int result = 100 - 20; score1 = result; break; default: score1 = 60; } System.out.println("score1: " + score1); //Java 12๋ถํฐ ๊ฐ๋ฅ int score2 = switch(grade) { case "A" -> 100; case "B"..
[JAVA] NaN๊ณผ Infinity
NaN ๊ณผ Infinity ๋ฐ์ ๊ฒฝ์ฐ ๋๋์ ๋๋ ๋๋จธ์ง ์ฐ์ฐ ์ ์ข์ธก ํผ์ฐ์ฐ์๊ฐ ์ ์์ด๊ณ ์ฐ์ธก ํผ์ฐ์ฐ์๊ฐ 0์ผ ๊ฒฝ์ฐ ์์ธ(ArithmeticException)๊ฐ ๋ฐ์ํ๋ค. ๋ฌดํ๋์ ๊ฐ์ ์ ์๋ก ํํํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. (ex int result = 5 / 0) ์ข์ธก ํผ์ฐ์ฐ์๊ฐ ์ค์ ์ด๊ฑฐ๋ ์ฐ์ธก ํผ์ฐ์ฐ์๊ฐ 0.0๋๋ 0,0f์ด๋ฉด ์์ธ๊ฐ ๋ฐ์ํ์ง ์๊ณ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ Infinity ๋๋ NaN(Not a Number)์ด ๋๋ค. ์ด ๊ฒฝ์ฐ ์ด๋ค ์ฐ์ฐ์ ํ๋๋ผ๋ ๊ฒฐ๊ณผ๋ ๊ณ์ ๊ฐ์ ๊ฒ์ด๊ธฐ๋๋ฌธ์ ๋ฐ์ดํฐ๊ฐ ์๋ง์ด ๋ ์์์ผ๋ฏ๋ก ๊ณ์ํด์ ์ฐ์ฐ์ ์ํํด์๋ ์๋๋ค. (ex Infinity + 2 → Infinity, NaN + 2 → NaN) ๋ฏธ๋ฆฌ ๋ฐฉ์งํ๋ ๋ฐฉ๋ฒ Double.isInfinite() ์ Double.in..
[JAVA] ๋ฌธ์์ด ๋ฐ๋ณต ( String.repeat()ํ์ฉ )
๋ฌธ์์ด์ ๋ฐ๋ณตํด์ ์ถ๋ ฅํ๊ธฐ for๋ฌธ ํ์ฉ class Solution { public String solution(String my_string, int k) { String answer = ""; for(int i=0; i
[JAVA] ๋ฌธ์ ๋ฆฌ์คํธ๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ๊ธฐ
๋ฌธ์์ด ๋ฐฐ์ด์ ํธํ๊ฒ ์ด์ด๋ถ์ด๊ธฐ์ํด์ ์ฌ์ฉํ ์ ์๋๊ฒ์ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค. foreach๋ฌธ ํ์ฉ(java1.5 ๋ถํฐ ์ฌ์ฉ๊ฐ๋ฅ) class Solution { public String solution(String[] arr) { String answer = ""; for(String word : arr){ answer += word; } return answer; } } String.join() ๋ฉ์๋ ํ์ฉ(java8 ๋ถํฐ ์ฌ์ฉ๊ฐ๋ฅ) class Solution { public String solution(String[] arr) { return String.join("", arr); } } String.join()์ ์ฌ๋ฌ ๊ฐ์ String์ ์ด์ด๋ถ์ฌ์ ํ๋์ String์ผ๋ก ๋ง๋ค์ด์ฃผ๋ ๋ฉ์๋์ด๋ค. ํ์ฉ..