バナー画像

Javaで文字列の長さや、配列の長さ(要素数)を取得する時に使用する、String.length()およびArray.length。

この記事では、開発の現場でもよく使う、この2つを解説します。

文字列の長さを取得する

まず、文字列(String)の長さを取得する、String.length()メソッドの使い方を解説します。

String.length()は、例えば文字数の長さをチェックする時になどに使用します。

String.length()メソッドで文字数を取得

String.length()メソッドの使い方は簡単で、使い方は以下の通りです。

文字列.length()

メソッドの戻り値には、int型の数値で文字数が返ります。

では、実際に動作するサンプルコードを作成してみましょう。

以下のサンプルコードでは、文字列が格納されたString型の変数から、length()メソッドで文字数を取得し、結果をコンソールに出力しています。

String str = "Hello Java";
System.out.println("文字数は" + str.length() + "です。" );

文字数とバイト数の違い

文字列を扱う場合、文字数とバイト数の違いを知っておく必要があります。

文字数は、String.length()で取得てきる値で、半角・全角関係なく1文字を1とカウントします。

それに対し、文字列をハードディスクや、データベースに格納する時のデータ量を表すのが「バイト数」です。バイト数は半角・全角の違いや、文字コードによって、同じ文字数でもバイト数が異なります。

以下は、「ハローJava」という文字列に対し、文字数と「Shift-JIS」および「UTF8」での文字コードでバイト数を求めるサンプルコードです。

import java.nio.charset.Charset;

public class SampleClass {
    public static void main(String[] args) {
        // 文字数
        System.out.println("文字数:" + "ハローJava".length());
        // Shift-JISのバイト数
        int byteCnt = "ハローJava".getBytes(Charset.forName("Shift_JIS")).length;
        System.out.println("Shift-JISのバイト数:" + byteCnt);
        // UTF-8のバイト数
        byteCnt = "ハローJava".getBytes(Charset.forName("UTF-8")).length;
        System.out.println("UTF-8のバイト数:" + byteCnt);
    }
}

【実行結果】

文字数:7
Shift-JISのバイト数:10
UTF-8のバイト数:13

Shift-JISでは全角文字が2バイト、UTF-8では3バイトになる為、同じ文字でも上の実行結果のように、バイト数が異なります。

改行も文字数に含まれる

String.length()で文字数を取得する時、文字列に改行が含まれていると、改行もコードも1文字としてカウントされます。

便利なサンプルコード

文字数を1文字ずつ取り出す

文字列の中から1文字ずつ取り出し、コンソールに出力するサンプルコードです。

public class Main {
    public static void main(String[] args) {
        String str = "ハローJava";
        for (int i = 0; i < str.length(); i++) {
            System.out.println(str.substring(i, i + 1));
        }
    }
}

マルチバイト(全角)文字を含むかチェック

文字列の中に、マルチバイト(全角)文字が含まれるか簡単にチェックする方法を紹介します。

Shift-JISは、マルチバイト(全角)文字が2バイトになるため、文字数とバイト数を比較して、異なっていればマルチバイト(全角)文字が含まれていると判定できます。(下記、checkZenkaku()メソッド)

import java.nio.charset.Charset;

public class Main {
    public static void main(String[] args) {
        if (checkZenkaku("全角123")) {
            System.out.println("全角文字が存在します。");
        }
    }

    public static boolean checkZenkaku(String str) {
        int byteCnt = str.getBytes(Charset.forName("Shift_JIS")).length;
        int len = str.length();
        return byteCnt != len;
    }
}

【関連記事】
JavaのtoStringメソッドとは?便利な使い方を解説!

配列の長さ(要素数)を取得する

続いてら配列の長さを取得する方法を解説します。配列の長さ(要素数)は、Array.lengthフィールドから取得できます。

以下のサンプルコードは、int型の配列を作成して、その要素数をコンソールに出力する例です。

int[] intArray = new int[] {1, 2, 3};
System.out.println("要素数は" + intArray.length + "です");

便利なサンプルコード

Array.lengthフィールドを使用する便利なサンプルコードを紹介します。

配列の要素を1コずつ取り出す

lengthフィールドで取得した要素分、for文で繰り返し処理する、基本の配列処理です。

public class Main {
    public static void main(String[] args) {
        int[] ary = {10, 20, 30, 50};
        for (int i = 0; i < ary.length; i++) {
            System.out.println(ary[i]);
        }
    }
}

別の配列に要素をコピーする

コピー元の配列の各要素を、別の配列に一括でコピーする方法です。覚えておくと、配列を1コずつコピーするよりも、圧倒的にシンブルなコードで書けます。

public class Main {
    public static void main(String[] args) {
        int[] source = {1, 2, 3};
        int[] copyArray = new int[3];
        System.arraycopy(source, 0, copyArray, 0, source.length);
    }
}

Listの長さを取得する方法

配列とは別に、Javaで複数の要素を持てるクラスとしてList型があります。

List型の長さを取得する時は、以下のサンプルコードのように、size()メソッドを使用します。

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        System.out.println("Listの要素数:" + list.size());
    }
}
ポテパンダの一言メモ

List型には配列のようなlengthフィールドはありません。

【関連記事】
【Java入門】ArrayListの使い方!配列との違いも解説

まとめ

Javaで文字列の長さを取得するString.length()と、配列の長さ(要素数)を取得するArray.lengthについて解説してきました。

よく使う処理なので覚えておいて損はないでしょう。

【関連記事】
【Java】ゼロから始めるJavaプログラミング!

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。