ねっとぱんだ-プログラミング勉強ブログ-

Webデザイン、プログラミングの勉強ブログ。

【java】Stringの比較、printf

文字列の比較

  • String型は参照型だが基本型(プリミティブ型)と同じように振る舞う
  • 同じ文字列を格納した場合、new演算子を使わなければ同じメモリ領域を参照する
public static void main(String args[]){
		
		String s = "abcdefg";
		//長さ
		System.out.println(s.length());
		//インデックス2から4の前の値まで
		System.out.println(s.substring(2,4));
		//abをABに
		System.out.println(s.replaceAll("ab","AB"));
		
		//同じ文字列の場合、参照型でも同じメモリ領域を参照する
		String s1 = "ab";
		String s2 = "ab";
		
		if(s1.equals(s2)){
			System.out.println("s1 = s2");
		}
		
		//参照型はメモリの格納先の比較
		//しかしプリミティブ型と同じように振る舞う
		if(s1 == s2){
			System.out.println("s1 == s2");
		}
		
		//new演算子で新たにオブジェクトを作ると
		//同じ値でも参照先がかわる
		String s3 = new String ("ab");
		String s4 = new String ("ab");
		
		//参照先が違うのでs3とs4は等しくない
		if(s3 == s4){
			System.out.println("s3 == s4");
		}else{
			System.out.println("s3 != s4");
		}
	}

printf

参考
http://www.ne.jp/asahi/hishidama/home/tech/java/formatter.html
  • 自分の好きな書式で文字列を書き出せる
% 指定を開始、%%で%を出力
%d 10進数の整数を出力
%o 8進数の整数を出力
%x 16進数の整数を出力
%f 浮動小数点数を出力
%c 文字を出力
%s 文字列を出力
%-10s 左詰で10文字の範囲内に出力
デフォルトは右詰
%05sd 5文字の範囲で出力し、空白は0で埋める
数値型のみ
%#o 代替フォームで出力
8進数は頭に0、16進数は頭に0x
%5.4d 整数部5、少数部4文字で表示
%5.4s 5文字のスペースで文字数が4文字
%tY", new Date() 日付(年)

↓その他日付など
http://www.ne.jp/asahi/hishidama/home/tech/java/formatter.html

String.format()
()内に記述すれば文字列として書き出し
	public static void main(String args[]){
		
		int score = 50;
		double height = 165.8;
		String name = "suzuki";
		
		System.out.printf(
			"name: %s, score: %d, height: %f\n", name, score, height
		);
		System.out.printf(
			"name: %-10s, score: %10d, height: %5.2f\n", name, score, height
		);
		
		String s = String.format(
			"name: %10s, score: %-10d, height: %5.2f\n", name, score, height
		);
		System.out.println(s);
	}