A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


1.什么是内部类,使用匿名内部类的前提是什么?
2.请从你的理解谈谈,匿名内部类的作用?
3.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?
4.我们为什么要重写equals()方法?
5.==和equals()的区别?

16 个回复

倒序浏览
1.什么是内部类,使用匿名内部类的前提是什么?
(1)概念:在一个类中定义一个类
(2)前提:存在一个类或者接口,这里的类可以是具体类也可以是抽象类

2.请从你的理解谈谈,匿名内部类的作用?
如果一个方法的参数是接口类型或者是抽象类型,那么就可以使用匿名内部类作为该方法的参数传递,实际传递的就是该接口的实现类对象或者抽象类的子类对象,来简化传统的代码。

3.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?
(1)当一个类上面没有父类的时候,该类就继承Object类,而Object类中的toString()方法的返回值为对象的地址值,
所以当我们打印对象的时候,结果是地址值;但是在集合中,打印对象结果为集合的内容,因为在这里已经将toString()方法重写了。
(2)当类在main方法中打印对象的时候,会自动调用toString()方法,并将toString()方法的返回值输出。

4.我们为什么要重写equals()方法?
因为我们希望equals()方法用来比较的是对象的内容,而不是用来比较对象的地址值,从而提高编码效率。

5.==和equals()的区别?
(1)==:用来比较两个值是否相同,相同返回值为 true , 不同则返回值为 false
(2)equals():用来比较两个对象的地址值是否相同,相同返回值为 true , 不同则返回值为 false

——张柠
回复 使用道具 举报
1.什么是内部类,使用匿名内部类的前提是什么
内部类就是在一个类中定义另外一个类B,这个类B就是内部类
前提是存在一个类或者接口,本质上是一个继承了该父类或者实现接口的子类匿名对象

2.请从你的理解谈谈,匿名内部类的作用?
匿名内部类是体现了java面向对象思想中的封装性,隐藏了实现的细节,但是对外提供了访问的方法,
主要是解决了每次子类继承父类或者实现接口类只使用一次对象,但是却还是得编写一个java类的问题。

3 思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?
打印对象的时候,默认会调用根类的toString方法,如果是自己重写了toString方法,那么就会打印的是对象的属性内容,不然在Object
中的toString()方法打印的是对象的地址值;对象会在打印对象的时候调用这个方法。

4.我们为什么要重写equals()方法?
因为默认的equals()方法比较的是两个对象的地址值,而重写equals方法可以比较结合对象的属性进行比较

5.==和equals()的区别?
前者在比较基本数据类型时候,是比较两者的数值,
而比较引用数据类型的时候,是比较两者的地址值
equals默认比较的是比较两个对象的地址值,而重写后的主要是比较对象的属性值
回复 使用道具 举报
1.什么是内部类,使用匿名内部类的前提是什么?
内部类是在类中创建的,内部类分为两种,一种是成员内部类,在类中方法外;一种是局部内部类,在类中方法中。
匿名内部类的前提是需要有一个接口或者类。

2.请从你的理解谈谈,匿名内部类的作用?
如果一个实现类或子类只需要创建一次对象时,则无需编写实现类或者子类,直接使用匿名内部类将编写类和创建对象的步骤合二为一。

3.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?
使用输出语句打印对象时会调用toString方法,不重写toSring会默认打印地址值,只有重写才会打印对象的内容。

4.我们为什么要重写equals()方法?
不重写equal()方法只能比较对象的地址值,只有重写才能比较对象的内容。

5.==和equals()的区别?
==在基本数据类型中比较的是数字,在引用数据类型中比较的是地址值。
equals不重写时在引用数据中比较的是地址值,重写可以比较引用数据类型的内容。
回复 使用道具 举报
1.什么是内部类,使用匿名内部类的前提是什么?
        内部类:就是在一个类中定义一个类。
        匿名内部类前提:存在一个类或者接口,这个类可以是具体类也可以是抽象类。

2.请从你的理解谈谈,匿名内部类的作用?

        匿名内部类解决了在只创建一次对象的时候,不得不创建一个对象实例的问题。

3.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?
        因为Object是所有类的直接或者间接超类。此类中有toString方法,打印出来的就是一些地址值。打印对象的时候就是调用它的toString方法。如果子类没有重写toString那么就是调用Object的toString方法,打印出地址值,如果子类重写了,那么就按照重写的格式来打印。

