[Java] λ©”μ„œλ“œ & API

2024. 2. 16. 00:31Β· Java
λͺ©μ°¨
  1. πŸš€ λ©”μ„œλ“œ
  2. ⭐ λ©”μ„œλ“œ κ°œμš”
  3. ⭐ λ©”μ„œλ“œ ν™œμš©
  4. πŸš€ νŒ¨ν‚€μ§€(Package)
  5. ⭐ νŒ¨ν‚€μ§€ κ°œμš”
  6. ⭐ νŒ¨ν‚€μ§€ 확인
  7. πŸš€ μž„ν¬νŠΈ(Import)
  8. ⭐ μž„ν¬νŠΈ κ°œμš”
  9. ⭐ μž„ν¬νŠΈ 확인
  10. πŸš€ API
  11. ⭐ API κ°œμš”
  12. ⭐ Math 클래슀
  13. ⭐ Scanner 클래슀

πŸš€ λ©”μ„œλ“œ

⭐ λ©”μ„œλ“œ κ°œμš”

βœ… λ©”μ„œλ“œλž€?

λ©”μ„œλ“œ(method)λŠ” μ–΄λ–€ νŠΉμ • μž‘μ—…μ„ μˆ˜ν–‰ν•˜κΈ° μœ„ν•œ λͺ…λ Ήλ¬Έμ˜ 집합이라고 ν•  수 μžˆλ‹€.

 

βœ… λ©”μ„œλ“œμ˜ μ‚¬μš© λͺ©μ 

1. μ€‘λ³΅λ˜λŠ” μ½”λ“œλ₯Ό λ©”μ„œλ“œλ‘œ λ§Œλ“€μ–΄ μ½”λ“œμ˜ 반볡 μ‚¬μš©μ„ ν”Όν•  수 μžˆλ‹€.

2. μ½”λ“œμ˜ 가독성이 μ’‹μ•„μ§„λ‹€.

3. κΈ°λŠ₯의 변경이 ν•„μš”ν•œ 경우 λ©”μ„œλ“œ λΆ€λΆ„λ§Œ μˆ˜μ •ν•˜λ©΄ 되기 λ•Œλ¬Έμ—, μ†μ‰¬μš΄ μœ μ§€λ³΄μˆ˜κ°€ κ°€λŠ₯ν•˜λ‹€.

 

βœ… λ©”μ„œλ“œ μ„ μ–Έ

μ ‘κ·Όμ œμ–΄μž λ°˜ν™˜νƒ€μž… λ©”μ„œλ“œμ΄λ¦„ (λ§€κ°œλ³€μˆ˜ λͺ©λ‘) {
	// μ‹€ν–‰ν•  μ½”λ“œ
    
	// λ°˜ν™˜νƒ€μž…μ΄ μžˆμ„κ²½μš° λ°˜ν™˜νƒ€μž…μ— 맞게 return μž‘μ„±
	// λ°˜ν™˜νƒ€μž…μ΄ void인 경우 μƒλž΅
	return ...;
}

1. μ ‘κ·Ό μ œμ–΄μž : λ©”μ„œλ“œμ— μ ‘κ·Όν•  수 μžˆλŠ” λ²”μœ„

  • public : μ–΄λ””μ„œλ‚˜ μ ‘κ·Ό κ°€λŠ₯
  • protected : μƒμ†κ΄€κ³„μ΄κ±°λ‚˜ 같은 νŒ¨ν‚€μ§€μ—μ„œ μ ‘κ·Ό κ°€λŠ₯
  • default(μƒλž΅κ°€λŠ₯) : 같은 νŒ¨ν‚€μ§€μ—μ„œ μ ‘κ·Ό κ°€λŠ₯
  • private : 같은 클래슀 λ‚΄λΆ€μ—μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯

2. λ°˜ν™˜ νƒ€μž…(return type) : λ©”μ„œλ“œκ°€ λͺ¨λ“  μž‘μ—…μ„ 마치고 λ°˜ν™˜ν•˜λŠ” λ°μ΄ν„°μ˜ νƒ€μž…

  • void : 리턴값 μ—†μŒ
  • κΈ°λ³Έ λ³€μˆ˜ μžλ£Œν˜• : int, float, λ“±λ“±
  • μ˜€λΈŒμ νŠΈν˜• : String, 이외 μ‚¬μš©μž μ •μ˜ νƒ€μž…

3. λ©”μ„œλ“œ 이름 : λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜κΈ° μœ„ν•œ 이름

4. λ§€κ°œλ³€μˆ˜ λͺ©λ‘(parameters) : λ©”μ„œλ“œ 호좜 μ‹œμ— μ „λ‹¬λ˜λŠ” 인수의 값을 μ €μž₯ν•  λ³€μˆ˜λ“€

5. μ‹€ν–‰ν•  μ½”λ“œ : λ©”μ„œλ“œμ˜ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” μ½”λ“œ

 

βœ… λ©”μ„œλ“œ 호좜

미리 μ •μ˜ν•œ λ©”μ„œλ“œλŠ” μ°Έμ‘°μ—°μ‚°μž(.)λ₯Ό 톡해 ν˜ΈμΆœν•  수 μžˆλ‹€.

public class Application {

	public static void main(String[] args) {
	
    Application app = new Application();
	
    //λ ˆνΌλŸ°μŠ€λ³€μˆ˜μ΄λ¦„.λ©”μ„œλ“œμ΄λ¦„();
    app.methodA();
    //λ ˆνΌλŸ°μŠ€λ³€μˆ˜μ΄λ¦„.λ©”μ„œλ“œμ΄λ¦„(λ§€κ°œλ³€μˆ˜1, λ§€κ°œλ³€μˆ˜2, ...)
    app.methodB(10);
    }
    
    public void methodA(){
    	System.out.println("method A 호좜됨....");
    }
    
    public void methodB(int x) {
        System.out.println("method B 둜 " + x + " κ°’ λ„˜μ–΄μ˜΄...");
    }
}

 

βœ… λ©”μ„œλ“œ 호좜 흐름

public class Application {

    public static void main(String[] args) {
    
        System.out.println("main() μ‹œμž‘λ¨...");
    
        Application app = new Application();
   	 	app.methodA();
        
   	 	System.out.println("main() μ’…λ£Œλ¨...");
    }
    
    public void methodA() {
    
        System.out.println("methodA() ν˜ΈμΆœν•¨...");
        
        methodB();
        
        System.out.println("methodA() μ’…λ£Œλ¨...");
    }
    
    public void methodB() {
    
        System.out.println("methodB() ν˜ΈμΆœν•¨...");

        methodC();
        
        System.out.println("methodB() μ’…λ£Œλ¨...");
    }
    
    public void methodC() {
    
        System.out.println("methodC() ν˜ΈμΆœν•¨...");
        
        System.out.println("methodC() μ’…λ£Œλ¨...");
    }
}

λ©”μ„œλ“œκ°€ 호좜되면 stack μ˜μ—­μ— λ©”μ„œλ“œλ₯Ό μœ„ν•œ μ˜μ—­μ΄ ν• λ‹Ήλ˜κ³ ,

호좜된 λ©”μ„œλ“œλ“€μ΄ 싀행이 μ™„λ£Œλ˜λ©΄ stack μ˜μ—­μ— ν• λ‹Ήλœ λ©”λͺ¨λ¦¬ 곡간은 사라진닀.

λ©”μ„œλ“œκ°€ μ™„λ£Œλœ μ΄ν›„μ—λŠ” ν˜ΈμΆœν–ˆλ˜ μœ„μΉ˜λ‘œ λ‹€μ‹œ λŒμ•„κ°€μ„œ κ·Έ 이후 μž‘μ—…μ„ μ‹€ν–‰ν•˜λŠ”λ°,

methodA() β†’ methodB() β†’ methodC()와 같이 ν˜ΈμΆœλ˜μ—ˆκΈ° λ•Œλ¬Έμ—

λ©”μ„œλ“œκ°€ 끝날 λ•ŒλŠ” methodC() β†’ methodB() β†’ methodA()와 같이 λŒμ•„κ°€κ²Œ λœλ‹€.

 

βœ… μ „λ‹¬μΈμž(argument)와 λ§€κ°œλ³€μˆ˜(parameter)λ₯Ό μ΄μš©ν•œ λ©”μ„œλ“œ 호좜

μ§€μ—­λ³€μˆ˜λŠ” μ„ μ–Έν•œ λ©”μ„œλ“œ 블둝 λ‚΄λΆ€μ—μ„œλ§Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.

이것을 μ§€μ—­λ³€μˆ˜μ˜ μŠ€μ½”ν”„λΌκ³  ν•œλ‹€.

λ‹€λ₯Έ λ©”μ„œλ“œ κ°„ μ„œλ‘œ κ³΅μœ ν•΄μ•Ό ν•˜λŠ” 값이 μ‘΄μž¬ν•˜λŠ” 경우 λ©”μ„œλ“œ 호좜 μ‹œ μ‚¬μš©ν•˜λŠ” κ΄„ν˜Έλ₯Ό μ΄μš©ν•΄μ„œ 값을 전달할 수 μžˆλ‹€.

μ΄λ•Œ μ „λ‹¬ν•˜λŠ” 값을 μ „λ‹¬μΈμž(argument)라고 λΆ€λ₯΄κ³ ,

λ©”μ„œλ“œ μ„ μ–ΈλΆ€ κ΄„ν˜Έ μ•ˆμ— 전달 인자λ₯Ό λ°›κΈ° μœ„ν•΄ μ„ μ–Έν•˜λŠ” λ³€μˆ˜λ₯Ό λ§€κ°œλ³€μˆ˜(parameter)라고 λΆ€λ₯Έλ‹€.

 

