Object object = null;和Object Object;有什么区别啊,能不能从内存分配的情况解释一下呢?

作者&投稿:拱岭 (若有异议请与网页底部的电邮联系)
JAVA基础: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就是一个标记而已。容器可以接受一个空对象,但是一个空引用则是不接受的。

首先你要先明白它们分别的作用是什么:
object.equals(null),“equals()”方法是比较“值”是否相等;
object==null,“==”比较运算符是用来比较“对象”是否是同一个。

说的简单一点java是面向对象的编程语言:
如果new了一个对象,那么它就有值,它的值可以是“null”;
如果根本就没有new这个对象,那它就不存在,没有办法进行比较,就会出现空指针的异常。

说的有些模棱两可,给你举个例子:
Object object1=new Object();
Object object2=new Object();
Object object3;

object1.equals(object2);//这是true
object1==object2;//未必是true
object3==object2 ;//就要报错,因为object3还未开辟内存,object2不知道指向谁取进行比较。

也就是说,每次new一个对象都是新开辟一块内存,它们分别站在不同的位置上进行比较,equals是比较他们的值,而==相当于比较它们的位置!

不知道你懂了没有,不过你可以问我~

我的qq:287572694(神龙之首)

java精英群:63353323

看两者所在的位置了
如果都是类的成员变量,则两者可以说是完全一样的,因为Object object;默认赋值就是null;如果是方法级的变量,则两者就有一点区别了,Object object;只是声名了一个引用,没有默认值,并没有分配内存,引用的时候会报错,并且通不过编译;Object object = null;声名了一个引用,并赋值为null,指向一个空的地址,引用的时候会报 空指针异常,可以通过编译

Object object = null;和Object object;
同样都是创建一个名为object的对象 它们都为空

区别是后面那个没赋值 如果使用的话 会报语法错误

object obj=null; 申请一个object 型的引用,指向一个空地址
object obj 声请一个引用,但没有指向任何东西
试用时前者编译可以过,后者编译通不过

一个东西鸟,引用类型默认值都是null,引用哪个都会是空指针异常。


临颍县18756582227: Object object = null;和Object Object;有什么区别啊,能不能从内存分配的情况解释一下呢? -
燕冉藿香: Object object = null;和Object object; 同样都是创建一个名为object的对象 它们都为空 区别是后面那个没赋值 如果使用的话 会报语法错误

临颍县18756582227: java中Object object=new 自定义的构造方法名(参数);是什么意思?作用是什么?为什么要这样做? -
燕冉藿香: 其实这就是隐式转换!new后面的构造器所在的实例自然是Object的实例,Object类是超根类,它是最大的!仔细来讲Object是声明类型.而new后面的自定义类是引用类型,因为Object是超根类的缘故,即自定义类是Object类的子类,所有匹配方法时在虚拟机中会自动匹配的自定义类中的方法.

临颍县18756582227: JAVA基础:Object o 与 Object o = null 的区别 -
燕冉藿香: Object o; 这种写法只是分配一个引用而已.Object o = null; 这么写则是给引用指向了一个空对象.具体差别如下:class Test { public static void main(String[] args) { Object o1; o1.toString(); /*这里编译不能通过,编译器只认定o1是个引用...

临颍县18756582227: object object什么意思 -
燕冉藿香: n 物体;目标;宾语;客体;对象vi 不赞成,反对;抱反感vt 提出...作反对的理由

临颍县18756582227: object object 怎么解 -
燕冉藿香: 看过这本书,不是什么特殊用法. 你看了第一章最后一节就会明白他为什么要强调cody是Object() object,这里面有一句话: "An Object() object (e.g. var myObject = new Object()) is a very specific type of value expressed in JavaScript."

临颍县18756582227: Object o=new Object解释是下什么意见 -
燕冉藿香: new出来的Object对象数组,但是同样属于对象因为Object是任何对象的父类你拿对象直接取小标当然是不行的,要数组才行.但是你声明的是对象,而不是对象数组下面的String str=new String[10] 因为字符串数组已经不再是字符串这个与Object不同 ,Object数组仍然是Object,但是String则不是

临颍县18756582227: 下面程序中,Object(){} Object(char na[],int n){strcpy(name,na);no=n;} 是什么意思,为什么出来两次 -
燕冉藿香: C++啊,构造函数,只要参数不全一样,就可以写多个,实例化对象的时候会根据传入参数自动选择对应的构造函数. setobject可以设置name和no啊,对于使用无参构造函数实例化的对象,可以使用这个函数来修改成员.

临颍县18756582227: 计算机中的项目是哪个英语单词以o开头
燕冉藿香: object1名词 n. 1.物体CI don't know the names of the objects in this lab. 我不知道这个实验室里物件的名称2.对象;目标C( of)3.目标,主旨CWhat is the object of his visit吗 他此次拜访的目标是什么吗4.语 宾语C

临颍县18756582227: 在java中,Object o = new Object(){};这个花括号是干什么的? -
燕冉藿香: 右边是一种匿名内部类的写法, new Object(){}代表匿名内部类的一个子对象,{}内的代码依据此处“Object”是否包含抽象方法分两种情况: 1,若Object为接口或含有抽象方法(抽象类)、{}内必须包含该接口的方法实现代码或者说重写该...

临颍县18756582227: {object,object} -
燕冉藿香: 楼上的兄弟,楼猪的问题明显是 JavaScript的楼主要看这个对象的属性必须得知道这个object具体是指什么类型的对象比如 <input id="text" name="textName" type="button...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网