今日のJavaの授業の終わりかけに、ちょっと困ったことが発生しました。 それは「Ifによる判断が、合っているはずなのに合わない」こと。 確かに、文字列一致の判断を行うために「==」で処理してるのになぁと、 しばらくソースを見直して、首をかしげてまた見直して・・・の繰り返し。 その時に、先生の一言でパッとみんな解けたわけですね。 「文字列一致の判断は、==ではなくてequals()。」 あぁなるほどな、と。ということで、下にまとめます。 今回はこちらのサイトを参考にさせていただきました。 Javaにおける文字/文字列の扱い方 - ITアーキテクト [IT Architect] 上リンクにあることをさっぱり書くと、 「==」は「同オブジェクト参照チェック」で、 「equals()」は「同格納値チェック」です。 「==」は、他言語と動作(というか判断基準)が違うので、注意が必要です。// それぞれに同じ"初期値"を与えた場合 String a1 = new String("abc"); String b1 = new String("abc"); System.out.println("それぞれに同じ\"初期値\"を与えた場合"); // == の場合 if ( a1 == b1 ) { System.out.println("◆==:True"); } else { System.out.println("◆==:False"); } // equals() の場合 if ( a1.equals( b1 ) ) { System.out.println("◆equals():True"); } else { System.out.println("◆equals():True"); } // ********************** // * 実行結果 // // それぞれに同じ"初期値"を与えた場合 // ◆==:False // ◆equals():True // **********************この場合は、a1,b1共に「同じ値」が代入されているにもかかわらず、 Javaの判断としては、「違うオブジェクトを参照」している、と取られます。 その結果、「同じオブジェクトを参照しているか」チェックする「==」はFalse、 「同じ値かどうか」チェックする「equals()」はTrueとなります。// それぞれに同じ"オブジェクト"を与えた場合 String xy = new String("xyz"); String x1 = xy; String y1 = xy; System.out.println("それぞれに同じ\"オブジェクト\"を与えた場合"); // == の場合 if ( x1 == y1 ) { System.out.println("◆==:True"); } else { System.out.println("◆==:False"); } // equals() の場合 if ( x1.equals( y1 ) ) { System.out.println("◆equals():True"); } else { System.out.println("◆equals():True"); } // ********************** // * 実行結果 // // それぞれに同じ"オブジェクト"を与えた場合 // ◆==:True // ◆equals():True // **********************このソースの場合、x1,y1は同じxyを参照しています。 よって、「==」でも「equals()」でもTrueが返されます。 今後かなり多用すると思うので、憶えておかないとですね。
ホーム > 全投稿
2009年9月17日木曜日
Java ==とequals()による初歩的問題について
2009年9月15日火曜日
XP/Vista スタートアップを表示/管理
今日の業務で必要になったので、忘れないようにメモ。 XPやVistaでの、一般的なスタートアップは、 「スタート」→「すべてのプログラム」→「スタートアップ」に格納されていますが、 システム系や、インストーラでのインストールソフトウェアでは、 レジストリに直接書き込まれる事があります。 そういったレジストリ型スタートアップは、表面的に見えないので、 「何かがエラーを起こして困る」といった時には少し困ったりします。 そういった時には、「システム構成ユーティリティ」を使用することで、 簡単にスタートアップを把握することができます。「スタート」→「ファイル名を指定して実行」で、「msconfig」と入力しエンター。 (Vistaは、「スタート」→検索バー入力でもOK。) すると、システム構成が起動するので、上タブ「スタートアップ」を選択。
ここでスタートアップを表示し、有効/無効を切り替えることができます。 ただし、システム上必須であったり、グラフィックなどの描画系などは、 むやみに止めてしまうと動作が不安定になりかねないので、 「無効にする必要がある」という明確な理由が無い限り、 触らないでおくことが望ましいです。 余談として、「スタートアップチェッカー」というフリーソフトがあります。 the Fang of Sky 公式では、対応はXPまでのようです。 このソフトウェアでは、上に挙げたようなスタートアップの有効/無効を切り替えられる他、 PC起動時のスタートアップの起動順を整えることができます。 が、正直スタートアップの起動順整理による高速化での効率にはさほど興味が無い上に、 「ちゃんと動いていれば触らない方がいい」という自己経験から、不要な気がします。 「スタートアップの順番を変えたせいで起動しなくなった」 なんて症状は起こらないでしょうけれど。
2009年9月14日月曜日
XP プログラムの既定設定
このあいだ、Vistaのプログラムの既定設定をまとめましたが、 今回はそのXP版です。「コントロールパネル」から「プログラムの追加と削除」を開き、 その左メニュー「プログラムのアクセスと既定の設定」を開きます。 「プログラムの追加と削除」という名なのに、 その中に設定系を置いておくなんて、普通はわからないですよね。
2009年9月10日木曜日
XP システムファイル破損によってOSが起動出来ない問題に対する対処法
ブルースクリーンはとうに見慣れましたが、 それでも表示される度に口を大きく開いてしまいます。 とにかく、あの青い画面は強烈なものなのです。 で。 時折発生するブルースクリーンに、「Ntfs.sys」が絡んでいることがあります。(画像はVistaのモノですが、XPもほぼ同等です。) この「Ntfs.sys」は、「%Systemroot%\System32\drivers(C:\Windows\System32\drivers)」に存在するファイルです。 これが何らかの原因で破損することがあり、結果的にこのファイルが読めず、 OSが起動出来ない、再起動ループなどを起こします。 この場合の対処法としては2つあります。 1つは、WindowsXPディスクからの回復コンソールでの修復。 壊れている「Ntfs.sys」を、WindowsXPディスクにあるそれと置き換える方法です。 それに関しては、以下のようなページが参考になります。
- WindowsXP編・「Ntfs.sys」が壊れているか存在しない
- ハード ディスクを NTFS ファイル システムに変換後 Windows XP を再起動したときのエラー メッセージ "次のファイルが存在しないかまたは壊れているため、Windows を起動できませんでした: System32\Drivers\Ntfs.sys"
ファイルの場所は「%Systemroot%\System32」です。
この場合は、OSが起動出来ないのではなく、
起動するもののファイルが読めないので進めない、状態でした。
これも、対処法2つ目で応急処置しましたが、正直どうなるかわかりません。
そもそも、WindowsXPディスクから持ってきて可能なのであれば、
それはもうそのシステム固有のものでは無いはずなので、
大丈夫だと思い込んでおきたいのですが・・・。
2009年9月9日水曜日
Excel 2007で「オブジェクトの選択」を表示する
もう一般PCにもほぼ普及されつつあるExcel2007ですが、 Excel2003以前から使用している人からすれば、 使いづらいものの何物でもない気がします。 基本的なメニューはタブ化されてしまい、 「使いたい機能がすぐ使えない」ことがたびたびあるからです。 その「見えていない機能」のひとつに、「オブジェクトの選択」があります。 2003の頃には、基本下にあった「図形描画ツールバー」に、 矢印としてあり、すぐにカーソルと切り替えられました。 それが無いおかげで図形やテキストボックスを、 Ctrl+クリックで侘びしく選択することになるのです。その、機能として隠れたところにある「オブジェクトの選択」と、 ついでによく使う「印刷プレビュー」を、すぐ使えるように、 「クイックアクセスツールバー」に表示します。 クイックアクセスツールバーを右クリック →「クイックアクセスツールバーのカスタマイズ」を選択すると、 「Excelのオプション/ユーザー設定」が表示されます。
まずは、「印刷プレビュー」から。 表示されたままの画面「基本的なコマンド」内にある、 「印刷プレビュー」を選択し、「追加」します。
続いて、「オブジェクトの選択」。 「コマンドの選択」を、「[ホーム]タブ」に切り替えた中の、 「オブジェクトの選択」を選択し、リストに加えて「OK」。
「クイックアクセスツールバー」に両方が追加されていれば完了です。
2009年9月7日月曜日
Excel ウィンドウ枠の固定
今日の業務で必要になったので、記憶の片隅に残すためにメモ。Excelで表データを表示する際に、シートをスクロールすると、
このように全体がスクロールされるので、列の情報が分かりづらくなることがあります。 このテストデータはシンプルなので分かりやすいですが、 実際に、数値を複数扱ったりする場合には、常に列を表示したくなります。 そういった時に「ウィンドウ枠の固定」を行います。
上メニュー「表示」タブを開き、 固定したい行/列の、下及び右のセルの選択をしておきます。 今回は列名と社員コードを常に表示したいので、C3:C4となります。 その状態で、「ウィンドウ枠の固定」内の「ウィンドウ枠の固定」を選択すると、
選択しておいたセルの上/左を基準とした枠固定が行われ、 スクロールしても常に表示されるようになります。 解除する場合には、「ウィンドウ枠の固定」内の「ウィンドウ枠固定の解除」を選択します。 なお、学校ではExcel2003で行いましたが、方法はほぼ同じでした。
iPhone Blogger投稿一覧に更新日表示
以前この投稿で作成した、 Blogger投稿表示一覧に更新日を付加して更新しました。 以下がそのページです。 ほるめすメモ帳inBlogger - 投稿一覧 iPhone、PCSafari、Firefoxでどうぞ。(IE6,7不可、IE8はリスト表示のみ)
更新日も記事の情報として、APIで取得できます。 var blogUpdated = post.getUpdated().getValue().getDate(); 実際には、以下のように出力されるので、少しいじる必要があります。 Sat Sep 05 2009 20:39:09 GMT+0900 上の「blogUpdated」はDate型なので、「toString()」で型変換し、 それを更に「.split(' ');」によって分割しています。 更に更に、曜日と月が英語のままではわかりづらいので、 Switch文でこつこつと日本語に入れ替えてあげ、 それを欲しい順番に連結して完成です。 <li class="group"></li> これで出来た日付を、 上のタグに入れそのまま使うと、全投稿に表示されるので、 「ループ初回or前投稿と日付が違う」場合に表示するようにしました。なお、あくまでも更新日なので、 下の記事が上の記事よりも新しい日付が出ますが、 そもそもFeedに作成日時が無いようなので、対応のしようがありません。 少し気持ち悪いですが、仕方ないです。 投稿にも、投稿された順番があるので、並べ替えずにこのままで良いです。 以下が今回のソースです。 <body>以下のソースが前回の投稿にあるので、それと照らし合わせて使用します。 ▼続きを読む/たたむvar handleBlogPostFeed = function(postsFeedRoot) { var posts = postsFeedRoot.feed.getEntries(); // タグ生成生成 var objul = document.getElementsByTagName("ul").item(0); objul.id = "home"; objul.title = postsFeedRoot.feed.getTitle().getText(); // タグ内投稿一覧生成 var html = ''; var prePostDate = ''; for (var i = 0, post; post = posts[i]; i++) { var postTitle = post.getTitle().getText(); var postURL = post.getHtmlLink().getHref(); var blogUpdated = post.getUpdated().getValue().getDate(); // 日付生成 var aData = blogUpdated.toString().split(" "); aData[0] = exChangeDay(aData[0]); aData[1] = exChangeMonth(aData[1]); var postDate = aData[3] + '/' + aData[1] + '/' + aData[2] + aData[0]; // 同じ日付が続く場合はまとめて表示する if ( prePostDate == '' || prePostDate != postDate ){ html += '<li class="group">' + postDate + '</li>'; } html += '<li><a href="' + postURL + '" target="_self">' + postTitle + '</a></li>'; // 次のループのために保存 prePostDate = postDate; } objul.innerHTML = html; };以下は曜日/月変換用。// 曜日変換 function exChangeDay(day){ switch(day){ case "Sun": day = "(日)"; break; case "Mon": day = "(月)"; break; case "Tue": day = "(火)"; break; case "Wed": day = "(水)"; break; case "Thu": day = "(木)"; break; case "Fri": day = "(金)"; break; default: day = "(土)"; } return day; } // 月変換 function exChangeMonth(month){ switch(month){ case "Jan": month = "01"; break; case "Feb": month = "02"; break; case "Mar": month = "03"; break; case "Apr": month = "04"; break; case "May": month = "05"; break; case "Jun": month = "06"; break; case "Jul": month = "07"; break; case "Aug": month = "08"; break; case "Sep": month = "09"; break; case "Oct": month = "10"; break; case "Nov": month = "11"; break; default: month = "12"; } return month; }
2009年9月5日土曜日
PS3 薄型120GB版が届きました
Amazonで予約してあったのですが、残念ながら発売日の9月3日は懇親会だったのです。 と言うことで、昨日の夜中に開封しました。 外箱は見た感じ、安っぽくしか見えないです。 逆に言えば、その安く見えるのも実際に安いからなのかも知れません。 ただ単に安くなっただけでなく、消費電力も重量、厚さも低く少なくなっています。
箱を開けてまずは取扱説明書。 早速トロがお出迎えです。 なるほど、PS3をネットワークに繋げば100%活用できるのか・・・。
続いて本体。 触り心地がつるっとしたモノからざらっとしたモノになりました。 持った感じでは、重さとしてXBOX360よりも軽かったです。
その他ケーブル類。 コントローラーはワイヤレス、USBケーブルで充電します。 薄型は旧型にあった電源ケーブルに接続する変圧器?電圧器?が無いんですね。 あと、テレビが古いせいか3色ケーブルでは画面が時折ちらつきます。 そろそろテレビを買い換えたいなぁ。 昨日の帰りに、ヨドバシカメラで「リッジレーサー7」を買ってきました。 やっぱりグラフィックが半端無く綺麗です。ブラウン管ですけれど。 それに、ネットワークに繋いでゲームなどをダウンロード出来る点も良いですし、 PC内の音楽やムービーデータを観られるのも良いですね。 いつかBlu-rayの映画でも借りてこよう、きっと凄いんだろうなぁ。
2009年9月4日金曜日
遠出から戻ってきました
写真からわかる通り、横浜へ行ってきました。 昨日から内定を頂いた会社での、 懇親会と初回の研修です。 それにしても、横浜ってなにかシンプルというか、 悪く言ってしまうと何も無いんですね。 その、グッとくるものが。 そりゃあ名所なんてまわってる時間は無かったので、 ベイハーバー?やら中華街やらはすごいんでしょうけど。 まぁ、横浜のことは置いておいて。 懇親会も研修もとても濃い内容で良かったです。 例えば料理の味付けであったり、社長の考え方であったり。 社長のお隣に座らせていただきましたが、 とてもおおらかな方で、とても厳格な方でした。 他の内定メンバーは、やはり関東が多く、普通に標準語。 それでもみんな仲良く乾杯の席を用意しました。 同期と考えれば心強いですが、あなた達はライバルなんですね… 研修はビジネスマナーからJava。 当たり前にすべきの上司への対応ができなくてションボリしましたが、 逆に「社会人への第一歩」と考えたら、気が楽になりました。 Javaは初回なので、変数定義などの超基礎から。 この機会にきっちり覚え直さないと、他の同期に負けちゃいます。 というような感じで2日が終わりました。 今度の遠出は今月末、研修と内定式です。 それまでにきちんと課題をクリアせねば。 --Phone--
2009年9月2日水曜日
Vista プログラムの既定設定
今日学校で作業している間に、 ブラウザの関連付けがIEに設定されていなかったのでメモ。 ただし、今回はVistaの設定方法をメモし、今度XPの画像を得られた時にまたメモします。 さて、Vistaの場合は場所が分かりやすくなっています。 標準では「スタート」メニュー右側の「既定のプログラム」、 もしくは「コントロールパネル」から「既定のプログラム」を開きます。ブラウザ関連を一括で設定する場合には、 「プログラムのアクセスとコンピュータの既定の設定」から設定します。
IEを既定のプログラムに設定する場合には「Microsoft Windows」、 それ以外のブラウザを設定するには「Microsoft以外」や「カスタム」から、 設定したいブラウザを選択して「OK」で完了です。 「既定のプログラム」ではこれ以外に、プログラムや拡張子に対しての設定を行えます。


