βœ… λ©”μ„œλ“œ 리턴

  • λ©”μ„œλ“œλŠ” 항상 λ§ˆμ§€λ§‰μ— return λͺ…λ Ήμ–΄κ°€ μ‘΄μž¬ν•œλ‹€.
  • return 은 μžμ‹ μ„ ν˜ΈμΆœν•œ ꡬ문으둜 λ³΅κ·€ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.
  • 볡귀λ₯Ό ν•  λ•Œ κ·Έλƒ₯ 볡귀λ₯Ό ν•  μˆ˜λ„ μžˆμ§€λ§Œ, 값을 κ°€μ§€κ³  볡귀할 수 도 μžˆλ‹€. μ΄λ•Œ κ°€μ§€κ³  κ°€λŠ” 값을 리턴값이라고 ν•œλ‹€.
  • return 값을 λ°˜ν™˜λ°›κΈ° μœ„ν•΄μ„œλŠ” λ©”μ„œλ“œ 선언뢀에 리턴 νƒ€μž…μ„ λͺ…μ‹œν•΄ μ£Όμ–΄μ•Ό ν•œλ‹€.
  • voidλŠ” 아무 λ°˜ν™˜κ°’λ„ κ°€μ§€μ§€ μ•Šκ² λ‹€λŠ” λ¦¬ν„΄νƒ€μž…μ— μ‚¬μš©ν•  수 μžˆλŠ” ν‚€μ›Œλ“œμ΄λ‹€.
  • λ°˜ν™˜κ°’μ΄ μ—†λŠ” 경우 return ꡬ문은 μƒλž΅ν•΄λ„ μ»΄νŒŒμΌλŸ¬κ°€ μžλ™μœΌλ‘œ μΆ”κ°€ν•΄ μ£Όμ§€λ§Œ, λ°˜ν™˜κ°’μ΄ μžˆλŠ” κ²½μš°λŠ” return ꡬ문을 λ°˜λ“œμ‹œ λͺ…μ‹œμ μœΌλ‘œ μž‘μ„±ν•΄μ•Ό ν•œλ‹€. λ˜ν•œ λ©”μ„œλ“œ 선언뢀에 μ„ μ–Έν•œ λ¦¬ν„΄νƒ€μž… λ°˜ν™˜κ°’μ˜ μžλ£Œν˜•μ€ λ°˜λ“œμ‹œ μΌμΉ˜ν•΄μ•Ό ν•œλ‹€.
public class Application {

    public static void main(String[] args) {
    
        Application app = new Application();
        app.testMethod();
        
        String returnText = app.testMethod();
        System.out.println(returnText); 	//hello world 좜λ ₯됨
        
        /* λ³€μˆ˜μ— μ €μž₯ν•˜μ§€ μ•Šκ³  λ°”λ‘œ 좜λ ₯도 κ°€λŠ₯ν•˜λ‹€. */
        System.out.println(app.testMethod());
        
        System.out.println("main() λ©”μ„œλ“œ μ’…λ£Œλ¨...");
    }
    
    public String testMethod() {
    
        /* public 뒀에 λ°”λ‘œ return으둜 κ°€μ§€κ³  갈 νƒ€μž…μ„ λͺ…μ‹œν•œλ‹€.
        * 아무 값도 λ¦¬ν„΄ν•˜μ§€ μ•ŠλŠ” 경우 void, 값을 λ°˜ν™˜ν•˜λŠ” κ²½μš°μ—λŠ” λ°˜ν™˜κ°’μ˜ μžλ£Œν˜•μ„ μž‘μ„±ν•΄μ•Ό ν•œλ‹€.
        * */
        return "hello world";
    }
}

 

⭐ λ©”μ„œλ“œ ν™œμš©

βœ… μ „λ‹¬μΈμžμ™€ λ§€κ°œλ³€μˆ˜ ν…ŒμŠ€νŠΈ

public class Application {

    public static void main(String[] args) {
    
    	Application app = new Application();
        
        /* μ „λ‹¬μΈμžμ™€ λ§€κ°œλ³€μˆ˜λ₯Ό μ΄μš©ν•œ λ©”μ„œλ“œ 호좜 ν…ŒμŠ€νŠΈ */
        /* 1. μ „λ‹¬μΈμžλ‘œ κ°’ 전달 ν…ŒμŠ€νŠΈ */
        /* ν˜ΈμΆœν•˜λ €λŠ” λ©”μ„œλ“œμ˜ λ§€κ°œλ³€μˆ˜ 선언뢀에 미리 μ„ μ–Έν•΄λ‘” μžλ£Œν˜•κ³Ό, 갯수, μˆœμ„œκ°€ μΌμΉ˜ν•˜κ²Œ 값을 λ„£μ–΄ ν˜ΈμΆœν•΄μ•Ό ν•œλ‹€. */
        app.testMethod(40);
        //app.testMethod1("40"); 		//λ§€κ°œλ³€μˆ˜λŠ” intν˜•μ΄μ§€λ§Œ μΈμžκ°€ String ν˜•μ΄κΈ° λ•Œλ¬Έμ— ν˜ΈμΆœν•  수 μ—†λ‹€.
        //app.testMethod1(20, 30, 40); 	//λ§€κ°œλ³€μˆ˜λŠ” intν˜• 1개 μ΄μ§€λ§Œ μΈμžλŠ” 3개이기 λ•Œλ¬Έμ— ν˜ΈμΆœν•  수 μ—†λ‹€.
        //app.testMethod1(); 			//λ§€κ°œλ³€μˆ˜λŠ” μ„ μ–Έλ˜μ–΄ μžˆμ§€λ§Œ 인자둜 값을 μ „λ‹¬ν•˜μ§€ μ•ŠμœΌλ©΄ ν˜ΈμΆœν•  수 μ—†λ‹€.
        
        /* 2. λ³€μˆ˜μ— μ €μž₯ν•œ κ°’ 전달 ν…ŒμŠ€νŠΈ */
        /* 2-1. λ³€μˆ˜μ— μ €μž₯된 값을 μ΄μš©ν•˜μ—¬ 값을 전달할 수 μžˆλ‹€. */
        int age = 20;
        app.testMethod(age);
        
        /* 2-2. μžλ™ν˜•λ³€ν™˜μ„ μ΄μš©ν•˜μ—¬ κ°’ 전달을 ν•  수 μžˆλ‹€. */
        byte byteAge = 10;
        app.testMethod(byteAge);
        
        /* 2-3. κ°•μ œν˜•λ³€ν™˜μ„ μ΄μš©ν•΄μ„œ κ°’ 전달을 ν•  수 μžˆλ‹€. */
        long longAge = 80;
        //app.testMethod(longAge); 		//μžλ™ ν˜•λ³€ν™˜μ„ ν•  수 μ—†μ–΄μ„œ μ—λŸ¬ λ°œμƒ
        app.testMethod((int) longAge); 	//κ°•μ œ ν˜•λ³€ν™˜μ„ μ΄μš©ν•˜μ—¬ μžλ£Œν˜•μ„ 맞좘 ν›„ ν˜ΈμΆœν•  수 μžˆλ‹€. (데이터 손싀 주의)
        
        /* 2-4. μ—°μ‚° κ²°κ³Όλ₯Ό μ΄μš©ν•΄μ„œ κ°’ 전달을 ν•  수 μžˆλ‹€. */
        app.testMethod(age * 3);
    }
    
    public void testMethod(int age) {
    	System.out.println("λ‹Ήμ‹ μ˜ λ‚˜μ΄λŠ” " + age + "μ„Έ μž…λ‹ˆλ‹€.");
    }
}

 

βœ… μ—¬λŸ¬ 개의 μ „λ‹¬μΈμžλ₯Ό κ°€μ§„ λ©”μ„œλ“œ ν…ŒμŠ€νŠΈ

public class Application {

    public static void main(String[] args) {
    
        /* μ—¬λŸ¬ 개의 μ „λ‹¬μΈμžλ₯Ό μ΄μš©ν•œ λ©”μ„œλ“œ 호좜 ν…ŒμŠ€νŠΈ */
        /* 1. μ—¬λŸ¬ 개의 λ§€κ°œλ³€μˆ˜λ₯Ό κ°€μ§„ λ©”μ„œλ“œ 호좜 */
        Application app = new Application();
        app.testMethod("홍길동", 20, '남');
        //app.testMethod(20, "μœ κ΄€μˆœ", 'μ—¬'); 	//κ°’μ˜ κ°―μˆ˜λŠ” λ§žμ§€λ§Œ μˆœμ„œκ°€ λ‹€λ₯΄κ²Œ μ „λ‹¬λ˜λ©΄ ν˜ΈμΆœν•˜μ§€ λͺ»ν•œλ‹€.
        
        /* 2. λ³€μˆ˜μ— μ €μž₯된 값을 μ „λ‹¬ν•˜λ©° ν˜ΈμΆœν•  수 μžˆλ‹€. */
        String name = "μœ κ΄€μˆœ";
        int age = 20;
        char gender = 'μ—¬';
        
        app.testMethod(name, age, gender);
    }
    
    public void testMethod(String name, int age, final char gender) {
        
        /* λ§€κ°œλ³€μˆ˜λ„ μΌμ’…μ˜ μ§€μ—­λ³€μˆ˜λ‘œ λΆ„λ₯˜λœλ‹€.
        * λ§€κ°œλ³€μˆ˜ μ—­μ‹œ final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.
        * μ§€μ—­λ³€μˆ˜μ— final ν‚€μ›Œλ“œλ₯Ό λΆ™μ—¬ μƒμˆ˜λ₯Ό λ§Œλ“œλŠ” 것과 λ™μΌν•˜λ‹€.
        * final λ§€κ°œλ³€μˆ˜λŠ” μƒμˆ˜ 넀이밍 κ·œμΉ™μ„ μ„ νƒμ μœΌλ‘œ λ”°λ₯΄λŠ” κ²½ν–₯이 μžˆλ‹€. (써도 되고 μ•ˆμ¨λ„ 됨)
        * */
        
        System.out.println("λ‹Ήμ‹ μ˜ 이름은 " + name + "이고, λ‚˜μ΄λŠ” " + age + "μ„Έ 이며, 성별은 " + gender + "μž…λ‹ˆλ‹€.");
        
        /* λ©”μ„œλ“œ 주석도 λ‹¬μ•„μ£Όμž. ν˜ΈμΆœκ΅¬λ¬Έμ— 마우슀λ₯Ό 올리면 λ©”μ„œλ“œμ— λŒ€ν•œ μ„€λͺ…을 λ³Ό 수 μžˆλ‹€. */
    }
}

 

