挑战Java面试题复习第1天,坚持就是胜利

打印 上一主题 下一主题

主题 874|帖子 874|积分 2622

面向对象和面向过程的区别
面向过程:
步骤分析:将问题分解为一系列步骤。
函数实现:用函数渐渐实现这些步骤。
调用实验:在需要时调用这些函数。
高性能:得当对性能要求高的场所,如单片机和嵌入式开发。
面向对象:
对象分解:将问题分解为多个对象。
行为形貌:对象形貌事物在问题解决过程中的行为。
特性:封装、继续、多态。
优点:易于维护、复用和扩展,可构建低耦合体系。
性能:相对面向过程,性能较低。
标识符的命名规则
标识符:
定义:程序中自定义的元素,如类名、方法名、变量名等。
命名规则(硬性要求):
组成:可包含字母、数字、$、_。
限制:不能以数字开头。
避免:不得使用关键字。
命名规范(非硬性要求):
类名:首字母大写,后续每个单词首字母大写(大驼峰式)。
变量名:首字母小写,后续每个单词首字母大写(小驼峰式)。
方法名:与变量名规范相同。
自动装箱与拆箱
装箱:
定义:将根本数据类型自动转换为对应的包装器类型。
示例:int 转换为 Integer。
方法:通过 Integer.valueOf(int) 实现。
拆箱:
定义:将包装器类型自动转换回对应的根本数据类型。
示例:Integer 转换为 int。
方法:通过 Integer.intValue() 实现。
Java SE5之前的装箱:
需要显式使用 new 关键字创建包装器类型实例。
示例:Integer i = new Integer(10);
Java SE5及之后的装箱:
提供了自动装箱特性,简化了包装器类型的创建。
示例:Integer i = 10;(自动调用 Integer.valueOf(int))
重载和重写的区别
重写(Override):
父子类关系:仅在子类与父类之间发生。
方法署名一致:方法名、参数列表、返回类型(除子类方法返回类型是父类返回类型的子类外)必须与被重写的方法相同。
访问权限:子类方法的访问修饰符不能比父类方法的更严格。
异常限制:重写的方法不能抛出新的或更广泛的查抄型异常。
重载(Overload):
多态性体现:是类中多态性的一种体现。
参数列表差别:要求同名方法的参数列表必须不同(可以是参数类型、个数或顺序)。
返回类型:对返回值类型没有限制,可以相同也可以不同,重载的判定依据是参数列表而非返回类型。
equals与==的区别
== 操作符:
地点比力:比力两个对象在内存中的地点是否相同。
对象引用:判定两个引用是否指向同一个对象。
类型要求:操作数必须类型相同或存在继续关系。
数值比力:对于根本数据类型,如果值相称则比力结果为 true。
指针操作:本质上是比力指针地点。
equals 方法:
内容比力:比力两个对象的内容是否相称。
继续自 Object:所有类都继续自 java.lang.Object 类,适用于所有对象。
默认行为:如果没有重写 equals 方法,它的行为与 == 相同。
空指针安全:使用 equals 比力时,可以避免 NullPointerException。
最佳实践:在比力对象时保举使用 equals 方法,尤其是在阿里代码规范中。
总结:
在比力对象是否相称时,应使用 equals 方法。
在比力常量时,将常量写在前面,以避免可能的 NullPointerException。
保举使用阿里代码规范,并使用阿里插件来查抄和更换不合适的 == 使用。
Hashcode的作用
Java聚集分为List和Set:
List:有序,答应重复。
Set:无序,不答应重复。
Set判定元素存在性:
使用equals方法,但在大量元素时效率低。
哈希算法提升效率:
将聚集分别为多个存储地区。
每个对象通过hashCode方法计算哈希码,确定存储地区。
hashCode方法:
根据对象的内存地点计算出一个值。
聚集添加新元素时,先通过hashCode方法定位存储位置。
如果位置无元素,直接存储;如果位置有元素,使用equals方法比力。
相同则不存储,不同则寻找其他位置。
减少equals方法调用次数,进步性能。
String、StringBuffer和StringBuilder的区别
String 类要点:
不是根本数据类型,而是一个对象。
底层是 final 类型的字符数组。
字符串内容不可变,任何修改都会生成新的 String 对象。
字段定义:private final char value[];
字符串连接操作:
使用 + 操作符时,会隐式创建 StringBuilder 对象并调用 append 方法举行拼接。
StringBuilder 和 StringBuffer 要点:
两者都继续自 AbstractStringBuilder 抽象类。
底层都是可变字符数组:char[] value;
适用于频繁的字符串操作。
线程安全:
StringBuffer 是线程安全的,方法加了同步锁。
StringBuilder 非线程安全,没有加同步锁。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

怀念夏天

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表