숫자, 문자열 및 배열

JavaBeginner
지금 연습하기

소개

Java 및 기타 객체 지향 언어에서 객체는 일련의 메서드와 함께 제공되는 관련 데이터의 모음입니다. 이러한 메서드는 객체에 대해 작동하여 계산을 수행하고 때로는 객체의 데이터를 수정합니다. 여기서는 세 가지 간단하지만 중요한 Java 내장 객체 유형인 Number, String 및 Array 를 소개합니다.

숫자

기본적으로 byte, int, double 등과 같은 기본 숫자 유형을 사용합니다. 그러나 때로는 기본 데이터 유형 대신 객체를 사용해야 합니다. Java 는 기본 데이터 유형에 대한 래퍼 클래스를 제공합니다. 이들은 Byte, Short, Long, Integer, Double, Float 등입니다. 래퍼 객체는 다시 기본 데이터 유형으로 변환될 수 있습니다. 이 프로세스를 **언박싱 (unboxing)**이라고 합니다. Number 클래스는 java.lang 패키지의 일부입니다. 패키지는 나중에 다룰 것입니다.

다음은 Number 클래스의 하위 클래스가 구현하는 몇 가지 일반적인 클래스 메서드 목록입니다.

  • xxxValue(): 이 Number 객체의 값을 xxx 데이터 유형으로 변환하여 반환합니다.
  • compareTo(): 이 Number 객체를 인자와 비교합니다.
  • equals(): 이 Number 객체가 인자와 같은지 여부를 결정합니다.
  • valueOf(): 지정된 기본형의 값을 포함하는 Integer 객체를 반환합니다.
  • toString(): 지정된 int 또는 Integer 의 값을 나타내는 String 객체를 반환합니다.
  • parseInt(): 이 메서드는 특정 String 값에서 기본 int 유형을 가져오는 데 사용됩니다.
  • abs(): 인수의 절대값을 반환합니다.
  • ceil(): 인자보다 크거나 같은 가장 작은 정수를 반환합니다. double 로 반환됩니다.
  • floor(): 인자보다 작거나 같은 가장 큰 정수를 반환합니다. double 로 반환됩니다.
  • pow(): 첫 번째 인수를 두 번째 인수의 거듭제곱으로 올린 값을 반환합니다.
  • round(): 메서드의 반환 유형에 따라 인자에 가장 가까운 long 또는 int 를 반환합니다.

예시:

다음 코드를 /home/labex/project/numberTest.java 파일에 작성하십시오.

public class numberTest
{
    public static void main(String[] args){
        Integer x = 1;    // boxes int to an Integer object
        x = x + 1;        // unboxes the Integer to an int
        System.out.println(Integer.parseInt("10"));  // parse int from a string
        System.out.println( "x = " + x);
    }
}

출력:

다음 명령을 사용하여 numberTest.java 파일을 실행합니다.

javac /home/labex/project/numberTest.java
java numberTest

출력을 확인하십시오.

10
x = 2

문자열

String 은 객체이므로 다음과 같은 질문을 할 수 있습니다. “String 객체에 포함된 데이터는 무엇인가요?” 그리고 “String 객체에서 호출할 수 있는 메서드는 무엇인가요?” String 객체의 구성 요소는 문자입니다. 모든 문자가 문자는 아닙니다. 일부는 숫자이고, 일부는 특수 기호이며, 나머지는 다른 종류의 문자입니다. 간단하게, 우리는 이 모든 것을 문자라고 부릅니다. String 클래스에는 많은 문자열 메서드가 있지만, 그 중 몇 가지만 사용합니다. 나머지는 공식 웹사이트의 문서를 참조할 수 있습니다.

참고: String 클래스는 불변 (immutable) 이므로, 일단 생성된 String 객체는 수정할 수 없습니다. 문자열에 많은 수정을 해야 할 필요가 있다면, StringBufferStringBuilder 클래스를 사용해야 합니다.

다음은 String, StringBufferStringBuilder 클래스의 몇 가지 일반적인 메서드 목록입니다.

  • char charAt(int index): index 인수로 표시된, 현재 문자열 버퍼가 나타내는 시퀀스의 지정된 문자가 반환됩니다.
  • void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin): 문자가 이 문자열 버퍼에서 대상 문자 배열 dst로 복사됩니다.
  • int indexOf(String str): 이 문자열 내에서 지정된 부분 문자열이 처음 나타나는 인덱스를 반환합니다.
  • int indexOf(String str, int fromIndex): 지정된 인덱스에서 시작하여, 이 문자열 내에서 지정된 부분 문자열이 처음 나타나는 인덱스를 반환합니다.
  • int lastIndexOf(String str): 이 문자열 내에서 지정된 부분 문자열이 가장 오른쪽에 나타나는 인덱스를 반환합니다.
  • int lastIndexOf(String str, int fromIndex): 지정된 인덱스에서 시작하여 뒤로 검색하여, 이 문자열 내에서 지정된 부분 문자열이 마지막으로 나타나는 인덱스를 반환합니다.
  • int length(): 이 문자열 버퍼의 길이 (문자 수) 를 반환합니다.
  • String substring(int start): 현재 이 StringBuffer에 포함된 문자 시퀀스의 하위 시퀀스를 포함하는 새 String 을 반환합니다. 부분 문자열은 지정된 인덱스에서 시작하여 StringBuffer의 끝까지 확장됩니다.
  • String substring(int start, int end): 현재 이 StringBuffer에 포함된 문자 시퀀스의 하위 시퀀스를 포함하는 새 String을 반환합니다.