βœ… λ©”μ„œλ“œ 리턴 ν…ŒμŠ€νŠΈ

public class Application {
    public static void main(String[] args) {
    
        /* λ©”μ„œλ“œ 리턴 ν…ŒμŠ€νŠΈ */
        /* λͺ¨λ“  λ©”μ„œλ“œ λ‚΄λΆ€μ—λŠ” return; 이 μ‘΄μž¬ν•œλ‹€.
        * void λ©”μ„œλ“œμ˜ 경우 return;을 λͺ…μ‹œμ μœΌλ‘œ μž‘μ„±ν•˜μ§€ μ•Šμ•„λ„ λ§ˆμ§€λ§‰μ€„μ— μ»΄νŒŒμΌλŸ¬κ°€ μžλ™μœΌλ‘œ μΆ”κ°€λ₯Ό ν•΄μ€€λ‹€.
        * return은 ν˜„μž¬ λ©”μ„œλ“œλ₯Ό κ°•μ œ μ’…λ£Œν•˜κ³  ν˜ΈμΆœν•œ ꡬ문으둜 λ‹€μ‹œ λŒμ•„κ°€λŠ” λͺ…령어이닀.
        * */
        
        /* main() λ©”μ„œλ“œκ°€ μ‹œμž‘ν•˜λŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ 좜λ ₯ ꡬ문 μž‘μ„± */
        System.out.println("main() λ©”μ„œλ“œ μ‹œμž‘ν•¨...");
        Application app = new Application();
        app.testMethod();
        
        /* main() λ©”μ„œλ“œκ°€ μ’…λ£Œλ˜λŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ 좜λ ₯ ꡬ문 μž‘μ„± */
        System.out.println("main() λ©”μ„œλ“œ μ’…λ£Œλ¨...");
    }
    
    public void testMethod() {
        System.out.println("testMethod() λ™μž‘ 확인...");
        
        /* μ»΄νŒŒμΌλŸ¬μ— μ˜ν•΄ μžλ™μœΌλ‘œ μΆ”κ°€λ˜λŠ” ꡬ문이닀.
        * κ°€μž₯ λ§ˆμ§€λ§‰μ— μž‘μ„±ν•΄μ•Ό ν•˜κ³ , λ§ˆμ§€λ§‰μ— μž‘μ„±λ˜μ§€ μ•Šμ„ 경우 컴파일 μ—λŸ¬λ₯Ό λ°œμƒμ‹œν‚¨λ‹€.
        * */
        return;
        
        //System.out.println("test"); 	// return μ•„λž˜ λ‹€λ₯Έ ꡬ문이 μžˆμ„ 경우 μ—λŸ¬ λ°œμƒ, return은 λ©”μ„œλ“œ κ°€μž₯ λ§ˆμ§€λ§‰μ— μž‘μ„±ν•΄μ•Ό ν•œλ‹€.
    }
}

 

βœ… λ§€κ°œλ³€μˆ˜μ™€ 리턴값 볡합 ν™œμš©

public class Application {

    public static void main(String[] args) {
        /* λ§€κ°œλ³€μˆ˜μ™€ 리턴값 볡합 ν™œμš© */
        /* λ§€κ°œλ³€μˆ˜λ„ μ‘΄μž¬ν•˜κ³  리턴값도 μ‘΄μž¬ν•˜λŠ” λ©”μ„œλ“œλ₯Ό μ΄μš©ν•˜μ—¬ κ°„λ‹¨ν•œ 계산기 λ§Œλ“€κΈ° */
        
        /* 숫자 두 개λ₯Ό λ§€κ°œλ³€μˆ˜λ‘œ μž…λ ₯ λ°›μ•„ μ—°μ‚°ν•˜λŠ” λ©”μ„œλ“œλ₯Ό
        * μ‚¬μΉ™μ—°μ‚°λ³„λ‘œ μΆ”κ°€ν•΄μ„œ ν˜ΈμΆœν•˜λŠ” ν…ŒμŠ€νŠΈλ₯Ό ν•΄λ³΄μž
        * */
        int first = 20;
        int second = 10;
        
        Application app = new Application();
        System.out.println("두 수λ₯Ό λ”ν•œ κ²°κ³Ό : " + app.plusTwoNumbers(first, second));
        System.out.println("두 수λ₯Ό λΊ€ κ²°κ³Ό : " + app.minusTwoNumbers(first, second));
        System.out.println("두 수λ₯Ό κ³±ν•œ κ²°κ³Ό : " + app.multipleTwoNumbers(first, second));
        System.out.println("두 수λ₯Ό λ‚˜λˆˆ κ²°κ³Ό : " + app.divideTwoNumbers(first, second));
    }
    
    public int plusTwoNumbers(int first, int second) {
    	return first + second;
    }
    
    public int minusTwoNumbers(int first, int second) {
    	return first - second;
    }
    
    public int multipleTwoNumbers(int first, int second) {
        return first * second;
    }
    
    public int divideTwoNumbers(int first, int second) {
        return first / second;
    }
}

 

βœ… static λ©”μ„œλ“œ ν…ŒμŠ€νŠΈ

public class Application {

    public static void main(String[] args) {
    
        /* static λ©”μ„œλ“œ 호좜 */
        /* μš°λ¦¬κ°€ μ§€κΈˆ μž‘μ„±ν•˜κ³  μžˆλŠ” λ©”μ„œλ“œλ₯Ό 보면 publicκ³Ό void 사이에 static이라고 ν•˜λŠ” ν‚€μ›Œλ“œκ°€ μžˆλ‹€.
        * static ν‚€μ›Œλ“œμ— λŒ€ν•΄μ„œλŠ” λ’€μ—μ„œ λ‹€μ‹œ λ‹€λ£¨κ²Œ 될 μ˜ˆμ •μ΄μ§€λ§Œ,
        * static λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜λŠ” 방법뢀터 λ¨Όμ € ν•™μŠ΅ν•΄λ³΄μž.
        * static이 μžˆλŠ” λ©”μ„œλ“œμ΄κ±΄ non-static λ©”μ„œλ“œμ΄κ±΄ λ©”μ„œλ“œμ˜ λ™μž‘ 흐름은 λ™μΌν•˜λ‹€.
        * */
        
        /* λ©”μ„œλ“œλ₯Ό μž‘μ„±ν•œ 이후 static λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•΄λ³΄μž */
        /* static λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜λŠ” 방법
        * 클래슀λͺ….λ©”μ„œλ“œλͺ…(); <- 이런 λ°©μ‹μœΌλ‘œ ν˜ΈμΆœν•œλ‹€.
        * */
        System.out.println("10κ³Ό 20의 ν•© : " + Application.sumTwoNumbers(10, 20));
        
        /* λ™μΌν•œ 클래슀 내에 μž‘μ„±λœ static λ©”μ„œλ“œλŠ” 클래슀λͺ… μƒλž΅μ΄ κ°€λŠ₯ν•˜λ‹€. */
        System.out.println("20κ³Ό 30의 ν•© : " +sumTwoNumbers(20, 30));
    }
    
    public static int sumTwoNumbers(int first, int second) {
    	return first + second;
    }
}

 

βœ… λ‹€λ₯Έ ν΄λž˜μŠ€μ— μž‘μ„±ν•œ non-static λ©”μ„œλ“œμ™€ static λ©”μ„œλ“œ 호좜 ν…ŒμŠ€νŠΈ

public class Calculator {

    public int minNumberOf(int first, int second) {
        return (first > second)? second : first;
    }
    
    public static int maxNumberOf(int first, int second) {
    	return (first > second)? first : second;		
    }
}
public class Application {

