如何理解java将对象作为参数?
class classname{
.........
}
void method(classname ver0, classname ver1){
System.out.println(ver0 + ver1);
}
平常方法参数都是int , String , boolean之类的, 或者int method(), 最后return一个int.
可是如果要吧对象作为参数我就不太明白了.平时我们要传递int, String之类的参数都很明显知道这是整形, 这是字符串之类.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在C语言时代,我们也已经写函数
这个函数打开一个窗口,参数是窗口标题、宽、高、标题颜色、按钮……可能还有更多的函数。
当我们使用这个函数的时候,必须保证参数的个数和顺序。
类似的:
在数据库中存储一个person。
凡是读完《C编程语言》的都知道,我们应该把这些放到一个结构体里面,然后将整个结构体当作参数传递过去。
不仅仅是C语言,在js中,我们通常会传递一个json。
在java中,我们虽然没有结构体,没有json,但是我们传递一个类,这样,在函数中,我们就可以操作这个类里面的公开的内容。
在C语言中,
45 + 8.9032
你理解,其实,这个也有隐式类型转回,将45转变成了float(到底是float还是double我也记不清了)类型了。在java中,
+
(加号)可以连接两个字符串,因此,类会被转换成字符串。怎么转呢?
好在java的所有类,都有一个共同的祖先类
Object
,所有的类都是这个类的子孙,当把类转变成字符串时,调用的就是从这个祖先类里面继承过来的toString()
方法。大家都有同一个祖先,叫Object。int,String这些都是基本的数据类型,但是往往不能满足封装的需求。将java类作为一个对象传过去,是为你的方法需要一个这个类的实例来进行一些操作。你就当它是和String,int是一类东西,没什么不同的。
当调用new A().method(ver0, ver1)时, 在java thread stack里新建一个栈帧, 每个栈帧里都有 一个变量数组, 称为local variables. 它的第一个元素为 this, 是一个reference; 第二个元素是对 Class1的对象实例的reference; 第三个元素是对 Class2的对象实例的reference. local variables只能有boolean, byte, char, short, int, long, float, double, reference, or returnAddress. 具体去看jvm spec吧.
PS: java里的字符串String是对象, 不是基本类型, 和int不一样!!!!