2016年2月20日 星期六

[JAVA]物件的等於

對於以前在學校寫C之後,
等於(=)這個符號的概念一直都是把左邊的值賦予給右邊的值




例如:
#include <iostream>
using namespace std;
int main()
{
int a = 1;
int b = 2;
a = b;
b = 3;
cout<<"a = "<<a<<endl;
return 0;
}
view raw cplus_equal.cpp hosted with ❤ by GitHub


int a = 1;
int b = 2;

a = b; //b的值2給了a
b = 3; //之後值3給了b

結果a印出來是2, b是3


但是在java中,物件的等於是有pointer的含意在的,
假設我封裝了int的物件專門存int
class Int {
int value;
public Int(int value){
this.value = value;
}
public void setInt(int value){
this.value = value;
}
public int getInt(){
return value;
}
}
view raw Int.java hosted with ❤ by GitHub
這樣的寫法

Int A = new Int(1);
Int B = new Int(2); A = B; //B被指定的new Int(2)的這個物件,指定給A控制 

B.setInt(3);//B被指定的new Int(2)的這個物件,現在值3給了這個物件,A擁有這個物件所以值也變成3,b也是3

以下是java程式碼以供比較,基本上值的等於用法跟C++一樣沒變,只有物件不一樣要注意
import java.io.Console;
class Demo {
public static void main(String[] args) {
int a = 1;
int b = 2;
a = b;
b = 3;
System.out.println("int結果"+a);
Int A = new Int(1);
Int B = new Int(2);
A = B;
B.setInt(3);
System.out.println("int物件結果"+a.getInt());
}
}
view raw java_equal.java hosted with ❤ by GitHub

還有C++版本
#include <iostream>
using namespace std;
int main()
{
int a = 1;
int b = 2;
a = b;
b = 3;
cout<<"a = "<<a<<endl;
return 0;
}
view raw cplus_equal.cpp hosted with ❤ by GitHub

沒有留言:

張貼留言