当前位置: 首页 > article >正文

面试题库之JAVA基础篇(一)

java的特性
  1. 面向对象,能够使程序的耦合度更低,内聚性更高。
  2. 平台无关性,因为java程序运行在jvm虚上。
  3. 支持多线程。
  4. 安全可靠。
  5. 有丰富的类库。
面向对象

        万物皆对象,将解决问题的各个元素抽象成对象,对象中包含解决单个或某类问题的属性、行为(方法),将需要的对象组合到一起,达到解决问题的目的;面向对象有封装、继承、多态的特性,所以有很好的维护性、复用性、扩展性。

封装 
  1. 将某一类的行为(数据操作)内聚到一个类中,并且隐藏其实现过程,只对外提供特定的方法,使用者只能调动对外公开的方法,无法对封装类进行修改。
  2. 好的封装能够降低耦合性、提高封装类的扩展性。
 继承
  1. 使用已有的类作为基础(基类)建立新类,新类拥有基类的属性和方法,同时也可以新增自己的属性和方法。
  2. 子类无法访问父类的私有属性和方法。
  3. 子类可以重写父类的方法。
  4. 提高代码的复用性,增加代码的耦合度。
多态 
  1. 同一对象同一方法调用的表现结果不同。
  2. 实现条件:继承重写、向上转型。 
重写(Override)
  1. 子类把父类中可继承的方法重新一遍,重写发生在子类中。
  2. 重写的方法的方法名、参数、返回类型必须和父类的一致,其中返回类型可以是父类发放返回类型的子类。
  3. 重写方法的访问修饰权限不能小于父类方法。
  4. 重写方法中不能申明新的异常或检查范围更大的异常。
  5. 运行时多态。
重载(Overload)
  1. 同一类中,存在方法名相同且参数列表不同的情况。
  2. 参数列表的不同可以是参数类型不同、参数个数不同、参数顺序不同。
  3. 返回类型可以不同。
  4. 编译时多态
向上转型
  1. 子类转换为父类类型。
  2. 子类中重写的父类方法被保留。
  3. 子类自定义的属性、方法将被丢弃。 
创建对象的方式
  1. new创建新对象。
  2. 通过反射机制。
  3. 采用clone机制。
  4. 通过序列化机制。 
标识符命名规则
  1. 标识符可以包含大小写英文、0-9的数据、下划线、$。
  2. 标识符不能以数字开头。
  3. 类型用大驼峰式,首字符大写,后面每个单词首字母大写。
  4. 变量、方法名用小驼峰式,首字母小写,后面每个单词首字母大写。
权限修饰符 
权限修饰符访问范围
public被public修饰的类、接口、方法和变量等成员都可以被任何其他类或对象所访问
protected被protected修饰的类、方法、变量或者接口只能被相同包或其子类中的类或对象所访问
defaultdefault是Java中的默认访问权限修饰符,它表示不指定任何访问权限修饰符时所使用的访问权限。如果一个类、方法、变量或接口没有使用任何访问权限修饰符,则这些成员默认为包级别访问权限,也就是说,只能在同一个包内被访问
private被private修饰的类、方法、变量或接口只能在自己的类中被调用
基本数据类型
基本类型占用字节默认值有效范围封装类
byte10-2^7~2^7Byte
short20-2^15~2^15-1Short
int40-2^31~2^31-1Integer
long80L-2^63~2^63-1Long
float40.0f1.4E-45~3.4028235E38Float
double80.0d4.9E-324~1.7976931348623157E308Double
boolean-falsetrue或falseBoolean
char2\u0000(null)0~65535Character
boolean

        jvm中没有boolean专用的字节码命令,单个boolean在jvm使用是int数据类型代替,数组boolean使用是btye数组。使用int的原因是32位的CUP一次处理数据是32位,存取效率较高。

自动拆箱与装箱

        拆箱:将包装类型转换为基本数据类型,Integer>>int:Integer.intValue。

        装箱:将基本数据类型转换为包装类型,int>>Integer:Integer.valueOf(int)

instanceof 

        java中的一个双目运算符,用来判断一个对象是否一个类的实例、子类。

 ==
  1. 如果是基本数据类型,比较的是值,等号两边的类型必须一致。
  2. 如果是对象,比较的是对象的堆内存地址。
equals
  1. 用于对象比较,用于比较两个对象的内容是否相等。
  2. 被比较的对象如果没有重写equals方法,那么会使用object类的equals方法,而object的equals方式返回的是==的判断。 
hashCode 

        默认情况下,大部分对象的hashCode默认是根据对象的存储地址计算的出来的一个散列值,大部分情况下对象的hashCode是用的不上的,主要在集合(set,hashMap、hashTabel)添加元素的时候用于快速定位和判重。

        比如一个set里面已经有了10000个对象,这时要添加一个元素,首先要判重,如果那要添加的这个元素跟10000个对象都比较一下的,效率上会很慢,使用hashCode的话可以快速定位到set集合里面是否已有这个hashCode,如果没有,直接添加元素,如果有,再把hashCode对应的对象拿出来与要添加的对象进行equals比较,equals返回true放弃添加,false则添加。

equals和hashCode的关系
  1. 一个对象,重写equals就要重写hashCode。
  2. 当一个对象 equals() 方法所使用的字段不变时,多次调用 hashCode() 方法的值应保持不变。
  3. 如果两个对象equals相等,则hashCode必须相等。
  4. 如果两个对象的equals不相等,则hashCode可能相等,单建议不相等,以提升性能。

http://www.kler.cn/a/149789.html

相关文章:

  • 【CICD】GitLab Runner 和执行器(Executor
  • 【大数据学习 | kafka高级部分】kafka中的选举机制
  • 多线程和线程同步复习
  • SpringBoot单体服务无感更新启动,动态检测端口号并动态更新
  • 一文了解 Tableau 2024.3 如何展现已发布数据源的数据模型
  • 16S,18S引物覆盖度测试:SILVA和PR2
  • springboot自动重启及SpringBoot Developer tools简介
  • 22-Python与设计模式--状态模式
  • 2023亚太地区数学建模B题思路分析+模型+代码+论文
  • LeetCode 5 最长回文子串
  • Oracle Linux 9.3 发布
  • 大模型加载的参数介绍及推荐表,temperature、top_k、top_p、num_beams、num_beam_groups、do_sample等
  • Python压缩、解压文件
  • 数据库中生成列的对比
  • C 语言头文件
  • 图书管理系统源码,图书管理系统开发,图书借阅系统源码配置和运行图解源码已附加
  • 【华为OD题库-042】战场索敌-java
  • Kafka集群部署详细教程
  • Bug 检查 0x7B:INACCESSIBLE_BOOT_DEVICE(未解决)
  • Android WorldWind加载shapefile格式文件形成三维效果
  • Android 13.0 无源码app修改它的icon图标
  • 【pytest】执行环境切换的两种解决方案
  • IO和NIO的区别 BIO,NIO,AIO 有什么区别? Files的常用方法都有哪些?
  • 计算机端口
  • 量子力学应用:探索科技前沿的奇幻之旅
  • 智慧城市包括哪些内容?有哪些智慧城市物联网方案?