在Java基礎資料形別(byte,short,int,long,boolean,char,float,double)的==判斷式就是檢查兩個資料的值是否相等,但是到物件參考形別是==表示的是兩個物件參考的記憶體位置是否一樣
比如說
Object A = new Object();
Object B = new Object();
A==B的時候就是false
而
Object A = new Object();
Object B = ObjectA;
A==B的時候結果是true
在這邊要檢查兩個物件裡面的參數是否一樣的時候就需要要用到.equals方法
這個方法是java.lang.Object的方法
所以在編寫class時可以被覆寫
你可以自行定義什麼情況下兩個class內容是相等的
就可以使用 A.equals(B)這種語法來判斷兩個物件是不是你定義的相同
String雖然是物件,但是因為字串池的關係
String A ="abc";
String B ="abc";
兩個字串物件會指到同一個記憶體位置
A==B的結果會是true
但是如果想要程式用一些method撈值用String存的話
A==B兩個字串即使值是一樣的結果也會顯示false
這時使用A.equals(B);
比較不會發生問題造成維護上的困擾
2015年8月29日 星期六
2015年8月19日 星期三
[Android]把輸入的值傳到下一個畫面的方法
這個範例只是簡單的把帳號資料傳到下一個畫面
中間並沒有經過資料庫跟資料驗證
有興趣可以做個資料驗證,就可以做個簡單的登入程式
在專案裡的res/layout資料夾新增兩個xml檔如下:
login.xml:
中間並沒有經過資料庫跟資料驗證
有興趣可以做個資料驗證,就可以做個簡單的登入程式
在專案裡的res/layout資料夾新增兩個xml檔如下:
login.xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/textView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginTop="18dp" android:text="帳號" /> <TextView android:id="@+id/textView02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/textView01" android:layout_marginTop="14dp" android:text="密碼" /> <EditText android:id="@+id/editText01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/textView01" android:layout_toRightOf="@+id/textView01" android:ems="10" android:inputType="textPersonName" > <requestFocus /> </EditText> <EditText android:id="@+id/editText02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/textView02" android:layout_toRightOf="@+id/textView02" android:ems="10" android:inputType="textPassword" /> <Button android:id="@+id/button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/editText02" android:layout_below="@+id/editText02" android:layout_marginTop="16dp" android:text="送出" /> </RelativeLayout>
result.xml:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent" ><TextViewandroid:id="@+id/textView00"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentTop="true"android:text="Large Text"android:textAppearance="?android:attr/textAppearanceLarge" /></RelativeLayout>
然後編寫MainActivity.java檔如下
public class MainActivity extends Activity {TextView textView00 = null;EditText editText01 = null;EditText editText02 = null;Button button01 =null;public void onCreate(Bundle savedInstanceState){setContentView(R.layout.login);editText01 = (EditText) findViewById(R.id.editText01);button01 = (Button) findViewById(R.id.button01);button01.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String name = editText01.getText().toString();setContentView(R.layout.result);textView00 = (TextView) findViewById(R.id.textView00);textView00.setText("你好:"+name);}});}}
2015年8月13日 星期四
[SQL Server2012]將資料庫複製到別的資料庫-產生指令碼
首先點選要複製的資料庫滑鼠右鍵後選工作→產生指令碼
接著會出現摘要的畫面,不想看說明就不要理他直接按下一步
再來是選擇要匯出資料庫的內容,如果想全部複製就用預設值,
因為我不想複製預存程序我使用了自訂內容
再來這個畫面請按進階做一些進階設定
若是你要複製過去的Database有同名的資料的話,
只編寫CREATE指令資料就有可能放不進去
但是使用DROP指令要小心,你要確定那邊同名的資料庫沒有重要的資料
不然一執行那邊的資料可能就會毀掉,除非你確定另一邊沒有重要資料不然建議
不要使用 DROP and CREATE這個功能
指令碼很貼心的提供了舊的版本,有需要的話可以自行設定
若資料是要複製到Microsoft Azure的資料庫,請將屬性改為SQL Azure資料庫
如果是一般電腦上的資料庫就直接選獨立執行個體
這個選項要看你需要複製什麼出來
因為有時候你只是要抽出這些DataBase的結構來研究,並不需要裡面的資料
連資料一起抽出來的話檔案會很大
只要複製Table不要複製裡面的資料的話只要選擇僅限結構可以有限節省空間
預設是僅限結構描述,如果需要連資料一起複製出來的話
這個選項的屬性必須改成結構描述和資料
都設定完成後記得更改匯出的檔名與路徑方便尋找,
接著就是下一步&下一步
完成後就可以在剛剛的路徑找到對應的Sql檔了
2015年8月6日 星期四
[Java]Java的Static block與建構子(constructor)
Static block是Java中的一個用來初始化Static屬性的功能
一個Class中的Static block只會執行一次
建構子(constructor)則是每次new一個物件的時候就會執行一次
建構子的名稱要與class名稱相同,並且不允許同樣參數的建構子
使用static block與constructor的方法範例如下
一個Class中的Static block只會執行一次
建構子(constructor)則是每次new一個物件的時候就會執行一次
建構子的名稱要與class名稱相同,並且不允許同樣參數的建構子
使用static block與constructor的方法範例如下
public class StaticInitDemo { private static String message; private String message2; static{ System.out.println("static block initialize"); setMessage("This is an demo of static block"); } public StaticInitDemo(){ System.out.println("constructor initialize"); setMessage2("This message is generate as constructor"); } public StaticInitDemo(String str){ System.out.println("constructor with parameter initialize"); setMessage2("str="+str); } public static String getMessage() { return message; } public static void setMessage(String message) { StaticInitDemo.message = message; } public String getMessage2() { return message2; } public void setMessage2(String message2) { this.message2 = message2; } }//end of class
public class StaticBlockDemo { public static void main(String[] args) { System.out.println("Test begin\n"); System.out.println("StaticBlock:"); System.out.println(StaticInitDemo.getMessage()); System.out.println("\n"+"Constructor:"); StaticInitDemo demo = new StaticInitDemo(); System.out.println(demo.getMessage2()); StaticInitDemo demo2 = new StaticInitDemo(); } }//end of class
執行結果為:
Test begin
StaticBlock:
static block initialize
This is an demo of static block
Constructor:
constructor initialize
This message is generate as constructor
constructor initialize
訂閱:
文章 (Atom)