    public static void main(String[] args) {
    
        /* λ‹€λ₯Έ ν΄λž˜μŠ€μ— μž‘μ„±ν•œ λ©”μ„œλ“œ 호좜 */
        
        /* μ΅œλŒ€κ°’ μ΅œμ†Ÿκ°’μ„ 비ꡐ할 두 μ •μˆ˜λ₯Ό λ³€μˆ˜λ‘œ μ„ μ–Έ */
        int first = 100;
        int second = 50;
        
        /* 두 λ©”μ„œλ“œλ₯Ό μ°¨λ‘€λ‘œ ν˜ΈμΆœν•΄λ³΄μž */
        /* 1. non-static λ©”μ„œλ“œμ˜ 경우 */
        /* ν΄λž˜μŠ€κ°€ λ‹€λ₯΄λ”라도 μ‚¬μš©ν•˜λŠ” 방법은 λ™μΌν•˜λ‹€
        * 클래슀λͺ… μ‚¬μš©ν• μ΄λ¦„ = new 클래슀λͺ…();
        * μ‚¬μš©ν• μ΄λ¦„.λ©”μ„œλ“œλͺ…();
        * */
        Calculator calc = new Calculator();
        int min = calc.minNumberOf(first, second);
        
        System.out.println("두 수 쀑 μ΅œμ†Œκ°’μ€ : " + min);
        
        /* 2. static λ©”μ„œλ“œμΈ 경우 */
        /* λ‹€λ₯Έ ν΄λž˜μŠ€μ— μž‘μ„±ν•œ static λ©”μ„œλ“œμ˜ 경우 ν˜ΈμΆœν•  λ•Œ 클래슀λͺ…을 λ°˜λ“œμ‹œ κΈ°μˆ ν•΄μ•Ό ν•œλ‹€.
        * 클래슀λͺ….λ©”μ„œλ“œλͺ…();
        * */
        //int max = maxNumberOf(first, second); //클래슀λͺ…을 μƒλž΅ν•˜λ©΄ μ—λŸ¬ λ°œμƒν•œλ‹€.
        int max = Calculator.maxNumberOf(first, second);
        
        System.out.println("두 수 쀑 μ΅œλŒ€κ°’μ€ : " + max);
        
        /* 주의!
        * static λ©”μ„œλ“œλ„ non-static λ©”μ„œλ“œμ²˜λŸΌ ν˜ΈμΆœμ€ κ°€λŠ₯ν•˜λ‹€.
        * ν•˜μ§€λ§Œ ꢌμž₯ν•˜μ§€ μ•ŠλŠ”λ‹€.
        * 이미 λ©”λͺ¨λ¦¬μ— λ‘œλ”©λ˜μ–΄ μžˆλŠ” static λ©”μ„œλ“œλŠ” μ—¬λŸ¬ 객체가 κ³΅μœ ν•˜κ²Œ λœλ‹€.
        * κ·Έ λ•Œ 객체둜 μ ‘κ·Όν•˜κ²Œ 되면 μΈμŠ€ν„΄μŠ€κ°€ κ°€μ§„ κ°’μœΌλ‘œ 곡유된 값에 μ˜ˆμƒμΉ˜ λͺ»ν•˜λŠ” λ™μž‘μ„ μœ λ°œν•  수 있기 λ•Œλ¬Έμ—
        * μ‚¬μš©μ„ μ œν•œν•΄ λ‹¬λΌλŠ” 경고이닀. μ‹œμŠ€ν…œμ΄ λ³΅μž‘ν•΄μ§ˆ 수둝 이런 μ—λŸ¬λ₯Ό μ°ΎκΈ° νž˜λ“€μ–΄μ§€κ²Œ λœλ‹€.
        * */
        int max2 = calc.maxNumberOf(first, second);
        
        System.out.println("두 수 쀑 더 큰 값은 : " + max2); //ν•˜μ§€λ§Œ μ •μƒμ μœΌλ‘œ 싀행은 κ°€λŠ₯ν•˜λ‹€.
    }
}

 


πŸš€ νŒ¨ν‚€μ§€(Package)

⭐ νŒ¨ν‚€μ§€ κ°œμš”

βœ… νŒ¨ν‚€μ§€λž€?

νŒ¨ν‚€μ§€λž€ μ„œλ‘œ κ΄€λ ¨ μžˆλŠ” 클래슀 λ˜λŠ” μΈν„°νŽ˜μ΄μŠ€ 등을 λͺ¨μ•„ ν•˜λ‚˜μ˜ 묢음(κ·Έλ£Ή)으둜 λ‹¨μœ„λ₯Ό κ΅¬μ„±ν•˜λŠ” 것을 λ§ν•œλ‹€.

 

βœ… νŒ¨ν‚€μ§€μ˜ μ„ μ–Έ

package νŒ¨ν‚€μ§€λͺ…;
  • ν΄λž˜μŠ€λ‚˜ μΈν„°νŽ˜μ΄μŠ€μ˜ μ†ŒμŠ€νŒŒμΌ( .java )의 μ΅œμƒλ‹¨μ— μ„ μ–Έλ˜μ–΄μ•Ό ν•œλ‹€.
  • 클래슀 λͺ…λͺ…κ·œμΉ™κ³Ό λ‹€λ₯΄κ²Œ μ†Œλ¬Έμžλ‘œλ§Œ μž‘μ„±ν•˜λŠ” 것을 μ›μΉ™μœΌλ‘œ ν•œλ‹€.
  • νŒ¨ν‚€μ§€ λͺ…을 μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ μžλ™μ μœΌλ‘œ 이름 μ—†λŠ” νŒ¨ν‚€μ§€μ— μ†ν•˜κ²Œ λœλ‹€.

 

⭐ νŒ¨ν‚€μ§€ 확인

βœ… νŒ¨ν‚€μ§€ 확인

package ac.kr.samhyook.calculator;

public class Calculator {
    ...
}
package ac.kr.samhyook.method;

public class Application {

    public static void main(String[] args) {
    
        // μ‚¬μš©ν•΄μ•Όν•˜λŠ” 클래슀의 νŒ¨ν‚€μ§€κ°€ λ‹€λ₯Έ 경우 ν’€ 클래슀 이름을 μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.
        ac.kr.samhyook.method.Calculator cal = new ac.kr.samhyook.method.Calculator();
        
        /* non-static λ©”μ„œλ“œμ˜ 경우 */
        int min = cal.minNumberOf(30, 20);
        System.out.println("30κ³Ό 20쀑 더 μž‘μ€ 값은 : " + min);
        
        /* static λ©”μ„œλ“œμ˜ 경우 */
        int max = ac.kr.samhyook.method.Calculator.maxNumberOf(30, 20);
        System.out.println("30κ³Ό 20쀑 더 큰 값은 : " + max);
}

 


πŸš€ μž„ν¬νŠΈ(Import)

⭐ μž„ν¬νŠΈ κ°œμš”

βœ… μž„ν¬νŠΈλž€?

μ„œλ‘œ λ‹€λ₯Έ νŒ¨ν‚€μ§€μ— μ‘΄μž¬ν•˜λŠ” 클래슀λ₯Ό μ‚¬μš©ν•˜λŠ” 경우 νŒ¨ν‚€μ§€λͺ…을 ν¬ν•¨ν•œ ν’€ 클래슀 이름을 μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

ν•˜μ§€λ§Œ 맀번 λ‹€λ₯Έ 클래슀의 νŒ¨ν‚€μ§€λͺ…κΉŒμ§€ κΈ°μˆ ν•˜κΈ°μ—λŠ” λ²ˆκ±°λ‘­λ‹€.

κ·Έλž˜μ„œ νŒ¨ν‚€μ§€λͺ…을 μƒλž΅ν•˜κ³  μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•œ ꡬ문이 import ꡬ문이닀.

 

βœ… μž„ν¬νŠΈ μ„ μ–Έ

package νŒ¨ν‚€μ§€λͺ…;

import νŒ¨ν‚€μ§€λͺ….*;
import νŒ¨ν‚€μ§€λͺ….클래슀λͺ…;
import static νŒ¨ν‚€μ§€λͺ….클래슀λͺ…;

...클래슀
  • import 문은 μ—¬λŸ¬ 개 λͺ…μ‹œν•  수 μžˆλ‹€.
  • import λŠ” package μ„ μ–Έλ¬Έκ³Ό class μ„ μ–Έλ¬Έ 사이에 μž‘μ„±ν•˜λ©° μ–΄λ– ν•œ νŒ¨ν‚€μ§€ 내에 μžˆλŠ” 클래슀λ₯Ό μ‚¬μš©ν•  것인지에 λŒ€ν•΄ 미리 μ„ μ–Έν•˜λŠ” 효과λ₯Ό κ°€μ§„λ‹€.
  • import 문은 μ†ŒμŠ€νŒŒμΌ( .java ) μ—μ„œ package λ¬Έκ³Ό 클래슀 μ„ μ–Έλ¬Έ 사이에 λͺ…μ‹œν•œλ‹€.
  • static import 문은 static λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•  λ•Œ μ‚¬μš©ν•œλ‹€.

 

⭐ μž„ν¬νŠΈ 확인

βœ… μž„ν¬νŠΈ 확인

package ac.kr.samhyook.calculator;

public class Calculator {
	...
}
package ac.kr.samhyook.method;

/* μ‚¬μš©ν•˜λ €λŠ” ν΄λž˜μŠ€κΉŒμ§€λ₯Ό μž‘μ„±ν•΄μ•Ό ν•œλ‹€. */
import ac.kr.samhyook.calculator.Calculator;
/* static import의 경우 μ‚¬μš©ν•˜λ €λŠ” static methodκΉŒμ§€ μ „λΆ€ μ¨μ€˜μ•Ό ν•œλ‹€. */
import static ac.kr.samhyook.calculator.Calculator.maxNumberOf

public class Application {

    public static void main(String[] args) {
    
        Calculator cal = new Calculator();

        /* non-static λ©”μ„œλ“œμ˜ 경우 */
        int min = cal.minNumberOf(30, 20);
        System.out.println("30κ³Ό 20쀑 더 μž‘μ€ 값은 : " + min);

        /* static λ©”μ„œλ“œλ₯Ό static μž„ν¬νŠΈ ν•œ 경우 클래슀λͺ…도 μƒλž΅ν•˜κ³  μ‚¬μš©ν•  수 μžˆλ‹€. */
        int max = maxNumberOf(30, 20);
        System.out.println("30κ³Ό 20쀑 더 큰 값은 : " + max);
    }
}

 


πŸš€ API

⭐ API κ°œμš”

βœ… API λž€?

Application Programming Interface(API)λŠ” μ‘μš©ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘,

μš΄μ˜μ²΄μ œλ‚˜ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄κ°€ μ œκ³΅ν•˜λŠ” κΈ°λŠ₯을 μ œμ–΄ν•  수 μžˆλ„λ‘ λ§Œλ“  μΈν„°νŽ˜μ΄μŠ€λ₯Ό λœ»ν•œλ‹€.