4.我们为什么要重写equals()方法?

        因为Object是所有类的直接或者间接超类。此类中有equals方法,在此方法中equals比较的是对象的地址值,但是“==”号也有比较地址值的功能,有些时候我们希望比较内容,所以我们就重写了equals方法,来按照我们想要的方式来比较。

5.==和equals()的区别?
        当比较的内容时基本数据类型时:
                ==和equals是一样的结果,都是比较值;


        当比较的内容时引用类型时:
                ==比较的是对象的地址值。
                equals比较的是地址的内容,当然也可以重写equals方法,比较你想要比较的内容。
回复 使用道具 举报
1.什么是内部类,使用匿名内部类的前提是什么?
内部类:当两个类是包含关系,一个类定义在另一个类中称为内部类
使用匿名内部类的前提:存在一个接口或者类,这里的类可以是具体的也可以是抽象的类

2.请从你的理解谈谈,匿名内部类的作用?
当实现类/子类只需要创建一次对象,无需编写实现类或者子类,可以使用匿名内部类将编写类和创建对象的步骤合二为一

3.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?
       对象在打印和字符串拼接的时候会调用toString()方法
       打印对象实际上是调用toString()方法,如果该对象所在的类重写Object类的toString()方法就会打印出内容,否则默认
使用Object继承过来的toString()方法打印对象的地址值

4.我们为什么要重写equals()方法?
如果不重写equals()方法,比较的是对象的地址值,不同对象的地址值都是不一样的,
如果需要比较对象的属性值就必须重写equals()方法,否则默认使用继承自Object类的equals()方法

5.==和equals()的区别?
  ==比较基本数据类型时,比较的是数据值是否相等;比较引用数据类型时,比较的是地址值
  equals()比较的是引用类型,如果不重写Object类的equals()方法比较的是地址值,如果重写了该方法,可以比较引用类型的内容
回复 使用道具 举报
谢黄 中级黑马 2019-7-22 21:14:02
7#
1.什么是内部类,使用匿名内部类的前提是什么?
  内部类:在一个类的内部进行定义的一个类
  前提是:存在一个类或一个接口,也可以是抽象类
2.请从你的理解谈谈,匿名内部类的作用?
  作用:如果是使用一次的方法调用,可以使用匿名内部类,省掉建立新的类,提高代码的效  

率,节约空间
3.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用

toString()方法?
  因为打印对象默认的是使用Object类中的toString方法,这个打印的是地址值
  而如果希望打印子类对象的时候,显示的是对象的内容,在子类中就需要重写toString方法  

,届时打印的就是内容
4.我们为什么要重写equals()方法?
  因为本身==就是比较两者之间的地址值,不重写的话默认父类都是Object对比的也是地址值  

,更多需要的是比较内容是否相同,这时候就需要重写
5.==和equals()的区别?
  ==  比较的是地址值
  equals()在父类是object中比较的也是dizz
  重写之后比较的是内容
回复 使用道具 举报
1.什么是内部类,使用匿名内部类的前提是什么?
内部类就是在类中定义另一个类,内部类的前提是这个内部类的使用只有一次,若为多次的话推荐传统方法。

2.请从你的理解谈谈,匿名内部类的作用?
较之传统代码简化了代码。

3.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?
因为在我们没有重写toString方法时,就调用Object里面的toString方法
当调用的是我们创建对象的时候,输出地址值;当打印数组或者集合时就会输出对象内容,因为此时的toString已经被重写了。

4.我们为什么要重写equals()方法?
在我们创建的类中重写equals()能够比较对象的内容而是不比较对象的地址值

5.==和equals()的区别?
== 比较的是两边的地址值是否相同,
equals比较的是两边的内容是否相同
回复 使用道具 举报
1.什么是内部类,使用匿名内部类的前提是什么?

内部类就是定义在一个类的内部,被包含的类。

使用匿名内部类的前提就是,如果一个对象只需要被创建一次,就可以使用匿名内部类

2.请从你的理解谈谈,匿名内部类的作用?

简化开发步骤,不需要每次调用调用接口或者抽象类中的方法时都重新创建一个java文件,可以省去很多步骤,简化代码

3.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?

