http://headlines.yahoo.co.jp/hl?a=20071031-00000271-reu-bus_all
ミスタードーナッツまで賞味期限切れですか!?
なんか何処の店もやってるんじゃん??的な話題を
昼飯のときに話してましたが
まぁちょっと過ぎたぐらいでは死にはせんですがね(笑)
こんばんわ。
最近、後輩にJavaを教えていて皆が「????」ってなるArrayListについて
ですが、プログラムの中で変数を入れる器(入れ物)って言うイメージは
やっぱり経験しないとあったまらない物ですね
何度かやって見るとイメージは出来てきますので安心してください
プログラムの考え方も結局は反復練習PDCAですからねぇ★
以下がArrayListのサンプルです…
import java.util.ArrayList;
import java.util.Iterator;
/**
* ArrayListのサンプルソースです。
*/
public class ArrayListSample {
public static void main(String[] args) {
//ArrayListはjava.utilパッケージにあります。
//使うときには当たり前ですがnewします。
//デフォルトのコンストラクタは10件分の領域を確保します。
//上限を以上増えた際には50%ずつ拡張されます。
ArrayList myList = new ArrayList();
//ArrayListは分かりやすく言えば配列のように扱えるクラスだと思ってください。
//まずはArrayListに入れるものを宣言しておきましょう。
Integer inte1 = new Integer(5);
Integer inte2 = new Integer(15);
Integer inte3 = new Integer(25);
//addメソッドでArrayListの一番最後の要素に追加していきます。
//以下のコードでArrayListに3件データが追加されます。
myList.add(inte1);
myList.add(inte2);
myList.add(inte3);
//sizeメソッドで、ArrayListの件数を測ります。
//sizeメソッドの戻り値はint型です。
int size = myList.size();
System.out.println("件数は" + size + "件");
//当然intに代入しなくても件数は見れます。
System.out.println("件数は" + myList.size() + "件だって");
//getメソッドでArrayListの中身を取得出来ます。
//ただし、戻り値はObject型です。
System.out.println("先頭の中身は" + myList.get(0) + "ですよ。");
//見た目はIntegerですがIntegerの持つメソッド
//例えばdoubleValue();メソッドを利用しようとしても
//コンパイルできません。
//その際にはキャストが必要です。
//型 変数名 = (キャストする型)リストオブジェクト.get(n番目)
//と書きます。
Integer outInte = (Integer)myList.get(0);
System.out.println("キャストしたよ。" + outInte.doubleValue() + "ですよ。");
//ArrayListの中から全ての要素を取り出したいときは
//ループを利用します。
//ついでに合計してみましょう。
//間違ってもループ中に合計用の変数を宣言しないこと・・・
Integer sumInte = new Integer(0);
for(int i = 0 ; i < myList.size() ; i++){
//i番目からgetします。ループ中のi番目の考え方は
//pgの基本の考え方なので重要!
//分からないときは数学のn番目を思い出そう。
Integer forInte = (Integer)myList.get(i);
System.out.println("for文で出したよ。"+ forInte);
sumInte = sumInte + forInte;
}
System.out.println("合計を出したよ。"+ sumInte);
//Iteratorを利用することも出来ます。
//Iteratorは反復するという意味です。
//IteratorもArrayList同様java.utilパッケージにあります。
//iteratorメソッドで反復子を取得します。
Iterator ite = myList.iterator();
//こちらもループが使えます。
//while分で反復子内にオブジェクトが存在する間繰り返します。
while(ite.hasNext()){
//nextメソッドで順番に取り出します。
//こちらもObject型で戻ってきちゃうのでキャストは必要です。
Integer iteInte = (Integer)ite.next();
System.out.println("Iteratorで出したよ。"+ iteInte);
}
}
}
実行結果は
件数は3件
件数は3件だって
先頭の中身は5ですよ。
キャストしたよ。5.0ですよ。
for文で出したよ。5
for文で出したよ。15
for文で出したよ。25
合計を出したよ。45
Iteratorで出したよ。5
Iteratorで出したよ。15
Iteratorで出したよ。25
となります★
こんばんわ
Javaでpropertiesの読み込みというネタがあります。
プロパティというのは
oya = NYATARO
みたく、左辺がキーで右辺が実体という感じで外部ファイル化させた物です。(細かい事は抜きで)
Eclipseを利用時は
プロジェクト
L propTestパッケージ
L neko.properties
みたいな感じでneko.propertiesを
配置します。内容はこんなん↓
oya = NYATARO
musume = SUMIRE
次にプロパティ読み込みクラスを作ります 今回はResourceBundleを使います
package propTest;
import java.util.ResourceBundle;
public class MyMain {
public static void main(String[] args){
//リソースバンドルを取得したいときには
//こんな感じで書く。
ResourceBundle rb = ResourceBundle.getBundle("propTest.neko");
//propertiesファイルの左辺(キー)をgetStringメソッドの
//引数にあたえると、右辺が取れます。
String s1 = rb.getString("oya");
String s2 = rb.getString("musume");
System.out.println(s1 + "と" + s2);
//日本語などのマルチバイトの文字は、そのままでは
//文字化けになりますので…
//コマンドプロンプトでnative2asciiコマンドを使います。
//native2ascii neko2.properties neko2_ja.properties
//という感じ。
rb =ResourceBundle.getBundle("propTest.neko2_ja");
String s3 = rb.getString("oya");
String s4 = rb.getString("musume");
System.out.println(s3 + "と" + s4);
}
}
実行結果は
NYATAROとSUMIRE
と出るわけですが、propTest.neko2_jaを読むところはコメントに書いているように・・・
oya = ニャタロ
musume = すみれ
とプロパティに書いてあげても読んでくれないです。何かJavaとかで融通が中途半端に
利かないですね。
native2ascii neko2.properties neko2_ja.properties
とやると・・・
oya = u30cbu30e3u30bfu30ed
musume = u3059u307fu308c
と文字化け・・・違うな状態になります。
そうするとプログラム実行の結果は
ニャタロとすみれ
と表示できます。
こんばんわ
先日アンダーワールドのnewアルバム
OBLIVIONwithBELLS 買いました!!
5年前のアルバム
A HUNDRED DAYS OFF よりも
アンビエントな感じを前面に出していましてキャッチーで
POPな曲はほとんどありません!!
この世界観はまさに、アンダーワールドって感じです。
ちなみにこんな方々↓
http://search.pia.co.jp/artist.htm?artistId=11010104