SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

突然ですがクイズです!(AD)

突然ですがクイズです!-その1

Delphi、C++、Java、C#、PHP、Rubyの6言語の動作の違いをクイズで考察

  • X ポスト
  • このエントリーをはてなブックマークに追加

文字列の足し算と比較

問題

 次は、文字列の足し算と比較(=、==、===、equals)です、6つの言語で試してみましたが、やはり、1つだけ出力結果が異なるものがあります。どれでしょう?

Delphi
program Project1;
{$APPTYPE CONSOLE}
var
  s1,s2: string;
begin
  s1 := ‘ab’;
  s2 := ‘a’ + ‘b’;
  if s1 = s2 then
    Write(’equal’);
end.
C++
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
  string s1 = "ab";
  string s2 = string("a") + string("b");
  if( s1 == s2 )
    cout << "equal";
  return 0;
}
Java
package project1;
public class Project1 {
  public static void main(String[] args) {
    String s1 = "ab";
    String s2 = "a" + "b";
    if( s1.equals(s2) )
      System.out.print("equal");
  }
}
C#
namespace project1 {
public class Project1 {
  public static void Main() {
    string s1 = "ab";
    string s2 = "a" + "b";
    if( s1 == s2 )
      System.Console.Write("equal");
  }
}
}
PHP5
<?php
$s1 = "ab";
$s2 = "a" + "b";
if( $s1 === $s2 )
  echo "equal";
?>
Ruby
s1 = "ab"
s2 = "a" + "b"
if s1 === s2
  print "equal"
end
解説

 正解は「PHP」。

 PHPでは、期待した「equal」は出力されません。それ以外の言語では正しく「equal」が出力され、2つの文字列が等しい内容であることが確認できます。Delphi/C++/Java/C#/Rubyについては特にうっかりミスを起こすことはないでしょう。

 PHPでは、文字列同士を結合する演算子は「+」ではなく「.(ドット)」です。問題のコードのように「+」を使用して文字列同士を結合しても特にエラーは発生しません。「.(ドット)」を使うことで期待した「equal」が出力されます。

$s2 = "a" . "b";

 なお、Javaでは文字列型を含むクラス型の変数同士の等値性を判定する場合、「==演算子」ではなく「equalsメソッド」を使用します。これとは対照的に、Delphiの「=演算子」、C++の「==演算子」、C#の「==演算子」は、文字列においては変数の参照先を比較するのではなく、文字列の内容の等値性を判定する処理へと置き換えられます。この点、注意が必要です。

次のページ
文字列で出力

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
突然ですがクイズです!連載記事一覧
この記事の著者

EDN編集部(イーディーエヌ編集部)

エンバカデロ・デベロッパーネットワーク(EDN)は、ソフトウェア開発者とデータベース技術者のための技術情報サイトです。Delphi、C++Builderをはじめとする開発ツールやER/Studioなどのデータベースツールに関連する技術記事、ビデオなどを提供しています。EDN編集部は、EDN記事と連携...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2289 2008/08/20 13:35

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング