Java核心知识点整理之小碎片--每天一点点(坚持呀)--自问自答系列版本
创始人
2024-05-28 23:41:22
0

1.int和Integer

Integer是int的包装类;int是基本数据类型。 Integer变量必须实例化后才能使用;int变量不需要。
Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值。
Integer的默认值是null;int的默认值是0

2.两个new生成的Integer变量的对比

由于Integer变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变量永远是不相等的(因为new生成的是两个对象,其内存地址不同)。

3.Integer变量和int变量的对比

Integer变量和int变量比较时,只要两个变量的值是向等的,则结果为true(因为包装类Integer和基本数据类型int比较时,Java会自动拆包装为int,然后进行比较,实际上就变为两个int变量的比较)

4.非new生成的Integer变量和new Integer()生成变量的对比

非new生成的Integer变量和new Integer()生成的变量比较时,结果为false。(因为当变量值在-128~127之间时,非new生成的Integer变量指向的是java常量池中的对象,而new Integer()生成的变量指向堆中新建的对象,两者在内存中的地址不同)

5.两个非new生成的Integer对象的对比

对于两个非new生成的Integer对象,进行比较时,如果两个变量的值在区间-128到127之间,则比较结果为true,如果两个变量的值不在此区间,则比较结果为false

Integer i = 100;
Integer j = 100;
System.out.print(i == j); //true
Integer i = 128;
Integer j = 128;
System.out.print(i == j); //false

6.==和equals区别是什么?
补充: 在JVM中,内存分为堆内存跟栈内存。
他们二者的区别是: 当我们创建一个对象(new Object)时,就会调用对象的构造函数来开辟空间,将对象数据存储到堆内存中,与此同时在栈内存中生成对应的引用,当我们在后续代码中调用的时候用的都是栈内存中的引用;还需注意的一点,基本数据类型是存储在栈内存中;

“==”是运算符
①如果比较的对象是基本数据类型,则比较的是其存储的值是否相等;
②如果比较的是引用数据类型,则比较的是所指向对象的地址值是否相等(是否是同一个对象)。

equals是Object的方法,用来比较两个对象的地址值是否相等。
注意: equals 方法不能用于比较基本数据类型
如果没有对equals 方法进行重写,则相当于“==”,比较的是引用类型的变量所指向的对象的地址值。

一般情况下,类会重写equals方法用来比较两个对象的内容是否相等。比如String类中的equals()是被重写了,比较的是对象的值

7.值传递和引用传递的区别是什么?为什么说java只有值传递?

值传递:实参传递给形参的值,实参和形参再内存上是两个独立的变量,对形参的修改不会影响实参的值

引用传递:实参是传递给形参的是堆内存上引用的地址,形参和实参在内存上指向的是同一地址,对形参的改变会影响实参;

值传递,不论传递的参数类型是值类型还是引用类型,都会在调用栈上创建一个形参的副本。不同的是,对于值类型来说,复制的就是整个原始值的复制。而对于引用类型来说,由于在调用栈中只存储对象的引用,因此复制的只是这个引用,而不是原始对象。

8.什么是不可变对象?好处是什么?

不可变对象是指对象一旦被创建,状态就不能再改变,任何修改都会创建一个新的对象,如包装类、string

好处是:线程安全

9.能否创建一个包含可变对象的不可变对象?

可以;比如:

final person[] persons=new person[]{}.

persons是不可变引用,但是person实例却是可变的

不要共享可变对象的引用就可以了,如果需要变化时,就返回原对象的一个拷贝
10.Java创建对象有哪几种方式?
java提供了四种创建对象的方式:

1.new创建对象:例:Person p = new Person();
2.通过反射机制:可以调用 class类 或者 Constructor类的newInstance() 方法 例:Person p1 = Person.class.newInstance();
补充:
newInstance(),采用的是类加载机制,创建一个新的实例,使用newInstance()方法时,对象身上一定要有一个默认的无参构造方法;使用类加载机制:可以很灵活的,创建类的实例,以后更换类的时候,无须修改源代码了。
3.采用clone机制

补充:
深拷贝和浅拷贝的区别:
浅拷贝是创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址。
深拷贝是将一个对象从内存中完整的拷贝一份出来,从堆内存中开辟一个新的区域存放新对象。
区别:浅拷贝基本类型之前互不影响,引用类型其中一个对象改变了地址,就会影响另一个对象;深拷贝 改变新对象不会影响原对象,他们之前互不影响。

4.通过序列化机制:调用java.io.ObjectInputStream对象的 readObject()方法

相关内容

热门资讯

中国地铁英语报道内容范文【精... 中国地铁英语报道内容范文 篇一地铁成为现代城市交通的重要组成部分,越来越多的人选择地铁出行。为了方便...
高一满分英语作文范文10篇(... 高一满分英语作文范文10篇篇一:The Importance of ReadingReading i...
关于老师大爱的英语句子【精简... 关于老师大爱的英语句子 篇一Teachers: The Unsung Heroes of Our L...
怎样改善环境英语作文 怎样改善环境英语作文(通用6篇)  在平凡的`学习、工作、生活中,许多人都写过作文吧,作文可分为小学...
用英语简介美国的作文(精选4... 篇一:美国简介The United States of America, commonly know...
i的作文英语作文12篇【通用... i的作文英语作文12篇 篇一The Importance of Setting GoalsSetti...
介绍粽子的英语作文【通用6篇... Introduction to Zongzi - Article OneZongzi is a tr...
名著英文读后感(精彩3篇) 名著英文读后感 篇一Title: "Pride and Prejudice: A Timeless ...
英语作文300字(实用6篇) 英语作文300字 篇一Title: The Importance of ReadingReading...
初二英语作文:Eating ... 初二英语作文:Eating out 篇一Title: The Benefits and Drawba...
我最棒作文(实用3篇) 我最棒作文 篇一初入初中的我,对新环境充满了好奇和期待。作为一名优秀的学生,我积极参加各种活动,勤奋...
英语健康作文初中作文范文(精... 英语健康作文初中作文范文 篇一Title: The Importance of Exercise f...
英语作文:我的学校【优选3篇... 英语作文:我的学校 篇一My SchoolMy school is a place where I ...
小学英语日记:story【推... 小学英语日记:story 篇一Once upon a time, in a small villag...
Introduce Myse... 篇一: Introduce Myself自我介绍的英语作文「带翻译」 第一篇内容Hello ever...
高三英语作文【经典6篇】 高三英语作文 篇一:如何提高英语写作能力英语写作是高中英语考试中的一项重要内容,也是衡量学生英语综合...
五年级英语作文(精选6篇) 五年级英语作文 篇一My Favorite AnimalI have always been fas...
《雾都孤儿》英文读后感(最新... 《雾都孤儿》英文读后感 篇一"Oliver Twist" is one of the most in...
端午节习俗英语作文:划龙舟【... 端午节习俗英语作文:划龙舟 篇一The Dragon Boat Racing Tradition d...
GRE作文考试的字数要求(实... GRE作文考试的字数要求 篇一在GRE写作考试中,字数要求是一个重要的考试要点。考生需要在规定的时间...