Java Basic CharとString 〜文字の操作〜

イントロダクション

データ型とは、数値、文字、クラスなどの変数の型を意味しています。このデータ型について、1番使うであろう文字(Char)と文字列(String)について記載します

Stringとchar

Javaで文字を扱うときに使用するデータ型として「char」「String」があります。

  • Stringは文字列のことで、「"(ダブルクォーテーション)」で囲うことで文字列を表します。
  • charは文字を表し、「'(シングルクォーテーション)」で囲うことで文字を表します。
String str = "文字列";
char ch = 'a';

ちなみに、「=」の右側、値の部分のことを「リテラル」と呼びます。別な言い方をすると「"XXX"」は文字列のリテラル「'X'」は文字のリテラルという言い方ができます。

リテラルの解説

While文でint型の配列をループする処理の説明をしていますが、リテラルの説明もしています。

下のコードは、各データ型の定義サンプルです。
データ型(変数の型)は大きく分けてプリミティブ型参照型があります。

/** 
 * プリミティブ型データ一覧クラス(説明用)
 * @author takunoji
 */
public class PrimitiveSample {
   /** INTは整数で ±2147483647まで使用可能 */
   private int population;

   /** Doubleは小数点を使用する */
   private double footSize;

   /** Shortの年齢は ±32767まで使用可能 */
   private short age;

   /** BooleanはTRUEかFALSE */
   private boolean flg;

   /** Charは一文字 */
   private char ch;

   /** 1Byteは8Bit(2進数8桁)-> 01010101 = 85 */
   private byte byt = 0x7F; // 16進表現:10進数の127

   /** LongはINTよりも大きい整数 */
   private long lng;

   /** FloatはDoubleよりも大きい小数点 */
   private float flt;

   /** 
    * コンストラクタ:この処理を通るとインスタンスができる
    */
   public PrimitiveSample() {
     population = 100;
     footSize = 24.6;
     age = 100; // intはより大きな数値を使える
     flg = false;
     ch= 'A';
     byt = 0x7F;
     lng = 123456;
     flt = 12345.6;
   }
}

プリミティブ型

charはプリミティブ型と言うカテゴリに入ります。intと同じく「==」で比較できます。

参照型(クラス型)

Stringは参照型(これもカテゴリ)で比較メソッドを使用します。参照型の場合はクラスなのでメソッドが使用できます。プリミティブ型の場合はメソッドが使用できません。そして、参照型は「==」での比較は想定通りに動きません。細かい理由は後々に… ※最近は「==」でもある程度ちゃんと比較できるようです

使い方

初期化するときは下のようにやります。
char a = 'a'; // シングルクォーテーション
String a = "a"; // ダブルクォーテーション

比較するときは、charは「==」を使用します。
Stringはメソッドを使用します。
String a = "a";
a.equals("a"); // trueが出力されます。

兎にも角にも、コードをみてみいないと
なんとも言えないのでこちらから
ダウンロードしてください。

サンプルコード

public static void main(String[] rags) {
   int i = 1;
   char c = ‘a’; // 一文字のみ
   String str = “文字列”;
   System.out.println(i == 1); // true
   System.out.println(c == ‘b’); // false
   System.out.println(“abc”.equals(str)); // true

   // 文字列操作
   // 「abc」の「b」のみ表示
   System.out.println(str.charAt(2));
   // 文字列の置換(123をZZZに置換)
   System.out.println("test123bbb".replace("123", "ZZZ"));
}

<問題>
プログラム引数に「abc」「def」を渡してその引数を以下のようにコンソールに出力してください

①引数1: abc
②引数2: def

・上記の表示を行なった後にchar型の値「G」と「E」を
①と②の最後の部分に追加して表示してください。
※String型の変数の後にchar型を連結できればOKです。
Eclipseの画面では下のような画面でプログラム引数を追加します。

StringBuilderを使う

StringBuilderクラスを使用すると、文字列の操作が簡単にできます。
例えば、文字列の変数「str」が下のようにあったとします。

String str = "1234567";

個の文字列の「4」以降を取得したい時は「StringBuilder#subString(3)」とコードを書けば取得できます。

String str = "1234567";
StrinbBuilder build = new StringBuilder(str);
String result = build.substring(3);

System.out.println(result); // 「4567」が表示される

関連ページ

投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す