数値型、文字列型および配列

JavaJavaBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

Java や他のオブジェクト指向言語では、オブジェクトは関連データのコレクションであり、メソッドのセットが付属しています。これらのメソッドはオブジェクトに対して操作を行い、計算を実行し、時にはオブジェクトのデータを変更します。ここでは、3つの簡単で重要なJavaの組み込みオブジェクト型:Number、String、Arrayを紹介します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/StringManipulationGroup(["String Manipulation"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java/BasicSyntaxGroup -.-> java/data_types("Data Types") java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/StringManipulationGroup -.-> java/strings("Strings") java/StringManipulationGroup -.-> java/stringbuffer_stringbuilder("StringBuffer/StringBuilder") java/DataStructuresGroup -.-> java/arrays("Arrays") java/DataStructuresGroup -.-> java/arrays_methods("Arrays Methods") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/wrapper_classes("Wrapper Classes") java/SystemandDataProcessingGroup -.-> java/math_methods("Math Methods") java/SystemandDataProcessingGroup -.-> java/string_methods("String Methods") subgraph Lab Skills java/data_types -.-> lab-178548{{"数値型、文字列型および配列"}} java/for_loop -.-> lab-178548{{"数値型、文字列型および配列"}} java/strings -.-> lab-178548{{"数値型、文字列型および配列"}} java/stringbuffer_stringbuilder -.-> lab-178548{{"数値型、文字列型および配列"}} java/arrays -.-> lab-178548{{"数値型、文字列型および配列"}} java/arrays_methods -.-> lab-178548{{"数値型、文字列型および配列"}} java/wrapper_classes -.-> lab-178548{{"数値型、文字列型および配列"}} java/math_methods -.-> lab-178548{{"数値型、文字列型および配列"}} java/string_methods -.-> lab-178548{{"数値型、文字列型および配列"}} end

数値型

基本的には、byteintdouble などのプリミティブな数値型を使用します。ただし、時にはプリミティブデータ型の代わりにオブジェクトを使用する必要があります。Javaはプリミティブデータ型に対するラッパークラスを提供しています。それらは ByteShortLongIntegerDoubleFloat などです。ラッパーオブジェクトはプリミティブデータ型に戻すことができます。このプロセスは アンボクシング と呼ばれます。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(): 第1引数を第2引数の累乗にした値を返します。
  • round(): メソッドの戻り値の型に応じて、引数に最も近い long または int を返します。

/home/labex/project/numberTest.java ファイルに次のコードを記述します。

public class numberTest
{
    public static void main(String[] args){
        Integer x = 1;    // int を Integer オブジェクトにボックス化
        x = x + 1;        // Integer を int にアンボックス化
        System.out.println(Integer.parseInt("10"));  // 文字列を解析して int を取得
        System.out.println( "x = " + x);
    }
}

出力

次のコマンドを使用して numberTest.java ファイルを実行します。

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

出力を確認します。

10
x = 2

文字列

文字列はオブジェクトですので、「文字列オブジェクトに含まれるデータは何ですか?」と「文字列オブジェクトで呼び出せるメソッドは何ですか?」という質問ができるでしょう。文字列オブジェクトの構成要素は文字です。すべての文字が文字であるわけではありません。一部は数字で、一部は特殊記号で、残りはその他の種類の文字です。簡単のために、すべてを文字と呼びます。String クラスには多くの文字列メソッドがありますが、そのうちいくつかのみを使用します。残りは 公式サイト のドキュメントを参照することができます。

String クラスは不変ですので、一度作成された文字列オブジェクトは変更できません。文字の文字列を多くの変更を加える必要がある場合は、StringBufferStringBuilder クラスを使用する必要があります。

以下は、StringStringBufferStringBuilder クラスの一般的なメソッドの一部のリストです。

  • 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!

配列

配列構造はデータのコレクションを格納するために使用されますが、配列を単一の型の変数のコレクションとして考える方が多くの場合便利です。number0number1、...、number99 のような個々の変数を宣言する代わりに、1つの配列変数 numbers を宣言し、numbers[0]numbers[1]、...、numbers[99] を使用して個々の変数を表します。配列の最初の要素はインデックス 0 にあります。

以下は、配列が持つ一般的なメソッドの一部のリストです。

  • public static int binarySearch(Object[] a, Object key):二分探索アルゴリズムを使用して、指定された配列内で指定された値を検索します。このメソッドを呼び出す前に、配列はソートされている必要があります。検索キーが配列に含まれている場合は、そのインデックスを返します。それ以外の場合は (–(挿入位置 + 1)) を返します。
  • public static boolean equals(long[] a, long[] a2):2つの指定された long 型の配列が互いに等しい場合は true を返します。2つの配列が同じ数の要素を含み、2つの配列のすべての対応する要素のペアが等しい場合、2つの配列は等しいと見なされます。2つの配列が等しい場合は true を返します。同じメソッドは他のプリミティブデータ型(byteshortint など)でも使用できます。
  • public static void fill(int[] a, int val):指定された int 型の配列の各要素に指定された int 値を割り当てます。同じメソッドは他のプリミティブデータ型(byteshort など)でも使用できます。
  • public static void sort(Object[] a):指定されたオブジェクトの配列を、その要素の自然な順序に従って昇順にソートします。同じメソッドはプリミティブデータ型(byteshortint など)でも使用できます。

/home/labex/project/arrayTest.java ファイルに次のコードを記述します。

public class arrayTest
{
    public static void main(String[] args){
        // 空の配列を初期化するには new を使用できます。
        String[] nameArray1 = new String[5];
        // 空の nameArray1 の要素に同じ名前 "abc" を入力します。
        java.util.Arrays.fill(nameArray1,"abc");
        // for ループを使用して配列を反復処理することもできます。
        for (String name:nameArray1){
            System.out.println(name);
        }
        // いくつかの値を使用して配列を初期化することができます。
        String[] nameArray2 = {"Candy", "Fancy", "Ann", "Ella", "Bob"};
        // 配列の長さを取得できます。
        System.out.println("Length of nameArray2: " + nameArray2.length);
        // インデックスで値を取得できます。
        System.out.println("The last item of nameArray2 is " + nameArray2[4]);
        // 配列オブジェクトをソートします。
        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の組み込みクラスを使用してタスクを実行するのは簡単で効率的です。高度な使用方法については、公式ドキュメントを参照してください。