因为所有的类都直接或者间接继承了object类,而在其中的to string方法,默认就是显示地址值,但是如果调用对象重写了这个to string方法,那么打印出来的就是对象的内容。对象在需要打印出来对象中的内容时就会需要调用to string方法

4.我们为什么要重写equals()方法?

如果不重写的话,比较出来的是两个地址值的相同或者不同,而我们想要比较的是对象中的内容是否相同,所以就要重写equals方法

5.==和equals()的区别?

==是比较两个对象的地址值的是否相同,如果不重写的情况下,那么和equals没区别。如果equals方法被重写之后,比较的是内容,那么就和==不同
回复 使用道具 举报
1.什么是内部类,使用匿名内部类的前提是什么?
答:一个类定义在另外一个类中就是内部类,
使用匿名内部类的前提是一个子类,现实类,接口,在只使用一次创建对象的时候,无需新建实现类和子类.
2.请从你的理解谈谈,匿名内部类的作用?
答:匿名内部类的作用是减少实现类和子类的创建优化程序代码.
3.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?
答:打印对象是地址值是因为子类没有重写toString方法它直接调用了object的方法,
打印的是内容因为子类重写了toString方法,
对象在打印的时候就会调用toString方法.
4.我们为什么要重写equals()方法?
答:如果不重写equals()方法就会默认调用object的方法,就会直接对比地址值.重写了equals()方法才会比较内容.
5.==和equals()的区别?
答:==是object的方法它对比的是对象的地址值, equals是子类或者自定义类的方法它对比的是对象的内容.
回复 使用道具 举报
1.什么是内部类,使用匿名内部类的前提是什么?
在类中又定义一个类,匿名内部类的前提是有接口或者类。

2.请从你的理解谈谈,匿名内部类的作用?
省去了编写子类的麻烦。

3.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?
所有类都直接或者间接继承Object,都有Object的方法,当使用输出语句打印对象,默认调用toString()方法,此时打印的是地址值,如果重写toString()方法,打印的是内容。当直接打印对象时,会调用toString()方法,只不过对象名后面省略了toString()。

4.我们为什么要重写equals()方法?
为了比较两个对象的内容是否相同。

5.==和equals()的区别?
==比较的是地址值,对于equals方法不重写比较的两者的地址值,重写比较的是内容。
回复 使用道具 举报
1.什么是内部类,使用匿名内部类的前提是什么?
    内部类指的是类中类,把一个类定义在另一类中
    前提是要有一个接口或抽象类或父类。
2.请从你的理解谈谈,匿名内部类的作用?
    匿名内部类就是对象本身可以作为方法的参数传递,
    将创建类和创建对象两个步骤合二为一
3.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候调用toString()方法?
    因为打印的时候没有重写方法Object类中的方法默认是指向地址值
    在需要打印对象的时候就要调用toString()方法
4我们为什么要重写equals()方法?
    不重写equals()方法,默认是比较对象的地址值,想要比较内容的时候就需要重写equals()方法
5.==和equals()的区别?
    ==在Object类中是比较两个对象的地址值
    equals()则是一个方法,我们可以重写方法而达到我们想要比较的内容
回复 使用道具 举报
1.什么是内部类,使用匿名内部类的前提是什么?
在一个类中定义另一个类称为内部类。
前提:有一个接口丶抽象类或者普通父类
2.请从你的理解谈谈,匿名内部类的作用?
如果一个实现类/子类只需要创建一次对象,无需编写实现类或者子类,那么就可以使用匿名内部类把实现类/子类和创建对象结合起来,可以少写一个子类/实现类,简化代码。
3.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?
        打印对象的时候,打印出来的时地址是因为没有重写Object类的toString方法,那么就会默认调用Object中的toString方法打印地址值,打印出对象内容的是因为该子类重写了Object类的toString 方法.
调用时机:在打印需要对象时,调用toString方法
4.我们为什么要重写equals()方法?
因为直接调用Object类中的equals()方法底层是==,比较的是对象的地址值,当我们需要比较对象内容的时候就要重写equals()方法
5.==和equals()的区别?
(1)==是一个逻辑运算符,用来比较基本数据类型时比较的是对象值,==用在比较引用数据类型时比较的是对象的地址值。
(2)equals()Object类中的一个方法,它的底层是==,用来比较对象的地址值,但equals能被Object的子类重写,用来比较对象内容。