  • μ‰½κ²Œ 말해 μš°λ¦¬κ°€ κ΅¬ν˜„ν•  수 μ—†κ±°λ‚˜ κ΅¬ν˜„ν•˜κΈ° 번거둜운 κΈ°λŠ₯듀을 JDKλ₯Ό μ„€μΉ˜ν•˜λ©΄ μ‚¬μš©ν•  수 μžˆλ„λ‘ μ œκ³΅ν•œ μ†ŒμŠ€μ½”λ“œ(ν΄λž˜μŠ€λ‚˜ μΈν„°νŽ˜μ΄μŠ€)듀을 μ˜λ―Έν•œλ‹€.
  • 더 μ‰½κ²Œ 말해 λˆ„κ°€ μž‘μ„±ν•΄ 놓은 μ†ŒμŠ€μ½”λ“œμ΄λ‹ˆ κ°€μ Έλ‹€ μ“°λŠ” 방법을 μ œκ³΅ν•΄ μ£ΌλŠ” 것이닀.
  • λͺ¨λ“  μ½”λ“œλ₯Ό μš°λ¦¬κ°€ λ‹€ μ™ΈμšΈ 수 μ—†μœΌλ‹ˆ API λ¬Έμ„œλ₯Ό λ³„λ„λ‘œ μ œκ³΅ν•΄μ£Όκ³  μžˆλ‹€.
    • JAVA 8(https://docs.oracle.com/javase/8/docs/api/)
    • JAVA 11(https://docs.oracle.com/en/java/javase/11/docs/api/)

 

⭐ Math 클래슀

βœ… Math ν΄λž˜μŠ€λž€?

Math ν΄λž˜μŠ€λŠ” μˆ˜ν•™μ—μ„œ 자주 μ‚¬μš©ν•˜λŠ” μƒμˆ˜λ“€κ³Ό ν•¨μˆ˜ 듀을 미리 κ΅¬ν˜„ν•΄ 놓은 ν΄λž˜μŠ€μ΄λ‹€.

APIλ¬Έμ„œλ₯Ό 확인해 보자.(https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Math.html)

Math ν΄λž˜μŠ€λŠ” static member둜만 κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.

즉, Math. λ©”μ„œλ“œ()와 같이 Math ν΄λž˜μŠ€μ—μ„œ μ œκ³΅ν•˜λŠ” APIλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.

 

βœ… Math 클래슀 확인

1. java.lang.Math ν΄λž˜μŠ€μ—μ„œ μ œκ³΅ν•˜λŠ” API 확인

public static void main(String[] args) {

    /* μ ˆλŒ€κ°’ 좜λ ₯ */
    /* 클래슀의 full-name을 λ‹€ 적은 경우 */
    System.out.println("-7의 μ ˆλŒ€κ°’ : " + (java.lang.Math.abs(-7)));
    
    /* java.langνŒ¨ν‚€μ§€λŠ” import ν•˜μ§€ μ•Šκ³  μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•΄ λ†“μ•˜λ‹€.
    * μ»΄νŒŒμΌλŸ¬κ°€ import java.lang.*; 이 μ½”λ“œλ₯Ό μžλ™μœΌλ‘œ μΆ”κ°€ν•΄μ„œ μ»΄νŒŒμΌμ„ ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.
    * */
    System.out.println("-1.25의 μ ˆλŒ€κ°’ : " + (Math.abs(-1.25)));
    
    /* μš°λ¦¬κ°€ Calculator에 λ§Œλ“  minκ³Ό maxλ₯Ό κ΅¬ν•˜λŠ” κΈ°λŠ₯도 이미 μ œκ³΅ν•˜κ³  μžˆλ‹€. */
    System.out.println("10κ³Ό 20쀑 더 μž‘μ€ 것은 : " + Math.min(10, 20));
    System.out.println("20κ³Ό 30쀑 더 큰 것은 : " + Math.max(20, 30));
    
    /* μˆ˜ν•™μ μœΌλ‘œ 많이 μ‚¬μš©ν•˜λŠ” κ³ μ •λœ 값듀도 이미 Math μ•ˆμ— μ •μ˜λœ 것이 μžˆλ‹€.
    * ν•„λ“œ λΌλŠ” 것을 μ΄μš©ν•œ 것인데 이 뢀뢄은 λ‚˜μ€‘μ— λ‹€λ£¨κ²Œ λ˜λ‹ˆ κ±±μ •ν•˜μ§€ 말자
    * */
    System.out.println("μ›μ£Όμœ¨ : " + Math.PI); //μ›μ˜ λ‘˜λ ˆλ‚˜ 이런거 계산할 λ•Œ 미리 μ •μ˜λœ κ°’μ΄λ‹ˆ κ·Έλƒ₯ λΆˆλŸ¬λ‹€ μ“°λ©΄ λœλ‹€.
    
    /* λ‚œμˆ˜λ₯Ό λ°œμƒμ‹œν‚€λŠ” 것도 μžˆλ‹€
    * 0λΆ€ν„° 1 μ „κΉŒμ§€μ˜ μ‹€μˆ˜ ν˜•νƒœμ˜ λ‚œμˆ˜λ₯Ό λ°œμƒμ‹œν‚¨λ‹€.
    * μ–˜λŠ” ν˜ΈμΆœν•  λ•Œλ§ˆλ‹€ λ‹€λ₯Έ 값을 κ°€μ§„λ‹€.
    * */
    System.out.println("λ‚œμˆ˜ λ°œμƒ : " + Math.random());
}

 

2. java.lang.Math ν΄λž˜μŠ€μ—μ„œ μ œκ³΅ν•˜λŠ” λ‚œμˆ˜ ν™œμš©

public static void main(String[] args) {

    /* λ‚œμˆ˜μ˜ ν™œμš© */
    /* Math.random()을 μ΄μš©ν•΄ λ°œμƒν•œ λ‚œμˆ˜λŠ” 0λΆ€ν„° 1μ „κΉŒμ§€μ˜ μ‹€μˆ˜ λ²”μœ„μ˜ λ‚œμˆ˜κ°’μ„ λ°˜ν™˜ν•œλ‹€.
    * μ›ν•˜λŠ” λ²”μœ„μ˜ λ‚œμˆ˜λ₯Ό κ΅¬ν•˜λŠ” 곡식
    *(int) (Math.random * κ΅¬ν•˜λ €λŠ” λ‚œμˆ˜μ˜ 갯수) + κ΅¬ν•˜λ €λŠ” λ‚œμˆ˜μ˜ μ΅œμ†Œκ°’
    */

    /* 0 ~ 9κΉŒμ§€μ˜ λ‚œμˆ˜ λ°œμƒ */
    int random1 = (int) (Math.random() * 10);
    System.out.println("0 λΆ€ν„° 9 μ‚¬μ΄μ˜ λ‚œμˆ˜ : " + random1);
    
    /* 1 ~ 10κΉŒμ§€μ˜ λ‚œμˆ˜ λ°œμƒ */
    int random2 = (int) (Math.random() * 10) + 1;
    System.out.println("1 λΆ€ν„° 10 μ‚¬μ΄μ˜ λ‚œμˆ˜ : " + random2);
    
    /* 10 ~ 15κΉŒμ§€μ˜ λ‚œμˆ˜ λ°œμƒ */
    int random3 = (int) (Math.random() * 6) + 10;
    System.out.println("10 λΆ€ν„° 15 μ‚¬μ΄μ˜ λ‚œμˆ˜ : " + random3);
    
    /* -128 ~ 127κΉŒμ§€μ˜ λ‚œμˆ˜ λ°œμƒ */
    //int random4 = (int) (Math.random() * 256) + (-128);
    int random4 = (int) (Math.random() * 256) - 128;
    System.out.println("-128 λΆ€ν„° 127κΉŒμ§€μ˜ λ‚œμˆ˜ λ°œμƒ : " + random4);
}

 

3. java.util.Random을 μ΄μš©ν•œ λ‚œμˆ˜μ˜ ν™œμš©

public static void main(String[] args) {

    /* java.util.Random 클래슀 */
    /* java.util.Random 클래슀의 nextInt() λ©”μ„œλ“œλ₯Ό μ΄μš©ν•œ λ‚œμˆ˜ λ°œμƒ
    * nextInt(int bound) : 0λΆ€ν„° λ§€κ°œλ³€μˆ˜λ‘œ 전달받은 μ •μˆ˜ λ²”μœ„κΉŒμ§€μ˜ λ‚œμˆ˜λ₯Ό λ°œμƒμ‹œμΌœμ„œ μ •μˆ˜ ν˜•νƒœλ‘œ λ°˜ν™˜ */
    
    /* μ›ν•˜λŠ” λ²”μœ„μ˜ λ‚œμˆ˜λ₯Ό κ΅¬ν•˜λŠ” 곡식
    * random.nextInt(κ΅¬ν•˜λ €λŠ” λ‚œμˆ˜μ˜ 갯수) + κ΅¬ν•˜λ €λŠ” λ‚œμˆ˜μ˜ μ΅œμ†Œκ°’
    * */
    
    Random random = new Random();
    
    /* 0 λΆ€ν„° 9κΉŒμ§€ λ‚œμˆ˜ λ°œμƒ */
    int randomNumber1 = random.nextInt(10);
    System.out.println("0 λΆ€ν„° 9 κΉŒμ§€μ˜ λ‚œμˆ˜ : " + randomNumber1);
    
    /* 1λΆ€ν„° 10κΉŒμ§€ λ‚œμˆ˜ λ°œμƒ */
    int randomNumber2 = random.nextInt(10) + 1;
    System.out.println("1 λΆ€ν„° 10 κΉŒμ§€μ˜ λ‚œμˆ˜ : " + randomNumber2);
    
    /* 20 λΆ€ν„° 45κΉŒμ§€μ˜ λ‚œμˆ˜ λ°œμƒ */
    int randomNumber3 = random.nextInt(26) + 20;
    System.out.println("20 λΆ€ν„° 45 κΉŒμ§€μ˜ λ‚œμˆ˜ : " + randomNumber3);
    
    /* -128 λΆ€ν„° 127κΉŒμ§€μ˜ λ‚œμˆ˜ λ°œμƒ */
    //int randomNumber4 = random.nextInt(256) - 128;
    int randomNumber4 = new Random().nextInt(256) - 128; //객체λ₯Ό μƒμ„±ν•˜μžλ§ˆμž λ°”λ‘œ λ©”μ„œλ“œ ν˜ΈμΆœλ„ ν•  수 μžˆλ‹€.
    System.out.println("-128 λΆ€ν„° 127 κΉŒμ§€μ˜ λ‚œμˆ˜ : " + randomNumber4);
}

 

⭐ Scanner 클래슀

βœ… μŠ€μΊλ„ˆ(Scanner) λž€?

μŠ€μΊλ„ˆ(Scanner)λž€ java.util.Scanner 클래슀λ₯Ό λ§ν•œλ‹€.

이 ν΄λž˜μŠ€λŠ” 읽은 λ°”μ΄νŠΈλ₯Ό 문자, 숫자, μ‹€μˆ˜, boolean, λ¬Έμžμ—΄ λ“± λ‹€μ–‘ν•œ νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•˜μ—¬ λ¦¬ν„΄ν•˜λŠ” ν΄λž˜μŠ€μ΄λ‹€.

  • ScannerλŠ” β€œν† ν° λ‹¨μœ„β€λ‘œ 데이터λ₯Ό 읽어 μ˜¨λ‹€. (토큰 : 곡백문자 - Spacebar/Tab/Enter둜 κ΅¬λΆ„λ˜λŠ” μš”μ†Œ)

 

βœ… μŠ€μΊλ„ˆμ—μ„œ 자주 μ“°μ΄λŠ” λ©”μ„œλ“œ

λ©”μ„œλ“œ κΈ°λŠ₯
next() String으둜 μ½μ–΄μ˜¨λ‹€.(띄어쓰기 μ΄ν›„λŠ” 읽지 μ•ŠμŒ)
nextLine() String으둜 μ½μ–΄μ˜¨λ‹€.(띄어쓰기 포함 ν•œ 쀄을 μ½λŠ”λ‹€. Enter μ΄μ „κΉŒμ§€)
nextInt() int둜 μ½μ–΄μ˜¨λ‹€.
nextBoolean() boolean으둜 μ½μ–΄μ˜¨λ‹€.
nextByte() byte둜 μ½μ–΄μ˜¨λ‹€.
nextShort() short둜 μ½μ–΄μ˜¨λ‹€.
nextLong() long을 μ½μ–΄μ˜¨λ‹€.
nextFloat() float둜 μ½μ–΄μ˜¨λ‹€.
nextDouble() double둜 μ½μ–΄μ˜¨λ‹€.

 

βœ… μŠ€μΊλ„ˆ 확인

1. Scannerλ₯Ό μ΄μš©ν•΄ λ‹€μ–‘ν•œ κ°’ μž…λ ₯ ν…ŒμŠ€νŠΈ

public static void main(String[] args) {

    /* java.util.Scannerλ₯Ό μ΄μš©ν•œ λ‹€μ–‘ν•œ μžλ£Œν˜• κ°’ μž…λ ₯ λ°›κΈ° */
    /* μ½˜μ†” 화면에 값을 μž…λ ₯ λ°›μ•„ 좜λ ₯ν•΄ 보기
    * 이런 μ–΄λ €μš΄ κΈ°λŠ₯ λ˜ν•œ 미리 JDKλ₯Ό μ„€μΉ˜ν•˜λ©΄ μ†μ‰½κ²Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ κ΅¬ν˜„ν•΄ λ†“μ•˜λ‹€.
    * */
    
    /* 1. Scanner 객체 생성 */
    /* 1-1. μ›λž˜ μ΄λ ‡κ²Œ Scanner 객체λ₯Ό λ§Œλ“€μ–΄μ•Ό 함 */
    //java.util.Scanner sc = new java.util.Scanner(java.lang.System.in);
    
    /* 1-2. ν•˜μ§€λ§Œ java.lang은 νŒ¨ν‚€μ§€μ΄λ¦„ μƒλž΅ κ°€λŠ₯ν•˜λ‹€ */
    //java.util.Scanner sc = new java.util.Scanner(System.in);

    /* 1-3. λ‹€λ₯Έ νŒ¨ν‚€μ§€μ— μžˆλŠ” 클래슀 μ‚¬μš© μ‹œ νŒ¨ν‚€μ§€λͺ… μƒλž΅ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” ꡬ문은 λ°”λ‘œ import이닀. (import) */
    Scanner sc = new Scanner(System.in); //java.util.Scanner importν•˜λ©΄ μ‚¬μš© μ€€λΉ„ 끝
    
    /* 2. μžλ£Œν˜•λ³„ κ°’ μž…λ ₯λ°›κΈ° */
    /* μž…λ ₯받을 λ•Œ μ•ˆλ‚΄λ¬Έκ΅¬λŠ” λ³„λ„λ‘œ 좜λ ₯ν•΄μ£Όμ§€ μ•ŠμœΌλ‹ˆ μš°λ¦¬κ°€ μž‘μ„±ν•΄μ€˜μ•Ό ν•œλ‹€. */
    /* print와 println은 쀄 λ°”κΏˆ 차이 이닀.
    * λ‹€μŒ 쀄에 μž…λ ₯을 λŒ€κΈ°μ‹œν‚€λŠ” 것이 μ•„λ‹ˆκ³  μ€„λ°”κΏˆν•˜μ§€ μ•Šκ³  μž…λ ₯λ°›κ²Œ ν•˜κΈ° μœ„ν•΄ printλ₯Ό μ‚¬μš©ν–ˆλ‹€
    * */
    
    /* 2-1. λ¬Έμžμ—΄ μž…λ ₯ λ°›κΈ° */
    /* nextLine() : μž…λ ₯받은 값을 λ¬Έμžμ—΄λ‘œ λ°˜ν™˜ν•΄μ€€λ‹€ */
    System.out.print("이름을 μž…λ ₯ν•˜μ„Έμš” : ");
    String name = sc.nextLine();
    System.out.println("μž…λ ₯ν•˜μ‹  이름은 " + name + "μž…λ‹ˆλ‹€.");
    
    /* 2-2. μ •μˆ˜ν˜• κ°’ μž…λ ₯ λ°›κΈ° */
    /* nextInt() : μž…λ ₯받은 값을 intν˜•μœΌλ‘œ λ°˜ν™˜ν•œλ‹€. nextByte()/nextShort()λŠ” μƒλž΅ν•œλ‹€.
    * μˆ«μžκ°€ μ•„λ‹Œ 값을 μž…λ ₯ν•˜κ²Œ 되면 InputMismatchException이 λ°œμƒν•œλ‹€.
    * int λ²”μœ„λ₯Ό μ΄ˆκ³Όν•œ 값을 μž…λ ₯λ°›κ²Œ 되면 μ—­μ‹œ InputMismatchException이 λ°œμƒν•œλ‹€.
    * Exception은 λ‚˜μ€‘μ— λ‹€μ‹œ λ‹€λ£¨κ²Œ λ˜κ² μ§€λ§Œ μ‰½κ²Œ ν‘œν˜„ν•˜μžλ©΄ μ—λŸ¬ 같은 κ°œλ…μ΄λΌκ³  μƒκ°ν•˜μž.
    * */
    System.out.print("λ‚˜μ΄λ₯Ό μž…λ ₯ν•˜μ„Έμš” : ");
    int age = sc.nextInt();
    System.out.println("μž…λ ₯ν•˜μ‹  λ‚˜μ΄λŠ” " + age + "μž…λ‹ˆλ‹€.");
    
    /* nextLong() : μž…λ ₯받은 값을 long ν˜•μœΌλ‘œ λ°˜ν™˜ν•œλ‹€.
    * nextInt와 Exception이 λ°œμƒν•˜λŠ” μ΄μœ λŠ” λ™μΌν•˜λ‹€.
    * */
    System.out.print("κΈˆμ•‘μ„ μž…λ ₯ν•΄μ£Όμ„Έμš” : "); //λ§Œμ•½ μ•ˆλ‚΄ ꡬ문을 μž‘μ„±ν•˜μ§€ μ•ŠμœΌλ©΄ κ·Έλƒ₯ λ©ˆμΆ˜κ²ƒ 처럼 보인닀. 사싀 κΈ°λ‹€λ¦¬λŠ” 쀑이닀.
    long money = sc.nextLong();
    System.out.println("μž…λ ₯ν•˜μ‹  κΈˆμ•‘μ€ " + money + "원 μž…λ‹ˆλ‹€.");
    
    /* 2-3. μ‹€μˆ˜ν˜• κ°’ μž…λ ₯ λ°›κΈ° */
    /* nextFloat() : μž…λ ₯받은 값을 float ν˜•μœΌλ‘œ λ°˜ν™˜ν•œλ‹€. */
    /* μ •μˆ˜ ν˜•νƒœλ‘œ μž…λ ₯λ°›μœΌλ©΄ μ‹€μˆ˜λ‘œ λ³€ν™˜ ν›„ 정상 λ™μž‘
    * 길이λ₯Ό 길게 μž…λ ₯ν•˜λ©΄ μ†Œμˆ˜μ  8μ§Έ μžλ¦¬κΉŒμ§€λ§Œ ν‘œν˜„
    * μˆ«μžν˜•νƒœμ˜ 값이 μ•„λ‹Œ 경우 InputMismatchException λ°œμƒ
    * */
    System.out.print("ν‚€λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš” : ");
    float height = sc.nextFloat();
    System.out.println("μž…λ ₯ν•˜μ‹  ν‚€λŠ” " + height + "cm μž…λ‹ˆλ‹€.");
    
    /* nextDouble() : μž…λ ₯받은 값을 double ν˜•μœΌλ‘œ λ°˜ν™˜ν•œλ‹€. */
    /* μ •μˆ˜ ν˜•νƒœλ‘œ μž…λ ₯λ°›μœΌλ©΄ μ‹€μˆ˜λ‘œ λ³€ν™˜ ν›„ 정상 λ™μž‘
    * 길이λ₯Ό 길게 μž…λ ₯ν•˜λ©΄ μ†Œμˆ˜μ  17μ§Έ μžλ¦¬κΉŒμ§€λ§Œ ν‘œν˜„
    * μˆ«μžν˜•νƒœμ˜ 값이 μ•„λ‹Œ 경우 InputMismatchException λ°œμƒ
    * */
    System.out.print("μ›ν•˜λŠ” μ‹€μˆ˜λ₯Ό μž…λ ₯ν•˜μ„Έμš” : ");
    double number = sc.nextDouble();
    System.out.println("μž…λ ₯ν•˜μ‹  μ‹€μˆ˜λŠ” " + number + "μž…λ‹ˆλ‹€.");
    
    /* 2-4. λ…Όλ¦¬ν˜• κ°’ μž…λ ₯λ°›κΈ° */
    /* nextBoolean() : μž…λ ₯받은 값을 booleanν˜•μœΌλ‘œ λ°˜ν™˜ν•œλ‹€.
    * true or false 외에 λ‹€λ₯Έ 값을 μž…λ ₯ν•˜κ²Œ 되면 InputMismatchException λ°œμƒν•¨
    * */
    System.out.print("μ°Έκ³Ό κ±°μ§“ 쀑에 ν•œ κ°€μ§€λ₯Ό true or false둜 μž…λ ₯ν•΄μ£Όμ„Έμš” : ");
    boolean isTrue = sc.nextBoolean();
    System.out.println("μž…λ ₯ν•˜μ‹  논리 값은 " + isTrue + "μž…λ‹ˆλ‹€.");
    
    /* 2-5. λ¬Έμžν˜• κ°’ μž…λ ₯λ°›κΈ° */
    /* μ•„μ‰½κ²Œλ„ 문자λ₯Ό 직접 μž…λ ₯ λ°›λŠ” κΈ°λŠ₯을 μ œκ³΅ν•˜μ§€λŠ” μ•ŠλŠ”λ‹€.
    * λ”°λΌμ„œ λ¬Έμžμ—΄λ‘œ μž…λ ₯을 λ°›κ³ , μž…λ ₯받은 λ¬Έμžμ—μ„œ μ›ν•˜λŠ” 순번째 문자λ₯Ό λΆ„λ¦¬ν•΄μ„œ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.
    * java.lang.String에 charAt(int index)λ₯Ό μ‚¬μš©ν•œλ‹€.
    * indexλ₯Ό μ •μˆ˜ν˜•μœΌλ‘œ μž…λ ₯ν•˜λ©΄ λ¬Έμžμ—΄μ—μ„œ ν•΄λ‹Ή μΈλ±μŠ€μ— μžˆλŠ” ν•œ 문자λ₯Ό 문자 ν˜•μœΌλ‘œ λ°˜ν™˜ν•΄μ£ΌλŠ” κΈ°λŠ₯을 ν•œλ‹€.
    *
    * indexλŠ” 0λΆ€ν„° μ‹œμž‘ν•˜λŠ” 숫자 체계이며 μ»΄ν“¨ν„°μ—μ„œ 주둜 μ‚¬μš©λ˜λŠ” 방식이닀.
    * λ§Œμ•½ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 인덱슀λ₯Ό μž…λ ₯ν•˜κ²Œ 되면 IndexOutOfBoundsException이 λ°œμƒν•œλ‹€.
    * */
    sc.nextLine();

    System.out.print("아무 λ¬Έμžλ‚˜ μž…λ ₯ ν•΄μ£Όμ„Έμš” : ");
    char ch = sc.nextLine().charAt(0);
    System.out.println("μž…λ ₯ν•˜μ‹  λ¬ΈμžλŠ” " + ch + "μž…λ‹ˆλ‹€.");
}

 

2. nextLine()κ³Ό next() ν…ŒμŠ€νŠΈ

public static void main(String[] args) {
    
    /* Scanner의 nextLine()과 next() */
    /* nextLine() : 곡백을 ν¬ν•¨ν•œ ν•œ 쀄을 μž…λ ₯을 μœ„ν•œ κ°œν–‰λ¬Έμž μ „ κΉŒμ§€ μ½μ–΄μ„œ λ¬Έμžμ—΄λ‘œ λ°˜ν™˜ν•œλ‹€. (곡백문자 포함)
    * next() : κ³΅λ°±λ¬Έμžλ‚˜ κ°œν–‰λ¬Έμž μ „ κΉŒμ§€λ₯Ό μ½μ–΄μ„œ λ¬Έμžμ—΄λ‘œ λ°˜ν™˜ν•œλ‹€. (곡백문자 ν¬ν•¨ν•˜μ§€ μ•ŠμŒ)
    * */
    
    /* 1. Scanner 객체 생성 */
    Scanner sc = new Scanner(System.in);
    
    /* 2. λ¬Έμžμ—΄ μž…λ ₯ */
    /* 2-1. nextLine() */
    System.out.print("인사말을 μž…λ ₯ν•΄μ£Όμ„Έμš” : ");
    String greeting1 = sc.nextLine();
   
    System.out.println(greeting1);
    
    /* 2-2. next() */
    System.out.print("인사말을 μž…λ ₯ν•΄μ£Όμ„Έμš” : ");
    String greeting2 = sc.next();
    
    System.out.println(greeting2);
}

 

3. Scanner μ‚¬μš© μ‹œ μ£Όμ˜μ‚¬ν•­ ν…ŒμŠ€νŠΈ (1)

public static void main(String[] args) {
    
    /* μŠ€μΊλ„ˆ 주의 사항 */
    
    /* μŠ€μΊλ„ˆμ˜ next λ©”μ„œλ“œλ“€μ€ μž…λ ₯ν•œ λ‚΄μš©μ„ λ²„νΌλ‘œλΆ€ν„° ν† ν°λ‹¨μœ„λ‘œ λΆ„λ¦¬ν•΄μ„œ μ½μ–΄μ˜¨λ‹€.
    * κ·Έλž˜μ„œ 크게 두 κ°€μ§€ 사항을 μ£Όμ˜ν•΄μ•Ό ν•œλ‹€.
    * 1. next()둜 λ¬Έμžμ—΄ μž…λ ₯ 받은 ν›„ μ •μˆ˜, μ‹€μˆ˜, 논리값 μž…λ ₯ 받을 λ•Œ
    * 2. μ •μˆ˜, μ‹€μˆ˜, 논리값 μž…λ ₯ ν›„ next()둜 λ¬Έμžμ—΄ μž…λ ₯받을 λ•Œ
    * */
    
    /* μŠ€μΊλ„ˆ 객체 생성 */
    Scanner sc = new Scanner(System.in);
    
    /* 1. next()둜 λ¬Έμžμ—΄ μž…λ ₯ 받은 ν›„ μ •μˆ˜, μ‹€μˆ˜, 논리값 μž…λ ₯ 받을 λ•Œ */
    System.out.print("λ¬Έμžμ—΄μ„ μž…λ ₯ν•΄μ£Όμ„Έμš” : ");
    String str1 = sc.next(); 	//κ³΅λ°±μ΄λ‚˜ κ°œν–‰λ¬Έμž μ „ κΉŒμ§€λ₯Ό μ½μ–΄μ˜¨λ‹€.
    System.out.println("str1 : " + str1);
    
    System.out.print("숫자λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš” : ");
    int num1 = sc.nextInt(); 	//μ •μˆ˜ 값을 μ½μ–΄μ˜¨λ‹€.
    System.out.println("num1 : " + num1);
}

β–Ό μ‹€ν–‰ κ²°κ³Ό

λ¬Έμžμ—΄μ„ μž…λ ₯ν•΄μ£Όμ„Έμš” : μ•ˆλ…•
str1 : μ•ˆλ…•
숫자λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš” : 123
num1 : 123

λ¬Έμžμ—΄μ„ μž…λ ₯ν•΄μ£Όμ„Έμš” : μ•ˆλ…•ν•˜μ„Έμš” λ°˜κ°‘μŠ΅λ‹ˆλ‹€
str1 : μ•ˆλ…•ν•˜μ„Έμš”
숫자λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš” : Exception in thread "main" java.util.InputMismatchException
    at java.base/java.util.Scanner.throwFor(Scanner.java:939)
    at java.base/java.util.Scanner.next(Scanner.java:1594)
    at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
    at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
    at com.ohgiraffers.method.Application.main(Application.java:25)

μ—¬κΈ°κΉŒμ§€ μž‘μ„±ν•˜κ³  λ‚˜λ©΄ μ½”λ“œ μž‘μ„± μ‹œμ—(compile μ‹œ)λŠ” 문제 λ˜μ§€ μ•ŠλŠ”λ‹€.

처음 μ‹€ν–‰ν•  λ•Œ λ¬Έμžμ—΄μ— "μ•ˆλ…•"이라고 μž…λ ₯ν•˜κ³  μ •μˆ˜λ₯Ό μž…λ ₯ν•˜λ©΄ μ •μƒμ μœΌλ‘œ λ™μž‘ν•œλ‹€.

ν•˜μ§€λ§Œ, "μ•ˆλ…•ν•˜μ„Έμš” λ°˜κ°‘μŠ΅λ‹ˆλ‹€" μž…λ ₯ν•˜λ©΄ λ™μž‘ μ‹œ(Runtime) 숫자λ₯Ό μž…λ ₯ν•˜κΈ°λ„ 전에 InputMismatchException이 λ°œμƒν•œλ‹€.

 

ν•΄λ‹Ή Exception이 μ–Έμ œ λ°œμƒν–ˆμ„κΉŒ? μ •μˆ˜λ₯Ό μž…λ ₯ν•΄μ•Ό ν•˜λŠ”λ° 숫자λ₯Ό μž…λ ₯ν•˜μ§€ μ•Šμ€ κ²½μš°μ˜€λ‹€.

근데 아무것도 μž…λ ₯ μ•ˆ ν–ˆλŠ”λ° μ™œ λ°œμƒν–ˆμ„κΉŒ?

 

"μ•ˆλ…•ν•˜μ„Έμš” λ°˜κ°‘μŠ΅λ‹ˆλ‹€" ← μž…λ ₯ μ‹œ 곡백을 κΈ°μ€€μœΌλ‘œ 두 개의 토큰 "μ•ˆλ…•ν•˜μ„Έμš”"와 "λ°˜κ°‘μŠ΅λ‹ˆλ‹€"둜 뢄리가 λœλ‹€. next()λŠ” λ‹€μŒ 토큰인 "μ•ˆλ…•ν•˜μ„Έμš”"λ₯Ό μ½μ—ˆκ³ , nextInt()λŠ” λ‹€μŒ 토큰을 μ •μˆ˜λ‘œ 읽어야 ν•˜λŠ”λ° "λ°˜κ°‘μŠ΅λ‹ˆλ‹€"κ°€ λ‚˜μ™”λ‹€. μ •μˆ˜λ₯Ό μž…λ ₯ν•΄μ•Ό ν•˜λŠ”λ° "λ°˜κ°‘μŠ΅λ‹ˆλ‹€"λ₯Ό 읽으면 λ‹Ήμ—°νžˆ InputMismatchException이 λ°œμƒν•œλ‹€.

 

곡백이 μžˆλŠ” λ¬Έμžμ—΄μ„ 받을 κ±°λ©΄ nextLine()을 μ΄μš©ν•˜μž.

ν˜Ήμ€ μž…λ ₯받은 버퍼λ₯Ό 쀄 λ‹¨μœ„λ‘œ 토큰을 λΆ„λ¦¬ν•˜κΈ° λ•Œλ¬Έμ— ν•΄λ‹Ή 라인의 토큰을 λ‹€ 읽고 λ‹€μŒ μ€„λ‘œ μ΄λ™μ‹œν‚€κ³  싢을 λ•ŒλŠ”

ν•œ 라인의 λͺ¨λ“  토큰을 μ½μ–΄μ˜€λŠ” sc.nextLine(); ν˜ΈμΆœμ„ 쀑간에 ν•œ 번 λ„£μ–΄μ€˜λ„ 해결은 λœλ‹€.

 

4. Scanner μ‚¬μš© μ‹œ μ£Όμ˜μ‚¬ν•­ ν…ŒμŠ€νŠΈ (2)

public static void main(String[] args) {

    /* μŠ€μΊλ„ˆ 주의 사항 */
    /* μŠ€μΊλ„ˆμ˜ next λ©”μ„œλ“œλ“€μ€ μž…λ ₯ν•œ λ‚΄μš©μ„ λ²„νΌλ‘œλΆ€ν„° ν† ν°λ‹¨μœ„λ‘œ λΆ„λ¦¬ν•΄μ„œ μ½μ–΄μ˜¨λ‹€.
    * κ·Έλž˜μ„œ 크게 두 κ°€μ§€ 사항을 μ£Όμ˜ν•΄μ•Ό ν•œλ‹€.
    * 1. next()둜 λ¬Έμžμ—΄ μž…λ ₯ 받은 ν›„ μ •μˆ˜, μ‹€μˆ˜, 논리값 μž…λ ₯ 받을 λ•Œ
    * 2. μ •μˆ˜, μ‹€μˆ˜, 논리값 μž…λ ₯ ν›„ nextLine()둜 λ¬Έμžμ—΄ μž…λ ₯받을 λ•Œ
    * */
    
    /* μŠ€μΊλ„ˆ 객체 생성 */
    Scanner sc = new Scanner(System.in);
    
    /* 2. μ •μˆ˜, μ‹€μˆ˜, 논리값 μž…λ ₯ ν›„ nextLine()둜 λ¬Έμžμ—΄ μž…λ ₯받을 λ•Œ */
    System.out.print("λ‹€μ‹œ 숫자λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš” : ");
    int num2 = sc.nextInt();
    System.out.println("num2 : " + num2);
    
    System.out.print("곡백이 μžˆλŠ” λ¬Έμžμ—΄μ„ ν•˜λ‚˜ μž…λ ₯ν•΄μ£Όμ„Έμš” : ");
    
    String str2 = sc.nextLine();
    System.out.println("str2 : " + str2);
}

β–Ό μ‹€ν–‰ κ²°κ³Ό

λ‹€μ‹œ 숫자λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš” : 12
num2 : 12
곡백이 μžˆλŠ” λ¬Έμžμ—΄μ„ ν•˜λ‚˜ μž…λ ₯ν•΄μ£Όμ„Έμš” : str2 :

μ‹€ν–‰ν•΄ 보면 두 번째 μž…λ ₯을 λ°›κΈ° 전에 λ°”λ‘œ λ‹€μŒ 쀄을 좜λ ₯ν•΄ 버린닀.

μ•žμ—μ„œ 남긴 κ°œν–‰μ„ nextLine()이 읽고 λ„˜μ–΄κ°€μ„œ μž…λ ₯ μ „ ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œλœλ‹€.

ν•΄κ²°ν•˜λŠ” 방법은 κ°œν–‰μ„ 받아쀄 nextLine()을 ν•œ 쀄 더 λͺ…μ‹œν•΄ 쀌으둜 버퍼λ₯Ό λΉ„μš°λ©΄ λœλ‹€.

public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);
    
    System.out.print("λ‹€μ‹œ 숫자λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš” : ");
    int num2 = sc.nextInt();
    System.out.println("num2 : " + num2);
    
    System.out.print("곡백이 μžˆλŠ” λ¬Έμžμ—΄μ„ ν•˜λ‚˜ μž…λ ₯ν•΄μ£Όμ„Έμš” : ");
    
    sc.nextLine(); 			// 이 뢀뢄을 μΆ”κ°€ν•΄μ€€λ‹€.
    
    String str2 = sc.nextLine();
    System.out.println("str2 : " + str2);
}

β–Ό μ‹€ν–‰ κ²°κ³Ό

λ‹€μ‹œ 숫자λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš” : 13
num2 : 13
곡백이 μžˆλŠ” λ¬Έμžμ—΄μ„ ν•˜λ‚˜ μž…λ ₯ν•΄μ£Όμ„Έμš” : qwerty
str2 : qwerty

 

