1.import java.awt.Point;
class Assign
{
public static void main(String args[])
{
int a = 1;
int b = 2;
Point x = new Point(0,0);
Point y = new Point(1,1); //1
System.out.println(“a is ” + a);
System.out.println(“b is ” + b);
System.out.println(“x is ” + x);
System.out.println(“y is ” + y);
System.out.println(“Performing assignment and ” +
“setLocation…”);
a = b;
a++;
x = y; //2
x.setLocation(5,5); //3
System.out.println(“a is “+a);
System.out.println(“b is “+b);
System.out.println(“x is “+x);
System.out.println(“y is “+y);
}
}
这段代码生成以下输出结果?
a is 1
b is 2
x is java.awt.Point[x=0,y=0]
y is java.aet.point[x=1,y=1]
Performing assignment and setLocation…
a is 3
b is 2
x is java.awt.point[x=5,y=5]
y is java.aet.point[x=5,y=5]
解析网址:http://zhidao.baidu.com/question/106550817.html
2.Java中的原生数据类型和引用类型的参数传递:
public class Point{
private int x;
private int y;
public Point(int x,int y){
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
public class ParameterTest {
public void changeInt(int a){
a = 3;
}
public void changePoint(Point point){
point.setX(5);
point.setY(6);
}
public void changeString(String str){
str = “abc”;
System.out.println(str);
}
public static void main(String[] args){
int a = 1;//语句(1)
ParameterTest pt = new ParameterTest();//语句(2)
pt.changeInt(a);//语句(3)
System.out.println(a);//语句(4)
Point point = new Point(1,2);//语句(5)
pt.changePoint(point);//语句(6)
System.out.println(point.getX());//语句(7)
System.out.println(point.getY());//语句(8)
String str = “xyz”;//语句(9)
pt.changeString(str);//语句(10)
System.out.println(str);//语句(11)
}
}
问题1:当执行完语句(4)后,打印的结果是什么?为什么?
1 对于原生数据类型来说,它仅仅是把 main方法里面的a的值传过去,传值完后,两者之间没有任何的关系,
问题2:当执行完语句(7)(8)后,打印的结果是什么?为什么?
5 6 传的是引用,即是对象的内存地址
问题3:当执行完语句(11)后,打印的结果是什么?为什么?
xyz
解析网址:http://leeldy.blog.163.com/blog/static/1398530620091279551463/
总结: 在java里面,对方法的参数传递,不管是原生数据类型还是引用类型,一律是传值:pass by value。对原生数据类型来说,传递的值就是它被赋予的那个值,比如说 int a = 3 就把3这个值传到方法里面去;引用类型来说,引用本身是一个地址,是一个int类型的内存地址值,所以说它把这个值传递到方法里面去传递的也是值。