七天恶补java_恶补JAVA基础

java 的方法中传入一个Object类型的参数它具体是什么类型的呢

1---Object是这些类的原始祖先。String类什么的包括你自己定义的类,都可以归到它的名下。(int 不是类,是基本数据类型)

好处是,这样可以适应更广泛的传参类型而不必每个类的参数类型都去专门定义一个功能类似的方法,当一个方法为

fun(Object a){}的时候

你用String做a也可以,用YourClass自定义的类做a等都可以。。。

而你如果只是

fun(String a){ }的话,就只能用String来做参数a。当你需要其他参数的fun的时候,你还得再新写一个fun(OtherClass a){}。

2---那就是传什么类型的数据都可以。Object是所有类的父类,作为参数的话可以接收任意子类的的实例,像String,int都可以。

至于为什么用,可能这是一个综合处理方法,可以处理任意多个类型的实例。

Object o 与 Object o = null 的区别

Object o; 这种写法只是分配一个引用而已。

Object o = null; 这么写则是给引用指向了一个空对象。具体差别如下:

class Test {

public static void main(String[] args) {

Object o1;

o1.toString();    /*这里编译不能通过,编译器只认定o1是个引用,没指向任何对象,所以不能调用方法。*/

Object o2 = null;

o2.toString();    /*这里编译可以过,但是有空指针异常,编译器认定o2是一个对象,虽然是一个空对象。*/

}

}

null对象是一个特殊的对象,他可以是任何类型。他只是作为一个标记而已,只是为了标记不存在而存在的。也没必要去追究他在内存是什么样。null就是一个标记而已。容器可以接受一个空对象,但是一个空引用则是不接受的。

关于java的null

比如a=null;

以下说法哪种正确?

1)a在栈里 其引用的一段内存空间处于堆中,但是这段内存空间虽然是存在着的,但是里面没有存储任何内容。

2)a在栈里,其没有引用堆中的任何内存空间,即a本身就是一个null

a=null则是表明,首先,a是必然在栈区的,a的值是一个地址(假设它真的是一个指针),a=null表示的是a的值是null,与堆区无关

java说的很清楚,在堆中开辟空间是用new关键字实现的,null不可能分配空间,退一步来说,即使null分配了空间,在给a赋值以后a必然会指向另一个内存空间,null分配的空间从头到尾起了什么作用?java虚拟机会这么做吗

我觉得第二个是对的

准确来说a只是一个引用,他其实相当于C里的指针。

a这个引用也是一个变量,它在栈里。这个变量可以保存的内容是一个地址,这个地址表示了堆空间中的一个起始地址。当a被赋值后,a里放的就是它指的那个对象的地址。所以,a如果为null的话,准确说它是没有在堆里分配空间的,就如2楼所说,没有意义。

程序执行到return,就直接跳出方法体!不管return语句是否被嵌套!

-----------------------------------------------------------------------摘自百度知道

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值