yoni

[26][OOP] Static method, Wrapper class(Integer...), Scanner class 본문

java of educational by contents

[26][OOP] Static method, Wrapper class(Integer...), Scanner class

yoni-1117 2018. 12. 8. 19:19

(0)oop (1).zip

[01] Static field(변수), Static method(함수)
      - 일반적인 클래스는 new를 이용하여 메모리를 할당해서 사용하나, 
        static 요소들은 클래스의 코드가 JVM에 인식될때(호출될때) new 없이
        자동으로 메모리가 할당됨.
      - new를 이용하여 객체를 만들지 않고 변수나 메소드의 사용이 가능합니다. 
      - 보통 간단한 값의 처리시 주로 이용합니다. 
      - static 변수는 자동으로 할당된 메모리를 다른 객체와 계속 공유합니다.
      - class 변수 또는 class 메소드라고 함.

        예)
        int pay = Integer.parseInt(args[0]); // 문자열을 정수로 변환

        double ija = Double.parseDouble(scan.nextLine());
        flaot per = Float.parseFloat(scan.nextLine());
 

        public static void main(String[] args) { ... } // 지정된 최초 호출 메소드

        public class StaticTest{
          static int eng = 0; <-- 자동으로 메모리 할당이되어 접근 가능
          int kor = 0;         <-- 인스턴스 변수, new 명령어로 메모리 할당
        }    


1. static 필드의 출력, Wrapper class(Integer, Double...)의 static method 사용


[실행화면] 

함박눈
----------------------
함박눈
null
----------------------
함박눈
null
----------------------
첫눈
null
----------------------
50000
11111100001
2017
2019

     
▷ oop4.Wrapper.java

-------------------------------------------------------------------------------------
package oop4;
 
class Winter {
  static String snow; // class 변수, 1회만 메모리 할당을 받고 공유됨.
  String rain;    // instance variable, new  명령어 실행시 계속 새로운 메모리 생성
}
 
public class Wrapper {
 
  public static void main(String[] args) {
     Winter.snow = "함박눈";//사용하는 순간 메모리 할당
    // Winter.rain = "";//class Winter에서 sta



tic을 쓰지 않아서 에러가남
    //static은 메모리를 계속 점유
    System.out.println(Winter.snow);
    
    System.out.println("----------------------");
    
    Winter winter = new Winter();    // 객체 생성
    
    // The static field Winter.snow should be accessed in a static way
    System.out.println(winter.snow); // 공유 변수
    System.out.println(winter.rain);   // null
    
    System.out.println("----------------------");
    
    Winter winter2 = new Winter();    // 객체 생성
    System.out.println(Winter.snow); // 공유 변수
    System.out.println(winter2.rain);   // null
    
    System.out.println("----------------------");
    
    Winter.snow = "첫눈";
    Winter winter3 = new Winter();    // 객체 생성
    System.out.println(Winter.snow);   // 공유 변수
    System.out.println(winter3.rain);   // null
    
    System.out.println("----------------------");
    
    // static method
    int price = Integer.parseInt("35000"); // static method
    price = price + 15000;
    System.out.println(price);
    
    String bin = Integer.toBinaryString(2017);
    System.out.println(bin);
    
    Integer itg = new Integer(2017);
    int pre = itg; // JDK 1.5 부터 지원, 객체를 원시 타입에 할당시 값만 자동 추출됨.
    System.out.println(pre);
    
    Integer itg2 = 2019; // 단순 숫자가 객체로 변경됨
    System.out.println(itg2);
    
  }
 
}
 
 
 
-------------------------------------------------------------------------------------
 
 

 
[02] Scanner class 
     - Scanner: 자바 실행중에 필요실 Keyboard 입력 지원, JDK 1.5 이후 지원 
     - System.in: 표준 입력 장치, 키보드
     - System.out: 표준 출력 장치, 모니터


   


1. 키보드 입력의 처리 

[실행 화면]


/ws_java/oop4/bin>java oop4.InputTest
java               ← String
1) java
2016              ← int
2) 2016
50000000000   ← long
3) 50000000000
1.25               ← float  
4) 1.25
10.5               ← double 
5) 10.5
 

▷ oop4.InputTest.java  
-------------------------------------------------------------------------------------

package oop4;
 
import java.util.Scanner;
 
public class InputTest {
 
  public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    String str = scan.next(); // 단어 입력
    System.out.println("1) " + str);
    
    int year = scan.nextInt(); // 하나의 정수 입력
    System.out.println("2) " + year);
    
    long sale = scan.nextLong();
    System.out.println("3) " + sale);
    
    float ft = scan.nextFloat(); // f 생략
    System.out.println("4) " + ft);
    
    double db = scan.nextDouble();
    System.out.println("5) " + db);
    
    scan.close();  // 메모리 해제
  }
}
 
 
-------------------------------------------------------------------------------------

 
 
2. 문장 입력 처리 
   - int 입력후 메모리상에 'Enter' 키값이 남아있어 nextLine()전에 nextInt()등이
     있으면 안됩니다.
     nextLine()은 'Enter'가 입력되면 문장입력이 완료된것으로 판단하여 다음 실행할
     코드로 진행합니다. 
   - 입력의 흐름
      Keyboard -> 키보드 메모리 버퍼 -> Windows OS -> 자바 JVM 메모리(버퍼) 
   - int sano = Integer.parseInt(scan.nextLine()) 코드를 통하여 문장을 입력받은 후 
     필요한 타입으로 형변환하여 사용합니다.


[실행 화면] 
사원 번호: 1

희망 직무: 자바 웹 개발
--------------------------
1
자바 웹 개발
 

▷ oop4.InputTest2.java  

-------------------------------------------------------------------------------------
package oop4;
 
import java.util.Scanner;
 
public class InputTest2 {
 
  public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    System.out.print("사원 번호: ");
    // int sano = scan.nextInt(); // 정수: 정수 + Enter
    
    int sano = Integer.parseInt(scan.nextLine()); // 문장 -> 필요한 정수 타입으로 변경
    
    System.out.print("희망 직무: ");
    String job = scan.nextLine(); // 문장 입력, Enter 입력시 인력 완료 인식
    
    System.out.println(sano);
    System.out.println(job);
 
  }
 
}
 
 
 
 
-------------------------------------------------------------------------------------


Comments