Java面经总结(1)

此面经总结采用分点式,模块记录,便于总结整理与记忆

JavaSE总结

基本概念
1. 8种基本类型

byte类型 char 类型 int类型 short类型 long类型 double类型 float类型 boolean类型
八大类型在Java内存中的排序是每8个字节排在一起,所以会有一个内存问题是:
8个字节按照byte, char/short, int, long/double, 进行内存摆放会有几种情况。

2. String

String 统一使用static final类型进行修饰,一旦声明就不能被修改。
所以要想修改String内容可以使用StringBuffer和StringBuilder.
StringBuffer 具有线程安全,支持多并发的特性,而StringBuilder本质上是通过链表结构进行存储,它不支持多并发和线程安全。

3.“==”与equals()区别

“==”只用在基本数据类型进行数值比较,和对象引用的比较,
而equals()是通过在继承的Object中重写equals()方法来进行实例对象的值比较。
典型的如String中因为是static final类型,重写了equals()方法,所以是值比较。

为什么要重写equals()和hashcode()

在HashMap中,有key和value两值,重写hashcode()用于保证两个对象key值相同情况下可以得到相同的hashcode值,在hashcode值相同的基础上(即确定了两个对象的key值相等)再通过重写equals方法来判定两个对象的value值是否相等。(不重写的equals()比较的是对象的引用地址)

保证了我们能够真正获得这个key所对应的value

4.数组Array和列表ArrayList的区别

Array 可以包含基本数据类型和对象类型, ArrayList只能包含对象类型
Array大小固定,ArrayList的大小是动态变化的。
ArrayList中有很多方法特性如add(),remove(),iterator()等
集合都可以进行自动装箱和自动拆箱操作

5.关键字

final关键字

用final修饰的一个类,不能被继承
1.用final修饰类的好处是将方法锁定,防止任何继承类修改它
2.final修饰的方法是内嵌调用,可以提高方法调用的性能

用final修饰的一个变量,
如果是就基本数据类型的变量 则经过final初始化后就不能被修改
如果是引用类型的变量,则经过final初始化后便不能在指向另一个对象
(本质都是一样的,即不能被修改)

static关键字

1.static方法

static方法即静态方法,可以不依赖于任何对象就进行访问,因此static方法是没有this对象的。
static方法不能调用类中的非static成员变量,但类中的非static方法可以调用static成员变量
为什么main()方法是static方法呢,因为main()方法的执行没有依赖任何对象。

2.static变量
static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

3.static代码块
static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。

static{内为逻辑代码
}

4.静态内部类与非静态内部类

(1)非静态内部类实例化必须有关联的外部类实例化对象,静态内部类不需要。
(2)非静态内部类有外部类对象的引用,可以访问外部类的所有成员(方法和字段),而静态内部类只能访问静态成员
(3)非静态内部类中不能有静态成员,静态内部类中可以有
静态类的优点:1.不需要依赖实例对象,2.生命周期属于类级别,从JVM加载到JVM结束 , 3.全局唯一且只加载一次,优先于非静态

6.接口与抽象类

1.接口允许子类多重实现,而抽象类只允许子类进行继承
2.接口中只有抽象的方法,没有方法的具体实现,而抽象类中可以有某些具体的方法实现
3。接口中无构造方法,抽象类中有构造方法

Java面经总结(1)相关推荐

  1. springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据

    SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...

  2. Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几

    Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几 //获得入参的日期 Calendar cd = Calendar.getInstance(); cd.setTime(date ...

  3. 在k8s中使用gradle构建java web项目镜像Dockerfile

    在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...

  4. Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常

    kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized ...

  5. SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos

    SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...

  6. OpenAPI使用(swagger3),Kotlin使用swagger3,Java使用swagger3,gradle、Maven使用swagger3

    OpenAPI使用(swagger3) demo见Gitte 一.背景及名词解释 OpenAPI是规范的正式名称.规范的开发工作于2015年启动,当时SmartBear(负责Swagger工具开发的公 ...

  7. Gradle错误提示:Java home supplied via ‘xxx.xxx.xxx‘ is invalid

    Gradle错误提示:Java home supplied via 'org.gradle.java.home' is invalid 描述:在使用idea采用gradle进行依赖的管理功能,当想切换 ...

  8. 查看Hotspot源码,查看java各个版本源码的网站,如何查看jdk源码

    java开发必知必会之看源码,而看源码的第一步则是找到源码

  9. java基本类型转换,随记

    java基本类型转换: double double 转 long double random = Math.round(Math.random()*10000); long l = new Doubl ...

  10. 科学处理java.lang.StackOverflowError: null异常

    java.lang.StackOverflowError: null异常处理 在项目运行中出现StackOverflowError 首先要检查在编码中是否有明显的递归编码,比如死循环或者无限循环调用. ...

最新文章

  1. UIbutton 圆角和边线
  2. deepin安装kde桌面 无法进入_通过远程桌面vnc安装不上,通过远程桌面vnc安装不上无法使用是因为什么?怎么解决...
  3. JavaScript 函数的定义
  4. transformer学习
  5. 实验十 团队作业6:团队项目系统设计改进与详细设计
  6. 为Raspberry Pi开发.NET应用程序:第2部分
  7. 动态规划-矩阵连乘问题
  8. Linux 进程间通信的六种机制
  9. 量化投资学习——股票数据接口的汇总和整理
  10. API接口之webservice接口
  11. vptr初始化语义学
  12. 精准测试白皮书2020版
  13. python语音转文字源码_python 语音转化文字
  14. [网络诈骗]奈几利亚(奈及利亚), E-Mail 骗术
  15. html分享到微博,h5页面分享到微信、朋友圈、新浪微博、QQ空间、QQ好友组件
  16. 计算机音乐大学排名,2019音乐类大学排行榜_2019年世界十大权威大学排名报告发布,中国891所高...
  17. PHP-thinkPHP快速入门
  18. 如何批量获取过期老域名
  19. 腾讯开发者登录不上去
  20. 小程序源码:可以刷短视频的去水印工具微信小程序

热门文章

  1. STC单片机 Keil4安装, 第一个程序
  2. php手册 mac版,php中文手册for mac-php中文手册mac版下载v1.0.2 官方最新版__西西软件下载...
  3. 通俗易懂的Python入门基础详细教程
  4. 给视频添加马赛克并裁剪画面的简单步骤
  5. RC ORC Parquet 格式比较和性能测试
  6. 使用ASDM 管理 ciscoASA设备
  7. 广东省地方税务局电子办税服务厅--卡在注册ca证书界面的处理
  8. 浅谈C10K问题 与 解决方案
  9. PCB选料时的小技巧和参考网站+电解电容封装尺寸+稳压管型号
  10. abaqus2021+vs2018+intel oneAPI2022关联程序