예시:

다음 코드를 /home/labex/project/stringTest.java 파일에 작성하십시오.

public class stringTest
{
    public static void main(String[] args){
        String greeting = "Hello world!";
        String hello = new String("Hello !");
        System.out.println("greeting is: "+ greeting);
        System.out.println("hello is: "+ hello);
        System.out.println("length of greeting: " + greeting.length());
        System.out.println("first char of greeting: " + greeting.charAt(0));
        System.out.println("index of 'e' in hello: "+ hello.indexOf('e'));
        System.out.println("substring of greeting: "+ greeting.substring(6));  //substr: world

    }
}

출력:

다음 명령을 사용하여 stringTest.java 파일을 실행합니다.

javac /home/labex/project/stringTest.java
java stringTest

출력을 확인하십시오.

greeting is: Hello world!
hello is: Hello !
length of greeting: 12
first char of greeting: H
index of 'e' in hello: 1
substring of greeting: world!

배열

배열 구조는 데이터 모음을 저장하는 데 사용되지만, 배열을 단일 유형의 변수 모음으로 생각하는 것이 더 유용합니다. number0, number1, ..., number99와 같은 개별 변수를 선언하는 대신, 하나의 배열 변수 numbers를 선언하고 numbers[0], numbers[1], ..., numbers[99]를 사용하여 개별 변수를 나타냅니다. 배열의 첫 번째 요소는 인덱스 0에 있습니다.

다음은 배열이 가지고 있는 몇 가지 일반적인 메서드 목록입니다.

  • public static int binarySearch(Object[] a, Object key): 이진 검색 알고리즘을 사용하여 지정된 배열에서 지정된 값을 검색합니다. 이 메서드를 호출하기 전에 배열을 정렬해야 합니다. 배열에 검색 키가 포함된 경우 해당 인덱스를 반환하고, 그렇지 않으면 (–(insertion point + 1))을 반환합니다.
  • public static boolean equals(long[] a, long[] a2): 두 개의 지정된 long 배열이 서로 같은 경우 true 를 반환합니다. 두 배열은 두 배열 모두 동일한 수의 요소를 포함하고 두 배열의 모든 해당 요소 쌍이 동일한 경우 동일한 것으로 간주됩니다. 두 배열이 같으면 true 를 반환합니다. 동일한 메서드는 다른 기본 데이터 유형 (byte, short, int 등) 에서도 사용할 수 있습니다.
  • public static void fill(int[] a, int val): 지정된 int 값을 지정된 int 배열의 각 요소에 할당합니다. 동일한 메서드는 다른 기본 데이터 유형 (byte, short 등) 에서도 사용할 수 있습니다.
  • public static void sort(Object[] a): 요소의 자연 순서에 따라 지정된 객체 배열을 오름차순으로 정렬합니다. 동일한 메서드는 기본 데이터 유형 (byte, short, int 등) 에서도 사용할 수 있습니다.

예시:

다음 코드를 /home/labex/project/arrayTest.java 파일에 작성하십시오.

public class arrayTest
{
    public static void main(String[] args){
        // you can use new to initialize an empty array.
        String[] nameArray1 = new String[5];
        // fill the empty nameArray1 items with same name "abc"
        java.util.Arrays.fill(nameArray1,"abc");
        // the for loop can also be used to iterate an Array
        for (String name:nameArray1){
            System.out.println(name);
        }
        // you can use some value to initialize the array.
        String[] nameArray2 = {"Candy", "Fancy", "Ann", "Ella", "Bob"};
        // you can get the length of the array
        System.out.println("Length of nameArray2: " + nameArray2.length);
        // you can get value by index
        System.out.println("The last item of nameArray2 is " + nameArray2[4]);
        // sort an array object
        java.util.Arrays.sort(nameArray2);
        System.out.println("Sorted nameArray2 by alphabet:");
        for(String name:nameArray2){
            System.out.println(name);
        }
    }
}

출력:

다음 명령을 사용하여 arrayTest.java 파일을 실행합니다.

javac /home/labex/project/arrayTest.java
java arrayTest

출력을 확인하십시오.

abc
abc
abc
abc
abc
Length of nameArray2: 5
The last item of nameArray2 is Bob
Sorted nameArray2 by alphabet:
Ann
Bob
Candy
Ella
Fancy

요약

대부분의 작업은 숫자와 문자열과 같은 데이터를 조작하는 것이므로, Java 내장 클래스를 사용하여 작업을 수행하는 것이 쉽고 효율적입니다. 고급 사용법은 공식 문서를 참조하십시오.