  1. πŸš€ λ©”μ„œλ“œ
  2. ⭐ λ©”μ„œλ“œ κ°œμš”
  3. ⭐ λ©”μ„œλ“œ ν™œμš©
  4. πŸš€ νŒ¨ν‚€μ§€(Package)
  5. ⭐ νŒ¨ν‚€μ§€ κ°œμš”
  6. ⭐ νŒ¨ν‚€μ§€ 확인
  7. πŸš€ μž„ν¬νŠΈ(Import)
  8. ⭐ μž„ν¬νŠΈ κ°œμš”
  9. ⭐ μž„ν¬νŠΈ 확인
  10. πŸš€ API
  11. ⭐ API κ°œμš”
  12. ⭐ Math 클래슀
  13. ⭐ Scanner 클래슀
'Java' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [Java] μ—°μ‚°μž
  • [Java] μƒμˆ˜ & μ˜€λ²„ν”Œλ‘œμš° & ν˜•λ³€ν™˜
  • [Java] λ¦¬ν„°λŸ΄ & λ³€μˆ˜
만 제
만 제
BackEnd Developer
만 제
fakerdeft.dev
만 제
전체
였늘
μ–΄μ œ
  • 전체 κΈ€ 보기 (17)
    • Java (4)
    • Servlet (1)
    • Spring (0)
    • Spring Boot (4)
    • Spring Security (2)
    • 배포 (1)
    • μ„±λŠ₯ ν…ŒμŠ€νŠΈ (2)
    • Trouble Shooting (3)

λΈ”λ‘œκ·Έ 메뉴

