블로그 이미지
하루, 글. 그림. 영상매체. 표현을 도와주는 기기들. 도전 중. 동화다아아
    동화다아아

    카테고리

    분류 전체보기 (176)
    잡담 (1)
    IT 기기-리뷰&뉴스 (7)
    리뷰 - 도서 (1)
    리뷰 - 영상 (0)
    리뷰 - 그림/음악 (1)
    내장형 하드웨어 (163)
    Total
    Today
    Yesterday

    - 인수로서의 배열

    ⇒ 메소드의 호출시 배열의 원소나 배열 전체가 인수로써 사용될 수 있다. 배열은 객체임으로 인수로 전달될 때는 배열의 참조변수가 인수가 된다. 다른 객체의 경우와 마찬가지로 참조전달 호출이 된다.

    ⇒ 피호출 메소드는 참조변수의 값은 바꿀 수 없지만, (값 전달 호출)   배열 객체의 값은 참조변수를 통해서 변경할 수 있다.

     → 배열의 원소가 인수일 경우에는   배열이 기본 자료형이면 값 전달 호출이 되고,   

     → 배열의 원소가 객체일 경우에는 참조전달 호출이 된다.


    // 정수 배열의 원소를 메소드 호출의 인수로 넘겨주는 프로그램
    public
     class SendPremitiveElement
    {
      public static void main(String[] args)
      {
        int[] list = {13579};
        PremitiveElementPassing mouse = new PremitiveElementPassing();
        // 배열 자체가 객체이므로(배열 객체) 객체 참조 변수로 인자를 받아야 한다.
        // 
        printList("list at the beginning: ", list);
        mouse.multiplyTen(list[2]);
        printList("list at the end: ", list);
      }
      // 함수가 호출을 위해 static으로 되어 있다.
      // 객체 참조 변수로 배열을 인자로 받는다.
      public static void printList(String comment, int[] aList)
      {
        System.out.print(comment);
        for(int i=0; i<aList.length; ++i)
        {
          System.out.print("\t" + aList[i]);    
        }
        System.out.println();
      }
    }
    class PremitiveElementPassing
    {
      public void multiplyTen(int number)
      {
        System.out.println("number at the beginning of multiplyTen : "  + number);
        number = number * 10;
        System.out.println("number at the end of multiplyTen : " + number);  
      }
    }

    ⇒ 출력 결과



    // 정수 배열을 메소드 호출의 인수로 넘겨서 배열의 원소값을 바꾸는 프로그램
    class
     SendArrayReference
    {
      public static void main(String[] args)
      {
        int[] list = {13579};
        ArrayPassing mouse = new ArrayPassing();
        printList("list at the beginning of main() : ", list);
        mouse.multiplyHundred(list);
        printList("list at the end of main() : ", list);
      }
      public static void printList(String comment, int[] aList)
      {
        System.out.print(comment);
        for(int i=0; i<aList.length; ++i)
        {
          System.out.print("\t" + aList[i]);
        }
        System.out.println();
      }
    }
    class ArrayPassing
    {
      // 참조 전달
      public void multiplyHundred(int[] aList)
      {
        for(int i=0; i<aList.length; ++i)
        {
          aList[i] = aList[i] * 100;
        }
      }
    }

    ⇒ 출력 결과



    - main (String[] args) 메소드의 인수
     main() 메소드의 인수는 String 클래스의 배열이다.
    프로그램 실행시 명령어 라인(command line)의 인수를 문자열 배열로 받아들인다 명령어 라인의 첫번째 인수는 args[0]에 저장되고, 두번째 인수는 args[1]에 저장된다.
    // main 인자 테스트
    import
     java.util.*;

    class emb
    {
      public static void main(String[] test)
      {
        System.out.println(test.length);      
        for(int i=0; i <test.length; ++i)
        {
          System.out.println("[" + i + "] : " + test[i]);
        }
      }
    }



    - 5.2.10 다차원 배열
    ⇒ 지금까지의 배열은 데이타를 일직선상으로 배치한 1차원적인 개념으로 보았다.
    자바에서는 이 개념을 확장시켜 일반화한 다차원 배열을 지원한다.
    2차원 배열은 배열의 각 원소 자체가 배열인 1차원 배열이다. 2차원 배열의 색인은 두 개의 대괄호로 나타낸다.

    // 2차원 배열을 출력하는 프로그램
    class
     TwoDemenstionalArray
    {
      public static void main(String[] args)
      {
        Matrix horse = new Matrix();
        horse.print();
      }
    }
    class Matrix
    {
      int[][] matrix = {{15161718},
          {232425},
          {37},
          {4142434445}};
      public void print()
      {
        System.out.println(matrix.length);    
        for(int row=0; row<matrix.length; ++row)
        {
          // 열(row)의 길이는 다를 수 있다.
          for(int column=0; column<matrix[row].length; column++)
          {
            System.out.print(matrix[row][column] + "\t");
          }
          System.out.println();
        }
      }
    }

    ⇒ 출력 결과



    - StringTokenizer 클래스

    ⇒ StringTokenizer 클래스는 문자열을 각 단어로 분리하는 메소드를 가지고 있다. (각 단어를 토큰:token)) ⇒ java.util 패키지에 정의되어 있으며, 문자열 내의 각 단어는 단락문자(delimiter character)로 분리된다. ⇒ 단락문자로는 공백문자(space character), 탭문자(tab character), 개행문자(new line character: '\n'),
    캐리지 리턴(carriage return: '\r') 이 있다.
    ⇒ StringTokenizer (String string)
    ⇒ 
    StringTokenizer (String string, String delimiter)
    문자열 인수 delimiter 내에 있는 문자를 단락문자로 지정한다.
    ⇒ 
    StringTokenizer (String string, String delimiter, boolean bool)
    인수 bool이 ture이면 인수 delimiter 내의 문자도 토큰으로 반환한다.
    ⇒ 
    int countTokens()
    문자열 내의 토큰의 개수를 검사한다.
    ⇒ 
    boolean hasMoreElements() boolean hasMoreTokens()
    문자열내 토큰이 더 남아 있는지 검사한다.
    ⇒ 
    Object nextElement() String nextToken()
    문자열내 다음 토큰을 검색한다.
    ⇒ 
    String nextToken (String delimiter)
    새로운 단락문자를 delimiter 내의 문자로 정의하고, 다음 토큰을 검색한다.
    ⇒  예제


     // StringTokenizer 클래스의 객체를 다루는 예제 프로그램
    import
     java.util.*;

    public class MakingToken
    {
      static String testString  = "This is a test string. You'll see the tokens.";

      public static void main(String[] args)
      {
        // 문자열 인수 delimiter가 없으므로 디폴트 값인 공백으로 단락 구분
        StringTokenizer stringA = new StringTokenizer(testString);
        // 인수 bool이 true이면 인수 delimiter 내의 문자도 토큰으로 반환
        // 개행문자, 캐리지리턴, 탭문자, 마침표, 공백문자, 외따옴표를 
        // 단락문자로 지정하고, 단락문자도 하나의 토큰으로 반환한다. 
        StringTokenizer stringB = new StringTokenizer(testString, "\n\r\t. \'"true);
        int i=0;
        System.out.println("List of token from stringA");
        // .hasMoreTokens() => 문자열 내에 토큰이 남아있는지 조사한다.
        while(stringA.hasMoreTokens())
        {
          if(0 == i%5)
          {
            System.out.println();
          }
          // .nextToken() => 다음 토큰을 검색한다.
          System.out.print(i++ + ">" + stringA.nextToken() + "\n");
        }
        i=0;
        System.out.println("\n\nList of token from stringB");
        while(stringB.hasMoreTokens())
        {
          if(0 == i%5)
          {
            System.out.println();
          }
          System.out.print(i++ + ">" + stringB.nextToken() + "\n");
        }
      }
    }

    ⇒ 출력 결과




     
    Posted by 동화다아아
    , |

    최근에 달린 댓글

    최근에 받은 트랙백

    글 보관함