前回は変数の使い方や基本データ型について学習しました。
今回はその中でちらっと出てきた「String型」についての解説になります。String型は基本データ型ではありませんが、int型と並んでよく使うデータ型なので、ここで基本を押さえておきましょう!
文字列はオブジェクトとして扱う
String型は文字列を扱うデータ型ですが、この文字列はただのデータではなく「charの集合体」を指しています。また、String型の変数は、実はStringというクラスから生成したオブジェクトなのです。
オブジェクト(インスタンス)とは、設計したクラスを実体化して使えるようにするための処理で、new演算子を使って生成します。
前回の変数の解説では👇のように記述しましたが、これはStringをnew演算子を使わず、基本データ型と同じように使えるようにしよう!というJava開発者側の思惑があっての記述方法なのです。
String str = "Hello Java World!";
new演算子でオブジェクトを生成する
本来のオブジェクトの生成方法はどんな感じなのかと言うと、次のように記述します。
String str = new String("Hello Java World!");
「new クラス名」という書き方で、そのクラスのオブジェクトを生成できます。これは他のどのクラスでも同じなので、覚えておきましょう。
ただし、詳しい説明は省きますが、new String() でオブジェクトを生成するより、使わないで生成する方(前者)が、メモリの消費量が少なく済む上、簡潔に記述できるのでおすすめです。
メソッドを実行してみる
クラスとメソッドの解説の際にお話ししましたが、クラスの動作や役割を定義するためにはメソッドを定義します。
これはStringクラスも例外ではありません。Stringクラスの中にはいくつものメソッドが定義されています。基本的には自身が持っている文字列に対して何らかの処理をするものが多いです。
メソッドは、呼び出すことで何らかの結果を返してくれます。ここではそれらの使い方を見ていきましょう。
これ以降のプログラムは、すべてメソッドの中へ記述します。
package java_study;
public class Main {
public static void main(String[] args) {
//ここへ記述します。
}
}
文字列の長さを取得・length()
文字列の長さを取得するにはlength()を使います。
String str = "Hello Java World!";
System.out.println(str.length());
String j_str = "こんにちはJavaの世界!";
System.out.println(j_str.length());
コンソール
17
13
このようにメソッドは「オブジェクト変数.メソッド名()」という形で使えます。
上の例ではstrは英語、j_strは日本語を入れていますが、Javaのlength()はアルファベットも日本語も同じ1文字として扱います。
文字を抜き出す・charAt()
文字列から指定した箇所の文字を抜き出すにはcharAt()を使います。
抜き出した文字はchar型になります。
String str = "Hello Java World!";
System.out.println(str.charAt(4));
System.out.println(str.charAt(6));
コンソール
o
J
上記の例ではcharAt()のカッコ内に4と6をそれぞれ入れています。これは「引数」と呼ばれるもので、メソッドはこの引数をメソッド内部で使用し、結果を返しています。
Stringは先頭の文字から0, 1, 2, 3...nとインデックス番号が割り当てられています(0から始まりなので注意!)。今回は4と6をを指定したので、5番目の文字である「o」と、7番目の「J」が返ってきました。
空かどうかを調べる・isEmpty()
文字列が空かどうかを調べるにはisEmpty()を使います。isEmpty()は文字列が空の場合はtrue、空じゃない場合はfalseを返してくれます。
String str = "Hello Java World!";
ystem.out.println(str.isEmpty());
String emptyStr = "";
System.out.println(emptyStr.isEmpty());
コンソール
false
true
全て小文字にする・toLowerCase()
文字列を全て小文字にしたい場合はtoLowerCase()を使います。
String str = "Hello Java World!";
System.out.println(str.toLowerCase());
System.out.println(str.toUpperCase());
コンソール
hello java world!
HELLO JAVA WORLD!
ちなみに、全て大文字にしたい場合はtoUpperCase()を使います。
文字列を抜き出す・substring()
文字1文字を抜き出すにはcharAt()を使いましたが、文字列を抜き出すにはsubstring()を使います。
charAt()ではインデックス番号を1つ引数として渡していましたが、substring()では開始と終了のインデックス番号を渡します。
String str = "Hello Java World!";
System.out.println(str.substring(0, 5));
System.out.println(str.substring(6, 10));
コンソール
Hello
Java
文字列の位置を取得・indexOf()
引数で指定した文字列が現れる箇所をインデックス番号で返してくれるメソッドです。ただし、見つからなかった場合は-1を返します。
String str = "Hello Java World!";
System.out.println(str.indexOf("Java"));
System.out.println(str.indexOf("Python"));
コンソール
6
-1
indexOf()は戻り値が-1かどうかを確認し「指定した文字が存在するかどうか」を判定する場合によく使われます。
Javaプログラムの基礎知識(全11記事)
├─Javaとは? Javaの基本概要をわかりやすく解説!
├─IDEとは?エクリプス環境を整えよう!
├─Javaの基本構造とコンパイルの流れを解説!
├─変数、リテラル、基本データ型について?
├─文字列の作成方法とStringのメソッドについて!
├─演算子について!
├─ifとswitchによる条件分岐を理解しよう!
├─ループ処理をおこなうfor文を理解しよう!
├─データをまとめて管理する配列とは?
├─メソッドとメソッドの定義について!
└─Javaに標準装備されている「ライブラリー」を活用しよう!