  • GitHub
  • λ°©λͺ…둝

곡지사항

  • μ•ˆλ…•?

인기 κΈ€

νƒœκ·Έ

  • λΆ€ν•˜ ν…ŒμŠ€νŠΈ
  • JPA
  • spring boot
  • trouble shooting
  • Java
  • SSE
  • μ„±λŠ₯ ν…ŒμŠ€νŠΈ
  • servlet
  • Spring Security

졜근 λŒ“κΈ€

졜근 κΈ€

hELLO Β· Designed By μ •μƒμš°.v4.2.2
만 제
[Java] λ©”μ„œλ“œ & API
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”

κ°œμΈμ •λ³΄

  • ν‹°μŠ€ν† λ¦¬ ν™ˆ
  • 포럼
  • 둜그인

단좕킀

λ‚΄ λΈ”λ‘œκ·Έ

λ‚΄ λΈ”λ‘œκ·Έ - κ΄€λ¦¬μž ν™ˆ μ „ν™˜
Q
Q
μƒˆ κΈ€ μ“°κΈ°
W
W

λΈ”λ‘œκ·Έ κ²Œμ‹œκΈ€

κΈ€ μˆ˜μ • (κΆŒν•œ μžˆλŠ” 경우)
E
E
λŒ“κΈ€ μ˜μ—­μœΌλ‘œ 이동
C
C

λͺ¨λ“  μ˜μ—­

이 νŽ˜μ΄μ§€μ˜ URL 볡사
S
S
맨 μœ„λ‘œ 이동
T
T
ν‹°μŠ€ν† λ¦¬ ν™ˆ 이동
H
H
단좕킀 μ•ˆλ‚΄
Shift + /
⇧ + /

* λ‹¨μΆ•ν‚€λŠ” ν•œκΈ€/영문 λŒ€μ†Œλ¬Έμžλ‘œ 이용 κ°€λŠ₯ν•˜λ©°, ν‹°μŠ€ν† λ¦¬ κΈ°λ³Έ λ„λ©”μΈμ—μ„œλ§Œ λ™μž‘ν•©λ‹ˆλ‹€.