您的位置:首页 > 编程语言 > Java开发

java 基础知识(程序结果题)

2011-10-26 22:27 381 查看
try {
System.out.println("hello");
System.exit(0);
} finally {
System.out.println("good bye");
}
/*
hello
*/


try {
int r = 1 / i;
} catch (Exception e) {
e.printStackTrace();
return true;
} finally {
return false;
}
/*
false
*/


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

解析:

当是基本数据类型改变时,不改变原有的数据,若是改变的是对象类型时,则会改变。

对于,这里的a和b,由于是基本数据类型,所以当b赋给a时,只是将b的值给了a,a自己的值不变,当a或b改变时,a或b的值是不变的哦。

对于这里的x和y,由于是对象类型,所以当y赋给x时,(x,y只是相应对象的引用),所以只是将x变成了y所指的对象的引用,此时x和y都是对象A的引用,所以当改变x或y时,x和y都会变,他们是一样的。

class Main {
public static void main(String args[]) {
int a = 1;
int b = 2;
String stra = "stra";
String strb = "strb";
A aa = new A();
A aaa = new A();
aa.a = 11;
aaa.a = 111;
System.out.println("a=" + a);
System.out.println("b=" + b);
System.out.println("Aaa=" + aa.a);
System.out.println("Aaaa=" + aaa.a);
System.out.println("stra=" + stra);
System.out.println("strb=" + strb);
a = b;
a++;
aaa = aa;
aa.a++;
stra = strb;
stra = "buhao";
System.out.println("a=" + a);
System.out.println("b=" + b);
System.out.println("Aaa=" + aa.a);
System.out.println("Aaaa=" + aaa.a);
System.out.println("stra=" + stra);
System.out.println("strb=" + strb);
}
}

class A {
int a;
}
/*
结果为:
a=1
b=2
Aaa=11
Aaaa=111
stra=stra
strb=strb
a=3
b=2
Aaa=12
Aaaa=12
stra=buhao
strb=strb
*/


2.Java中的原生数据类型和引用类型的参数传递:

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 Main {
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)
Main pt = new Main();// 语句(2)
pt.changeInt(a);// 语句(3)
System.out.println(a);// 语句(4) 1
Point point = new Point(1, 2);// 语句(5)
pt.changePoint(point);// 语句(6)
System.out.println(point.getX());// 语句(7) 5
System.out.println(point.getY());// 语句(8) 6
String str = "xyz";// 语句(9)
pt.changeString(str);// 语句(10)abc
System.out.println(str);// 语句(11)xyz
}
}
/*
运行结果:
1
5
6
abc
xyz
*/


问题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类型的内存地址值,所以说它把这个值传递到方法里面去传递的也是值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: