Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaのラッパークラスでプリミティブ型を変換する方法とディレクトリ操作の基本

本記事では、Javaのラッパークラスの基本的な使い方と、java.nioパッケージのFilesクラスを利用したディレクトリの作成・一覧表示・フィルタリングの方法について、サンプルコード付きで解説します。

ラッパークラスとは

Javaには、java.langパッケージに「ラッパークラス」と呼ばれるクラス群が用意されています。これらのクラスのオブジェクトは、intやcharなどのプリミティブ型(基本データ型)の値を内部に包み込む(ラップする)役割を果たします。

ラッパークラスを利用することで、ArrayListやHashMapといったコレクションにプリミティブ型の値を格納できるようになります。また、ネットワーク越しにデータをやり取りする際にも、オブジェクトとして扱えるラッパークラスが役立ちます。

主なラッパークラスと対応するプリミティブ型は以下の通りです。

  • byte → Byte
  • short → Short
  • int → Integer
  • long → Long
  • float → Float
  • double → Double
  • char → Character
  • boolean → Boolean

ラッパークラスの使用例

次の例では、ユーザーから入力されたint値をIntegerオブジェクトに変換し、文字列化や他オブジェクトとの比較を行っています。

import java.util.Scanner;
public class WrapperExample {
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        System.out.println("整数値を入力してください: ");
        int i = sc.nextInt();
        // int値をIntegerオブジェクトに変換
        Integer obj = Integer.valueOf(i);
        // Integerオブジェクトを文字列に変換
        String str = obj.toString();
        System.out.println(str);
        // 他のIntegerオブジェクトとの比較
        int result = obj.compareTo(Integer.valueOf(124));
        if(result == 0) {
            System.out.println("両者は等しい");
        } else {
            System.out.println("両者は等しくない");
        }
    }
}

実行結果

整数値を入力してください:
1211
1211
両者は等しくない

なお、new Integer(int)コンストラクタはJava 9以降で非推奨となっているため、代わりにInteger.valueOf()メソッドを使用することが推奨されます。また、Java 5以降では「オートボクシング」機能により、Integer obj = i;のように明示的な変換なしで代入することも可能です。


Javaでディレクトリを作成する

続いて、java.nioパッケージのFilesクラスを使ったディレクトリ操作を見ていきましょう。createDirectory()メソッドは、引数として渡されたパスの位置に新しいディレクトリを作成します。

例:新しいディレクトリの作成

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Test {
    public static void main(String args[]) throws IOException {
        // Pathオブジェクトの生成
        String pathStr = "D:\\sample_directory";
        Path path = Paths.get(pathStr);
        // ディレクトリの作成
        Files.createDirectory(path);
        System.out.println("ディレクトリを作成しました");
    }
}

実行結果

ディレクトリを作成しました

実際にファイルシステムを確認すると、指定した場所にディレクトリが作成されていることがわかります。

Javaのラッパークラスでプリミティブ型を変換する方法とディレクトリ操作の基本

ディレクトリ内の内容を一覧表示する

FilesクラスのnewDirectoryStream()メソッドは、指定したパスのディレクトリを開き、その内容へアクセスできるDirectoryStreamを返します。このストリームを拡張for文で処理することで、ディレクトリ内のファイルやサブディレクトリを順番に取得できます。

例:ディレクトリ内容の表示

import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class FilesExample {
    public static void main(String args[]) throws IOException {
        // Pathオブジェクトの生成
        String pathStr = "D:\\ExampleDirectory";
        Path path = Paths.get(pathStr);
        System.out.println("指定されたディレクトリの内容");
        DirectoryStream<Path> stream = Files.newDirectoryStream(path);
        for (Path file : stream) {
            System.out.println(file.getFileName());
        }
    }
}

実行結果

指定されたディレクトリの内容
demo1.pdf
demo2.pdf
sample directory1
sample directory2
sample directory3
sample directory4
sample_jpeg1.jpg
sample_jpeg2.jpg
test
test1.docx
test2.docx

フィルタを使ってディレクトリだけを抽出する

DirectoryStream.Filterインターフェースを実装すると、条件に合致するエントリだけを取得できます。次の例では、指定したパスの中からディレクトリのみをフィルタリングして表示しています。

例:ディレクトリのみを表示するフィルタ

import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Test {
    public static void main(String args[]) throws IOException {
        // Pathオブジェクトの生成
        String pathStr = "D:\\ExampleDirectory";
        Path path = Paths.get(pathStr);
        System.out.println("指定されたディレクトリ内のサブディレクトリ");
        DirectoryStream.Filter<Path> filter = new DirectoryStream.Filter<Path>(){
            public boolean accept(Path file) throws IOException {
                return Files.isDirectory(file);
            }
        };
        DirectoryStream<Path> list = Files.newDirectoryStream(path, filter);
        for (Path file : list) {
            System.out.println(file.getFileName());
        }
    }
}

実行結果

指定されたディレクトリ内のサブディレクトリ
hidden directory1
hidden directory2
sample directory1
  1. Javaのラッパークラスでプリミティブ型を変換する方法とディレクトリ操作の基本

    本記事では、Javaのラッパークラスの基本的な使い方と、java.nioパッケージのFilesクラスを利用したディレクトリの作成・一覧表示・フィルタリングの方法について、サンプルコード付きで解説します。 ラッパークラスとは Javaには、java.langパッケージに「ラッパークラス」と呼ばれるクラス群が用意されています。これらのクラスのオブジェクトは、intやcharなどのプリミティブ型(基本データ型)の値を内部に包み込む(ラップする)役割を果たします。 ラッパークラスを利用することで、ArrayListやHashMapといったコレクションにプリミティブ型の値を格納できるようになります。また

  2. 【Java入門】ネガティブ画像をポジティブ画像に変換する方法|BufferedImageでピクセル単位のRGB反転を実装

    ネガティブ(反転)画像を元のポジティブ画像に戻すには、画像内のすべてのピクセルに対して、赤(R)・緑(G)・青(B)の各値を「255 − 値」で反転させます。透明度を表すアルファ(A)成分はそのまま維持します。この操作は可逆的なため、同じロジックでポジ→ネガ→ポジの往復変換にも対応できます。 ネガ画像からポジ画像への変換手順 画像の読み込み: ImageIO.read() メソッドで対象の画像ファイルを読み込みます。 サイズの取得: getHeight() と getWidth() で画像の高さと幅を取得します。 ピクセル走査: 二重の for ループで画像内の全ピクセルを順番に処理します。