Language/JAVA [JAVA] 기본 문법
  • 728x90
    반응형

     

     

     

     

    배열 과 반복문

    JAVA 에서는 배열의 내용을 탐색할 때 for 문을 좀더 간편하게 사용할 수 있는 방법이 있다. JAVA 5.0 부터 도입이된 기능이다.

     

    package test;
    
    public class Helloworld {
        public static void main(String[] args) 
        {        
            String[] str = {"1", "2", "3", "4", "5"};
            
            for(String e : str)
            {
                System.out.println(e);
            }
        }
    }

     

     

    메소드의 사용법

    메소드는 C 에서 함수 사용법과 유사하며 사용방법은 아래와 같다.

     

    package test;
    
    import java.io.*;
    
    public class Helloworld {
        public static void main(String[] args) 
        {        
            String result = numbering(1, 21);
            System.out.println(result);
            
            try
            {
                BufferedWriter out = new BufferedWriter(new FileWriter("out.txt"));
                out.write(result);
                out.close();
            }
            catch(IOException e){
            }
        }
        
        public static String numbering(int init, int limit)
        {
            String outPut = "";
            int i = init;
            while(i < limit)
            {
                System.out.println(i);
                outPut += i;
                i++;
            }
            
            return outPut;
        }
    }

     

     

     

    JAVA 입력

    아래와 같은 코드를 consol 환경에서 입력값을 주고 실행하는 방법은 아래와 같다.

     

    package test;
    
    public class Helloworld {
        public static void main(String[] args) 
        {
            for(String e : args) {
                System.out.println(e);
            }    
        }
    }

     

    D:\workspace\JAVA\test> java -cp bin test.Helloworld 1 2 3 41234

     

    🎯 앱이 실행중에 입력 받기

    package test;
    
    import java.util.Scanner;
    
    public class Helloworld {
        public static void main(String[] args) 
        {
            Scanner sc = new Scanner(System.in);
            int i = sc.nextInt();
            System.out.println(i * 1000);
            sc.close();
        }
    }

    Console입력 : 5

    결과 : 5000

     

    Scanner API는 nextInt()메소드를 통해 정수를 입력받는다.

    위 코드를 반복문을 사용하여 반복해서 입력받을 수 있도록 하는 코드는 아래와 같다.

    package test;
    
    import java.util.Scanner;
    
    public class Helloworld {
        public static void main(String[] args) 
        {
            Scanner sc = new Scanner(System.in);
            while(sc.hasNextInt())
            {
                System.out.println(sc.nextInt() * 1000);
            }
            
            sc.close();
        }
    }

     

    hasNextInt() 메소드는 정수를 입력 받으면 true를 리턴하고, 문자나 기호를 입력받으면 false를 리턴한다.

     

    위 코드의 입력값을 out.txt 파일을 사용하였을때 코드는 아래와 같다.

     

    package test;
    
    import java.io.FileNotFoundException;
    import java.util.Scanner;
    import java.io.*;
    
    public class Helloworld {
        public static void main(String[] args) 
        {
            try
            {
                File file = new File("out.txt");
                Scanner sc = new Scanner(file);
                
                while(sc.hasNextInt())
                {
                    System.out.println(sc.nextInt() * 1000);
                }
            
                sc.close();
            }
            catch(FileNotFoundException e)
            {
                e.printStackTrace();
            }
        }
    }

     

    Consol 실행 결과 :

    D:\workspace\JAVA\test> cat.\out.txt1234

    D:\workspace\JAVA\test> java -cp bin test.Helloworld1234000

     

     

     

    클래스 맴버와 인스턴스 맴버

    static으로 선언된 double PI변수는 모든 인스턴스에서 동일한 값을 가지는 클래스 맴버 변수 이다.

     

    int left, right는 인스턴스마다 다른 값을 가지게 되는 인스턴스 맴버 변수 이다.

     

    클래스 맴버 변수는 클래스 NAME 으로 접근할 수 도 있고, 인스턴스를 통해(Warning) 접근할 수도 있다.

     

    package test;
    
    class Calculator {
        final static double PI = 3.14;
        int left, right;
        
        public void setOprands(int left, int right)    {
            this.left = left;
            this.right = right;
        }
        
        public int sum() {
            return this.left + this.right;
        }
        
        public int avr() {
            return (this.left + this.right) / 2;
        }
        
        public static int sum(int left, int right) {
            return left + right;
        }
    }
    
    public class Helloworld {
        public static void main(String[] args) 
        {
            Calculator cal1 = new Calculator();
            
            cal1.setOprands(10, 20);        
            System.out.println(cal1.sum());
            System.out.println(cal1.avr());        
            
            Calculator cal2 = new Calculator();
            
            cal2.setOprands(20, 40);
            System.out.println(cal2.sum());
            System.out.println(cal2.avr());        
            
            System.out.println(Calculator.PI);
            System.out.println(Calculator.sum(10, 20));
        }
    }

     

    클래스 변수의 용도를 정리해보면 아래와 같다.

     

    • 인스턴스에 따라서 변하지 않는 값이 필요한 경우 (위의 예에서는 PI) (이런경우 final을 이용해서 상수로 선언하는 것이 바람직하다.)
    • 인스턴스를 생성할 필요가 없는 값을 클래스에 저장하고 싶은 경우
    • 값의 변경 사항을 모든 인스턴스가 공유해야 하는 경우

     

    1. 인스턴스 메소드는 클래스 맴버에 접근할 수 있다.
    2. 클래스 메소드는 인스턴스 맴버에 접근할 수 없다.

     

    인스턴스 변수는 인스턴스가 만들어지면서 생성되는데, 클래스 메소드는 인스턴스가 생성되기 전에 만들어지기 때문에 클래스 메소드가 인스턴스 멤버에 접근하는 것은 존재하지 않는 인스턴스 변수에 접근하는 것과 같다.

     

     

     

    용어

    인스턴스 변수와 클래스 변수는 아래와 같이 부르기도 한다.

     

    • 인스턴스 변수 → Non-Static Field
    • 클래스 변수 → Static Filed

     

    필드(field)라는 것은 클래스 전역에서 접근 할 수 있는 변수를 의미한다.

     

     

    728x90
    반응형

    'Language > JAVA' 카테고리의 다른 글

    [JAVA] 접근제어자  (0) 2018.06.12
    [JAVA] 초기화 및 생성자  (0) 2018.06.11
    [JAVA] 데이터 타입  (0) 2018.05.28
    [JAVA] 설치 및 실행  (0) 2018.05.28
상단으로