πjava.lang Package
μλ°μμ κ°μ₯ κΈ°λ³Έμ μΈ ν¨ν€μ§λ‘, λͺ¨λ μλ° νλ‘κ·Έλ¨μ μλμΌλ‘ ν¬ν¨λλ ν¨ν€μ§μ. ν΄λμ€λ₯Ό μμ±ν λ ν΄λμ€ μμμ λͺ
μνμ§ μμλ€λ©΄ ν΄λμ€λ μμμ μΌλ‘ java.lang.Objet ν΄λμ€λ₯Ό μμνκ² λ¨. μ¦, μλ°μ λͺ¨λ ν΄λμ€λ Object ν΄λμ€μ μμμ΄κ±°λ μμ ν΄λμ€μ. Object ν΄λμ€λ μλ°μ μ΅μμ λΆλͺ¨ ν΄λμ€μ ν΄λΉλ¨.
πObject Class
π§κ°μ²΄ λΉκ΅ (equals())
λ κ°μ²΄κ° λμΌν κ°μ²΄λΌλ©΄ trueλ₯Ό 리ν΄νκ³ κ·Έλ μ§ μλ€λ©΄ falseλ₯Ό 리ν΄ν¨.
public boolean equals(Objet obj) { ``` }
πObject.equals() vs String.equals()
μ©λ μ°¨μ΄ : Object.equals()λ νΌλΉκ΅λμμμΈ λ κ°μ²΄κ° λ°μ΄ν°κ° λμΌνλ€λ κ²μ μλ―Έν¨ // String.equals()λ λ¬Έμμ΄μ΄ λμΌνμ§ μ‘°μ¬ν΄μ κ°λ€λ©΄ trueλ₯Ό 리ν΄νκ³ , κ·Έλ μ§ μλ€λ©΄ falseλ₯Ό 리ν΄ν¨.
κ°λ₯ν μ΄μ : String.equals()λ Object.equals()λ₯Ό μ€λ²λΌμ΄λνμ¬ μ μνκΈ° λλ¬Έμ.
π§κ°μ²΄ ν΄μμ½λ(hashCode())
κ°μ²΄λ₯Ό μλ³ν νλμ μ μκ°μ λ§ν¨. Object.hashCode()λ κ°μ²΄μ λ©λͺ¨λ¦¬ λ²μ§λ₯Ό μ΄μ©ν΄μ ν΄μμ½λλ₯Ό λ§λ€μ΄ 리ν΄νκΈ° λλ¬Έμ κ°μ²΄λ§λ€ λ€λ₯Έ κ°μ κ°μ§κ³ μμ.
μ¦, ν΄μμ½λ κ°μ΄ λ€λ₯΄λ©΄ λ€λ₯Έ κ°μ²΄λ‘ νλ¨νκ³ ν΄μμ½λ κ°μ΄ κ°μΌλ©΄ equals() λ©μλλ‘ λ€μ λΉκ΅ν¨.
π§κ°μ²΄ λ¬Έμ μ 보 (toString())
Object ν΄λμ€μ toString() λ©μλλ κ°μ²΄ λ¬Έμ μ 보λ₯Ό 리ν΄ν¨. κ°μ²΄ λ¬Έμ μ 보λ κ°μ²΄λ₯Ό λ¬Έμμ΄λ‘ ννν κ°μ λ§ν¨.
κΈ°λ³Έμ μΌλ‘ Object ν΄λμ€μ toString() λ©μλλ "ν΄λμ€λͺ
@16μ§μν΄μμ½λ"λ‘ κ΅¬μ±λ λ¬Έμμ 보λ₯Ό 리ν΄ν¨.
λ³΄ν΅ μ€λ²λΌμ΄λ νμ¬ μ¬μ©ν¨ + Lombokμ @ToString μ¬μ©
π§κ°μ²΄ 볡μ (clone())
μλ³Έ κ°μ²΄μ νλ κ°κ³Ό λμΌν κ°μ κ°μ§λ μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νλ κ²μ λ§ν¨. κ°μ²΄λ₯Ό 볡μ νλ μ΄μ λ μλ³Έ κ°μ²΄λ₯Ό μμ νκ² λ³΄νΈνκΈ° μν΄μμ. μ λ’°νμ§ μλ μμμΌλ‘ μλ³Έ κ°μ²΄λ₯Ό λ겨 μμ
ν κ²½μ° μλ³Έ κ°μ²΄μ λ°μ΄ν°κ° νΌμλ μ μκΈ° λλ¬Έμ. κ°μ²΄ 볡μ λ μμ 볡μ μ κΉμ 볡μ κ° μμ.
π§μμ 볡μ (thin clone)
λ¨μν νλκ°μ 볡μ¬ν΄μ μλ‘μ΄ κ°μ²΄λ₯Ό λ§λλ κ² μ¦, νλκ°μ΄ κΈ°λ³Έ νμ
μΌ κ²½μ° κ° λ³΅μ¬κ° μΌμ΄λκ³ , νλκ°μ΄ μ°Έμ‘° νμ
μΌ κ²½μ°μλ κ°μ²΄μ λ²μ§κ° 볡μ¬λ¨. νλκ°μ΄ λ°°μ΄ νμ
μΈ κ²½μ°μλ μλ‘μ΄ κ°μ²΄μ μλ³Έ κ°μ²΄κ° κ°μ λ°°μ΄ κ°μ²΄λ₯Ό μ°Έμ‘°ν¨.
clone() λ©μλλ₯Ό μ¬μ©νκΈ° μν΄μλ μλ³Έ κ°μ²΄μμ java.lang.Cloneable μΈν°νμ΄μ€λ₯Ό ꡬνν΄μΌν¨. μ¦, ν΄λμ€ μ€κ³μκ° Cloneable μΈν°νμ΄μ€λ₯Ό ꡬννμ§ μμΌλ©΄ 볡μ λ₯Ό νμ©νμ§ μλ λ€λ μλ―Έμ. λ§μ½ Clonealbe μΈν°νμ΄μ€κ° ꡬν μλ κ°μ²΄λ₯Ό 볡μ¬νλ €κ³ νλ©΄ CloneNotSupportedException μμΈκ° λ°μνμ¬ λ³΅μ κ° μ€ν¨ν¨. λ°λΌμ μμΈμ²λ¦¬ νμν¨.
π§κΉμ 볡μ (deep clone)
μ°Έμ‘°νκ³ μλ κ°μ²΄λ 볡μ νλ κ², μμ 볡μ μ λ§μ°¬κ°μ§λ‘ Object.clone() λ©μλλ₯Ό μ€λ²λΌμ΄λ νμ¬ μ°Έμ‘° κ°μ²΄λ₯Ό 볡μ νλ μ½λλ₯Ό μ§μ μμ±ν΄μΌν¨.
λ€μκ³Ό κ°μ λ°©λ²μ κ°μ§.
1. clone() μ¬μ μ
class Address implements Cloneable {
String city;
String street;
public Address(String city, String street) {
this.city = city;
this.street = street;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
class Person implements Cloneable {
String name;
Address address;
public Person(String name, Address address) {
this.name = name;
this.address = address;
}
@Override
protected Object clone() throws CloneNotSupportedException {
Person cloned = (Person) super.clone();
cloned.address = (Address) address.clone();
return cloned;
}
}
public class Main {
public static void main(String[] args) throws CloneNotSupportedException {
Address address = new Address("Seoul", "Gangnam");
Person person1 = new Person("John", address);
Person person2 = (Person) person1.clone();
person2.address.city = "Busan";
System.out.println(person1.address.city);
System.out.println(person2.address.city);
}
}
2. μ§λ ¬ν(Serialization) νμ©
import java.io.*;
class Address implements Serializable {
String city;
String street;
public Address(String city, String street) {
this.city = city;
this.street = street;
}
}
class Person implements Serializable {
String name;
Address address;
public Person(String name, Address address) {
this.name = name;
this.address = address;
}
public Person deepCopy() throws IOException, ClassNotFoundException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(this);
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bis);
return (Person) ois.readObject();
}
}
public class Main {
public static void main(String[] args) throws IOException, ClassNotFoundException {
Address address = new Address("Seoul", "Gangnam");
Person person1 = new Person("John", address);
Person person2 = person1.deepCopy();
person2.address.city = "Busan";
System.out.println(person1.address.city);
System.out.println(person2.address.city);
}
}
3. μλμΌλ‘ 볡μ ꡬν.
class Address {
String city;
String street;
public Address(String city, String street) {
this.city = city;
this.street = street;
}
public Address deepCopy() {
return new Address(this.city, this.street);
}
}
class Person {
String name;
Address address;
public Person(String name, Address address) {
this.name = name;
this.address = address;
}
public Person deepCopy() {
return new Person(this.name, this.address.deepCopy());
}
}
public class Main {
public static void main(String[] args) {
Address address = new Address("Seoul", "Gangnam");
Person person1 = new Person("John", address);
Person person2 = person1.deepCopy();
person2.address.city = "Busan";
System.out.println(person1.address.city);
System.out.println(person2.address.city);
}
}
πSystem ν΄λμ€
μλ°λ μ΄μ체μ μμμ λ°λ‘ μ€νλλ κ²μ΄ μλ JVM μμμ μ€νλ¨ λ°λΌμ μ΄μ체μ μ λͺ¨λ κΈ°λ₯μ μλ° μ½λλ‘ μ§μ μ κ·ΌνκΈ°λ μ΄λ €μ. BUT μ΄μ체μ κΈ°λ₯ μ¬μ©νκ³ μΆλ€λ©΄ μ΄λ μ¬μ©νλ κ²μ΄ java.lang.System ν΄λμ€μ.
System ν΄λμ€μ λͺ¨λ λ³μμ λ©μλλ μ μ νλμ μ μ λ©μλλ‘ κ΅¬μ±λμ΄ μμ.
π§νμ¬ μκ° μ½κΈ°(currentTimeMillis(), nanoTime())
System ν΄λμ€μ currentTimeMillis() λ©μλ(λ°λ¦¬μΈμ»¨λ λ¨μ)μ nanoTime() λ©μλ(λλ
ΈμΈμ»¨λ λ¨μ)λ μ΄μ체μ μ μκ³λ‘λΆν° νμ¬ μκ°μ μ½μ΄μ longκ°μΌλ‘ 리ν΄ν¨.
long time = System.out.currentTimeMillis();
long time2 = System.out.nanoTime();
λ¦¬ν΄ κ°μ μ£Όλ‘ νλ‘κ·Έλ¨μ μ€ν μμ μκ° μΈ‘μ μ μ¬μ©λ¨. μ¦, νλ‘κ·Έλ¨ μμμμ μκ°μ μ½κ³ νλ‘κ·Έλ¨μ΄ λλ λ μκ°μ μ½μ΄μ μ°¨μ΄λ₯Ό ꡬνλ©΄ νλ‘κ·Έλ¨ μ€ν μμ μκ°μ΄ λμ΄.
import java.io.*;
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
long time1 = System.nanoTime();
int sum = 0;
for (int i = 0; i < 100000; i++) {
sum += i;
}
System.out.println("10000000κΉμ§μ ν©μ : " + sum);
long time2 = System.nanoTime();
System.out.println("νλ‘κ·Έλ¨ μ€νλ μκ° : " + (time2 - time1) * 1e-9);
}
}
π§μμ€ν
νλ‘νΌν° μ½κΈ°(getProperty())
JVMμ΄ μμν λ μλ μ€μ λλ μμ€ν
μ μμ±κ°μ λ§ν¨. Java νλ‘κ·Έλ¨ μ€νμν¨ μ¬μ©μ μμ΄λ, JVMμ λ²μ , μ΄μ체μ μμ μ¬μ©νλ νμΌ κ²½λ‘ κ΅¬λΆμ λ± ..
public class Main {
public static void main(String[] args) {
String osName = System.getProperty("os.name");
System.out.println("Operating System: " + osName);
String userDir = System.getProperty("user.dir");
System.out.println("User Directory: " + userDir);
String javaVersion = System.getProperty("java.version");
System.out.println("Java Version: " + javaVersion);
}
}

πClass ν΄λμ€
μλ°λ ν΄λμ€μ μΈν°νμ΄μ€μ λ©ν λ°μ΄ν°λ₯Ό java.lang ν¨ν€μ§μ μμλ Class ν΄λμ€λ‘ κ΄λ¦¬ν¨.
λ©ν λ°μ΄ν° : ν΄λμ€μ μ΄λ¦, μμ±μ μ 보, νλ μ 보, λ©μλ μ 보λ₯Ό λ§ν¨.
π§Class κ°μ²΄ μ»κΈ°(getClass(), forName())
νλ‘κ·Έλ¨μμ Class κ°μ²΄λ₯Ό μ»κΈ°μν΄μλ Object ν΄λμ€κ° κ°κ³ μλ getClass() λ©μλλ₯Ό μ¬μ©νλ©΄ λ¨.
getClass()λ ν΄λΉ ν΄λμ€λ‘ κ°μ²΄λ₯Ό μμ±νμ λλ§ μ¬μ©ν μ μμ.
Class clasz = obj.getClass();
Classλ μμ±μλ₯Ό κ°μΆκ³ μκΈ° λλ¬Έμ new μ°μ°μλ‘ κ°μ²΄λ₯Ό λ§λ€ μ μκ³ , μ μ λ©μλμΈ forName()μ μ΄μ©νλ©΄ κ°μ²΄ λ§λ€μ§ μκ³ λ°λ‘ κ°μ²΄ κ°μ Έμ¬ μ μμ. μ¦, forName() λ©μλλ ν΄λμ€μ 체 μ΄λ¦μ λ§€κ°κ°μΌλ‘ λ°κ³ κ°μ²΄λ₯Ό 리ν΄ν¨.
try{
Class clazz = Class.forName(String className);
}
catch (ClassNotFoundException e){}
π§λ¦¬νλ μ
(getDeclaredConstructors(), getDeclaredFields(), getDeclaredMethods())
리νλ μ
: Java νλ‘κ·Έλλ°μμ λ°νμ μμ μ νλ‘κ·Έλ¨μ ꡬ쑰(Class, Method, Field λ±)λ₯Ό λΆμνκ³ μ‘°μν μ μλ κΈ°λ₯
π§λμ κ°μ²΄ μμ±(newInstance())
Class κ°μ²΄λ₯Ό νμ©(Class.forName())νμ¬ new μ°μ°μ μ¬μ©νμ§ μμλ λμ μΌλ‘ κ°μ²΄λ₯Ό μμ± ν μ μμ. μ΄ λ°©λ²μ μ½λ μμ± μμ ν΄λμ€ μ΄λ¦μ κ²°μ ν μ μμ.
newInstance() λ©μλλ κΈ°λ³Έ μμ±μλ₯Ό νΈμΆν΄μ κ°μ²΄λ₯Ό μμ±νκΈ° λλ¬Έμ λ°λμ ν΄λμ€μ κΈ°λ³Έ μμ±μκ° μ‘΄μ¬ν΄μΌν¨.
newInstance() λ©μλμ λ¦¬ν΄ νμ
μ ObjectμμΌλ‘ μ΄κ²μ μλ ν΄λμ€ νμ
μΌλ‘ λ³νν΄μΌλ§ λ©μλλ₯Ό μ¬μ©ν μ μμ.
μμ
Class clasz = Class.forName("ν΄λμ€ μ΄λ¦ μ½μ
");
Action action = (Action) clasz.newInstance();
action.execute();
πString ν΄λμ€
String λ©μλ
1. char charAt(int index)
λ§€κ°λ³μμ μ£Όμ΄μ§ μΈλ±μ€μ λ¬Έμμ΄μ 리ν΄ν¨.
public class Main {
public static void main(String[] args) {
String str = "Hello";
char ch = str.charAt(1);
System.out.println(ch);
}
}
2. boolean equals(Object anObject)
μλ°λ λ¬Έμμ΄ λ¦¬ν°λ΄μ΄ λμΌνλ€λ©΄ λμΌν String κ°μ²΄λ₯Ό μ°Έμ‘°νλλ‘ λμ΄μμ. λ°λΌμ λ¬Έμλ₯Ό λΉκ΅ν λλ == μ°μ°μλ₯Ό μ¬μ©νλ©΄ μμΉ μμ κ²°κ³Όκ° λμ¬ μ μμ.
리ν°λ΄ : μμ€μ½λμ μν΄ μ ν΄μ§ κ³ μ λ κ°
new μ°μ°μ μ¬μ©ν΄μ λ¬Έμμ΄ λ¦¬ν°λ΄ λ§λ€μμ λ vs κ·Έλ₯ μ μΈκ³Ό λμμ λ¬Έμμ΄ λ¦¬ν°λ΄ λ§λ€μμ λ
String strvar1 ="μν₯λ―Ό";
String strvar2 = new String("μν₯λ―Ό");
if(strvar1 != strvar2)
System.out.println("λμ λ€λ₯Έ κ°μ²΄λ₯Ό μ°Έμ‘°ν©λλ€");
λ°λΌμ λ String κ°μ²΄μ λ¬Έμμ΄ λ§μ λΉκ΅νκ³ μΆλ€λ©΄ ==μ°μ°μ λμ μ equals() λ©μλλ₯Ό μ¬μ©ν΄μΌ ν¨.
String strvar1 ="μν₯λ―Ό";
String strvar2 = new String("μν₯λ―Ό");
if(strvar1.equals(strvar2))
System.out.println("μν₯λ―Ό!!!");
3. byte[] getByte[];
4. int indexOf(String str)
indexOf() λ©μλλ μ£Όμ΄μ§ λ¬Έμμ΄μ΄ μμλλ μΈλ±μ€λ₯Ό 리ν΄ν¨.λ§μ½ μ£Όμ΄μ§ λ¬Έμμ΄μ΄ ν¬ν¨λμ΄ μμ§ μμΌλ©΄ -1(intν νμ
)μ 리ν΄ν¨
public class Main {
public static void main(String[] args) {
String str = "Hello World";
int index = str.indexOf("World");
System.out.println(index);
}
}
5. int length()
length() λ©μλλ λ¬Έμμ΄μ κΈΈμ΄(곡백 ν¬ν¨ν λ¬Έμμ μ)λ₯Ό 리ν΄ν¨.
public class Main {
public static void main(String[] args) {
String str = "Hello";
int len = str.length();
System.out.println(len);
}
}
6. replace(CharSequence target, CharSequence replacement)
replace()λ©μλλ 첫 λ²μ§Έ λ§€κ°κ°μΈ λ¬Έμμ΄μ μ°Ύμ λ λ²μ§Έ λ§€κ°κ°μΈ λ¬Έμμ΄λ‘ λμΉν μλ‘μ΄ λ¬Έμμ΄μ μμ±νκ³ λ¦¬ν΄ν¨.
String oldStr = "μλ° νλ‘κ·Έλλ°";
String newStr = oldStr.replace("μλ°", "JAVA");
7. toLowerCase() & toUpperCase()
toLowerCase() λ©μλλ λ¬Έμμ΄μ λͺ¨λ μλ¬Έμλ‘ λ°κΎΌ μλ‘μ΄ λ¬Έμμ΄μ μμ±ν ν 리ν΄ν¨.
toUpperCase() λ©μλλ λ¬Έμμ΄μ λͺ¨λ λλ¬Έμλ‘ λ°κΎΌ μλ‘μ΄ λ¬Έμμ΄μ μμ±ν ν 리ν΄ν¨.
String original = "Java Programming";
String lowercase = original.toLowerCase();
String uppercase = original.toUpperCase();
8. trim() & strip()
trim() λ©μλλ λ¬Έμμ΄μ μλ€ κ³΅λ°±μ μ κ±°ν μλ‘μ΄ λ¬Έμμ΄μ μμ±νκ³ λ¦¬ν΄ν¨. μ€κ° 곡백μ μ κ±°νμ§ μμ. μ€κ° 곡백 μ κ±° μν μμ λ¬Έμμ΄ λΆν νλ€ μ€κ° 곡백 μ κ±°ν κ²!. ASCII κ³΅λ°±λ§ μ²λ¦¬ν¨, μ λμ½λ 곡백μ λ¨μ
String oldStr = " java programming ":
String newstr = oldStr.trim();
strip() λ©μλλ λ¬Έμμ΄ μμͺ½μ μλ 곡백 λ¬Έμλ₯Ό μ κ±°ν¨. trim()κ³Ό λ€λ₯Έμ μ μ λμ½λ 곡백μ μ²λ¦¬ν μ μλ κΈ°λ₯μ μ 곡ν¨.
κΈ°λ³Έ μ¬μ©λ² :
String result = λ¬Έμμ΄.strip();
μ κ³΅λ°±λ§ μ κ±° (stripLeading()) / λ€ κ³΅λ°±λ§ μ κ±°(stripTrailing())
String text = " μμͺ½ 곡백 μ κ±°";
String result = text.stripLeading();
System.out.println(result);
String text = "λ€μͺ½ 곡백 μ κ±° ";
String result = text.stripTrailing();
System.out.println(result);
9. valueOf()
κΈ°λ³Έ νμ
μ κ°μ λ¬Έμμ΄λ‘ λ³ννλ κΈ°λ₯μ κ°κ³ μμ. String ν΄λμ€μλ λ§€κ° λ³μμ νμ
λ³λ‘ valueOf() λ©μλκ° μ€λ²λΌμ΄λ© λμ΄μμ.
String str1 = String.valueOf(10);
πWrapper ν΄λμ€
μλ°λ κΈ°λ³Έ νμ
(byte, int ,char, long, float, double, boolean)μ κ°μ κ°λ κ°μ²΄λ₯Ό μμ±ν μ μμ. μ΄λ° κ°μ²΄λ₯Ό Wrapper κ°μ²΄λΌκ³ ν¨. μ§κ΄μ μΌλ‘ μκ°νλ©΄ κΈ°λ³Έ νμ
μ κ°μ μμ λκ³ ν¬μ₯νλ€κ³ μκ°νλ©΄ λ¨. κΈ°λ³Έ νμ
κ°μ μΈλΆμμ λ³κ²½ν μ μμ.
λ¬Έμμ΄μ κΈ°λ³Έ νμ
κ°μΌλ‘ λ³νν λ λ§μ΄ μ¬μ©ν¨.
Wrapper ν΄λμ€λ "parse+κΈ°λ³Ένμ
"λͺ
μΌλ‘ λμ΄μλ μ μ λ©μλκ° μμ.
int num = Integer.parseInt("1000");
Boxing : κΈ°λ³Έ νμ
μ κ°μ ν¬μ₯ κ°μ²΄λ‘ λ§λλ κ³Όμ
1. μμ±μ μ΄μ©
Byte obj = new Byte(10);
Byte obj = new Byte("10");
Integer obj = new Integer("1000");
2. valueOf μ¬μ©
Integer obj = Integer.valueOf("1000");
Integer obj = Integer.valueOf(1000);
Unboxing : ν¬μ₯ κ°μ²΄μμ κΈ°λ³Έ νμ
μ κ°μ μ»μ΄λ΄λ κ³Όμ
"κΈ°λ³Έ νμ
λͺ
+ Value()" λ©μλλ₯Ό νΈμΆ
int num = obj.intValue();
π§μλ λ°μ±
List<Integer> list = new ArrayList<Integer>();
list.add(200);
π§ν¬μ₯ κ° λΉκ΅
ν¬μ₯ κ°μ²΄λ λ΄λΆμ κ°μ λΉκ΅νκΈ° μν΄ ==μ != μ°μ°μλ₯Ό μ¬μ©ν μ μμ. ==μ != μ°μ°μλ λ΄λΆμ κ°μ λΉκ΅νλ κ²μ΄ μλλΌ κ°μ²΄μ μ°Έμ‘°λ₯Ό λΉκ΅νλ κ²μ΄κΈ° λλ¬Έμ.
λ΄λΆμ κ°λ§ λΉκ΅ν κ²μ΄λΌλ©΄ μΈλ°μ±ν λ€μ μΈλ°μ± κ°μ μ»μ΄μ λΉκ΅ν΄μΌν¨.
πMath ν΄λμ€
μν κ³μ°μ μ¬μ© ν μ μλ λ©μλλ₯Ό μ 곡ν¨. Math ν΄λμ€ λ΄λΆ λ©μλλ μ λΆλ€ μ μ λ©μλμ.
π§Math.random() λ©μλ
Math.random()λ©μλλ 0.0 <= Math.random() < 1.0 μ¬μ΄μ λ²μμ μνλ νλμ double νμ
μ κ°μ 리ν΄ν¨.
μ£Όμ¬μ λ²νΈ λ½κΈ° λμ μμ±
int num = (int) (Math.random() * 6) + 1;
λ‘λ λ²νΈ λ½κΈ° λμ μμ±
int num = (int) (Math.random() * 45) + 1;