未命名

发布时间:2020-11-15编辑:dyy阅读(1069)

while和do-while循环的区别

while先判断后执行,第一次判断为false,循环体一次都不执行

do while先执行 后判断,最少执行1次

break和continue的作用

break: 结束当前循环并退出当前循环体还可以退出switch语句

continue: 循环体中后续的语句不执行,但是循环没有结束,继续进行循环条件的判断(for循环还会i++)。continue只是结束本次循环

类和对象的关系

类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。

类和对象好比图纸和实物的关系,模具和铸件的关系。比如人类就是一个概念,人类具有身高,体重等属性。人类可以做吃饭、说话等方法

实例:小明就是一个具体的人,也就是实例,他的属性是具体的身高200cm,体重180kg,他做的方法是具体的吃了一碗白米饭,说了“12345”这样一句话

面向过程和面向对象的区别

先有面向过程,后有面向对象,因为针对面向过程的不足推出了面向对象开发思想

面向过程:事物比较简单,可以用线程的思维去解决

面向对象:事物比较复杂,使用简单的线性思维无法解决

两者都是解决实际问提的一种思维方式,解决复杂问题,可以通过面向对象方式便于我们从宏观上把事物之间复杂的关系、方便我们分析整个系统,但是从具体具体到微观操作,我们可以使用面向过程方式来处理

比喻:蒋介石和毛泽东分别是面向过程和面向对象的杰出代表,这样充分说明,在解决复制问题时,面向对象有更大的优越性

如果面向过程是蛋炒饭,面向对象是盖浇饭。盖浇饭的好处就是“菜”“饭”分离,从而提高了制作盖浇饭的灵活性,饭不满意就换饭,菜不满意换菜,“可维护性”比较好,“饭” 和“菜”的耦合度比较低

面向过程以实现功能的函数开发为主,而面向对象要首先抽象出类、属性及其方法,然后通过实例化类、执行方法来完成功能

两者都具有封装性,但是面向过程是封装的是功能,而面向对象封装的是数据和功能

面向对象具有继承性和多态性,而面向过程没有继承性和多态性,所以面向对象优势是明显

方法重载和方法重写的区别



英文位置不同        作用不同修饰符返回值方法名参数抛出异常
重载overload同一个类中在一个类里面为一种行为提供多种实现方式并提高可读性无关无关相同不同无关
重写override子类和父类间父类方法无法满足子类的要求,子类通过方法重写满足要求大于等于小于等于相同不同
小于等于

==和equals的区别和联系

==”是关系运算符    equals() 是方法用于判断 Number 对象与方法的参数进是否相等     同时他们的结果都返回布尔值;

“==”使用情况如下: a)基本类型,比较的是值   b) 引用类型,比较的是地址   c) 不能比较没有父子关系的两个对象

equals()方法使用如下:a) 系统类一般已经覆盖了equals(),比较的是内容。  b) 用户自定义类如果没有覆盖equals(),将调用父类的equals (比如是Object),而Object的equals的比较是地址(return (this == obj);)   c) 用户自定义类需要覆盖父类的equals()

(return (this == obj);)可以看出这里定义的equals与==是等效的(Object类中的equals没什么区别),不同的原因就在于有些类(像String、Integer等类)对equals进行了重写,但是没有对equals进行重写的类(比如我们自己写的类)就只能从Object类中继承equals方法,其equals方法与==就也是等效的,除非我们在此类中重写equals

对equals重写:

自反性:对任意引用值X,x.equals(x)的返回值一定为true;

对称性:对于任何引用值x,y,当且仅当y.equals(x)返回值为true时,x.equals(y)的返回值一定为true;

传递性:如果x.equals(y)=true, y.equals(z)=true,则x.equals(z)=true ;
一致性:如果参与比较的对象没任何改变,则对象比较的结果也不应该有任何改变;

 非空性:任何非空的引用值X,x.equals(null)的返回值一定为false 。





标签

评论