回复 使用道具 举报
1.什么是内部类,使用匿名内部类的前提是什么?
在一个类中定义另一个类称为内部类。
前提:有一个接口丶抽象类或者普通父类
2.请从你的理解谈谈,匿名内部类的作用?
如果一个实现类/子类只需要创建一次对象,无需编写实现类或者子类,那么就可以使用匿名内部类把实现类/子类和创建对象结合起来,可以少写一个子类/实现类,简化代码。
3.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?
        打印对象的时候,打印出来的时地址是因为没有重写Object类的toString方法,那么就会默认调用Object中的toString方法打印地址值,打印出对象内容的是因为该子类重写了Object类的toString 方法.
调用时机:在打印需要对象时,调用toString方法
4.我们为什么要重写equals()方法?
因为直接调用Object类中的equals()方法底层是==,比较的是对象的地址值,当我们需要比较对象内容的时候就要重写equals()方法
5.==和equals()的区别?
(1)==是一个逻辑运算符,用来比较基本数据类型时比较的是对象值,==用在比较引用数据类型时比较的是对象的地址值。
(2)equals()Object类中的一个方法,它的底层是==,用来比较对象的地址值,但equals能被Object的子类重写,用来比较对象内容。

回复 使用道具 举报
1.什么是内部类,使用匿名内部类的前提是什么?

当两个类有包含关系,被包含的类定义在另外一个类中,叫做内部类。
存在一个接口,或者抽象类或普通类(很少有)。

2.请从你的理解谈谈,匿名内部类的作用?

当我们要调用一个方法,方法的参数类型为接口,或者抽象类的时候,我们多些一个实现类或者子类的,
还需要在测试类中创建对象,然后我们使用匿名内部类就将两部合成一部,这样方便快捷的很多。
本质:是一个实现类该接口/继承了该抽象类的  实现类对象/子类对象

3.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?

打印出来是地址值是对象没有重写toString方法,能打印出内容是因为我们重写了toString方法,java中有的类是
已经帮我们写好的例如:String类
对象在输出的时候会调用同toString方法,当我们重写了子类的toString方法的时候,调用的是子类的,
否则调用的是父类的。

4.我们为什么要重写equals()方法?

因为equals()底层是==写的,当我判断两个对象的时候,判断的是两个类的地址值,所有我们得重写equals()
才能判断两给对象得内容是否相同。
强烈建议:当我们自定义类的时候,必须重写equals方法。

5.==和equals()的区别?
==
基本类型:比较的时候两个对象具体值是否形同
引用类型:   比较的是两个对象的地址值是否相同
equals:  可用来比较两个对象的地址值也可以比较两个对象的内容是否相同。
回复 使用道具 举报
1.什么是内部类,使用匿名内部类的前提是什么?
在一个类当中再次定义一个类,可以是一个接口 也可以是一个抽象类具体的类
2.请从你的理解谈谈,匿名内部类的作用?
简化代码
3.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?
(1)当一个类上面没有父类的时候,该类就继承Object类,而Object类中的toString()方法的返回值为对象的地址值,
所以当我们打印对象的时候,结果是地址值;但是在集合中,打印对象结果为集合的内容,因为在这里已经将toString()方法重写了。
(2)当类在main方法中打印对象的时候,会自动调用toString()方法,并将toString()方法的返回值输出。
4.我们为什么要重写equals()方法?
对比内容而不是对比地址值
5.==和equals()的区别?
一个是对比地址值一个是对比内容
回复 使用道具 举报
1.什么是内部类,使用匿名内部类的前提是什么?
内部类:在一个类中定义一个类叫成员内部类.如:类A的内部定义一个类B就被称为内部类
前提:存在一个接口或者类(可以是具体类也可以是抽象类)

2.请从你的理解谈谈,匿名内部类的作用?
作用:在开发中,发现方法需要,接口或抽象类的子类对象,我们就可以传递一个匿名内部类过去简化传统代码

3.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?
没重写对象内容是打印的是地址值,重写对象内容就打印对象内容.

4.我们为什么要重写equals()方法?
不重写对比的就是地址值是否相等,重写对比的就是内容是否相等.

5,==和equals()的区别?

"=="比较地址值,"equals()"比较内容
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马