[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ガーベッジコレクションとは
どこからも参照されていないインスタンスやメソッドを消す。
System.gc() で呼び出せる。が、実行されるタイミングを指定できるわけではない。
finalizeメソッドはガーベッジコレクションが実行される直前に実行される。
finalizeメソッドは実行される順番を指定することはできない。
w_char 1 char(10);
w_var 1 varchar2(10);
w_char 2 char(10);
w_var 2 varchar2(10);
10バイト入るchar型とvarchar2型の変数を用意して
w_char 1 とw_var 1 に「ABCDEFG 」(Gの後ろは半角スペース3つ)という文字列を入れる。
w_char 2とw_var 2には「HIJK」という文字列を入れる。
w_char1 := 'ABCDEFG ';
w_var1 :='ABCDEFG ';
w_char2:= 'HIJK';
w_var2:='HIJK';
両方を画面などに表示させた時、
w_char1は 「ABCDEFG 」
w_var1 は 「ABCDEFG」
w_char2は 「HIJK 」
w_var2は 「HIJK」
となる。
char型の変数は、自分のバイト数より少ない文字列を入れると
後ろを自動的に半角スペース埋めしてくれる。
varchar2型は、文字列の後ろについた半角スペースをtrimしてくれる。
public class Main {
public static void main(String[] args) {
for(int i =0; i<3; i++){
System.out.println(i);
}
for(int i=0; i<3; ++i){
System.out.println(i);
}
}
}
実行結果は、
0
1
2
0
1
2
となる。
i++ または ++i 、どっちで書いても i にプラス1されるのは
{ }の中の処理が終わってから。
■Manyo クラス
[strart]----------------------------------------------------------------------------------------------------
package jp.co.bean;
import org.apache.commons.lang.builder.ToStringBuilder;
public class Manyo {
/** 名前 */
private String name;
/** 色 */
private String color;
/** サイズ */
private String size;
/**
* @return 色
*/
public String getColor() {
return color;
}
/**
* @param 色 設定する
*/
public void setColor(String color) {
this.color = color;
}
/**
* @return 名前
*/
public String getName() {
return name;
}
/**
* @param 名前 設定する
*/
public void setName(String name) {
this.name = name;
}
/**
* @return サイズ
*/
public String getSize() {
return size;
}
/**
* @param サイズ 設定する
*/
public void setSize(String size) {
this.size = size;
}
public String toString(){
return ToStringBuilder.reflectionToString(this);
}
}
[end]------------------------------------------------------------------------------------------------------
■Mainクラス
[strart]----------------------------------------------------------------------------------------------------
package jp.co.main;
import java.util.ArrayList;
import java.util.List;
import jp.co.bean.Manyo;
public class Main {
public static void main(String[] args) {
List list = new ArrayList();
// まにょクラス1
Manyo manyo1 = new Manyo();
manyo1.setName("まにょ");
manyo1.setColor("黄色");
manyo1.setSize("小さい");
list.add(manyo1);
System.out.println(manyo1.toString());
}
}
[end]------------------------------------------------------------------------------------------------------
※説明
・toStringを実装しない場合の出力結果
jp.co.bean.Manyo@1a758cb
・toStringを実装した場合の出力結果
jp.co.bean.Manyo@1a758cb[name=まにょ,color=黄色,size=小さい]
toStringを実装したほうは、フィールド名と値が表示されている。
デバッグなどに便利
■Manyoクラス
[strart]----------------------------------------------------------------------------------------------------
package jp.co.bean;
import org.apache.commons.lang.builder.HashCodeBuilder;
public class Manyo {
/** 名前 */
private String name;
/** 色 */
private String color;
/**
* @return 色
*/
public String getColor() {
return color;
}
/**
* @param 色 設定する
*/
public void setColor(String color) {
this.color = color;
}
/**
* @return 名前
*/
public String getName() {
return name;
}
/**
* @param 名前 設定する
*/
public void setName(String name) {
this.name = name;
}
public boolean equals(Object object){
boolean flag = false;
if (object instanceof Manyo) {
Manyo manyo = (Manyo)object;
if (this.name.equals(manyo.getName())
&& this.color.equals(manyo.getColor())){
flag = true;
}
}
return flag;
}
public int hashCode(){
return HashCodeBuilder.reflectionHashCode(this);
}
}
[end]------------------------------------------------------------------------------------------------------
■Mainクラス
[strart]----------------------------------------------------------------------------------------------------
package jp.co.main;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import jp.co.bean.Manyo;
public class Main {
// 異なるまにょクラスを格納する変数
private static Map manyoMap = new HashMap();
public static void main(String[] args) {
List list = new ArrayList();
// まにょクラス1
Manyo manyo1 = new Manyo();
manyo1.setName("まにょ");
manyo1.setColor("黄色");
list.add(manyo1);
// まにょクラス2
Manyo manyo2 = new Manyo();
manyo2.setName("まにょ");
manyo2.setColor("黄色");
list.add(manyo2);
// まにょクラス3
Manyo manyo3 = new Manyo();
manyo3.setName("まにょ");
manyo3.setColor("赤色");
list.add(manyo3);
// 上記で作成したまにょクラス一覧をマップにセットするメソッドに渡していく。
for (Iterator it = list.iterator(); it.hasNext();) {
Manyo manyo = (Manyo) it.next();
setMap(manyo);
}
}
private static void setMap(Manyo manyo){
// 同じ値が入っているか確認する
if (manyoMap.containsKey(manyo)){
System.out.println("すでに登録されています。");
} else {
System.out.println("登録されていないので追加します。");
manyoMap.put(manyo, new StringBuilder()
.append("名前 : ")
.append(manyo.getName())
.append(" 色 : ")
.append(manyo.getColor()));
}
}
}
[end]------------------------------------------------------------------------------------------------------
※説明
equalsとhashCodeを実装すれば
オブジェクトをキーとして扱えるようになる。
(フィールドの項目が一致するかで判定できる)
補足
public boolean equals(Object object){
return EqualsBuilder.reflectionEquals(this, object);
}
このように書くと
自分のオブジェクトのフィールドと
引数で渡されたフィールドの
同じ名前を持ったすべての項目と比較する。