目录
1. java基本数据类型
整数类型:byte 8位 short 16位 int 32位 long 64位
浮点类型:float 32位 double 64位
字符类型:char 16位
布尔类型:boolean
类型转换:byte->short->int->long->float->double
强制转换:①会损失精度,产生误差,小数点以后的数字全部丢失②容易超过取值范围
2. hashmap hashtable的区别
hashmap不是线程安全的 hashtable是线程安全
hashmap可以存储null键和null值 不保证元素的顺序不变 而hashtable不允许 且两者的的key值均不能重复
hashtable怎么实现线程安全的?
Hashtable是通过使用了 synchronized 关键字来保证其线程安全
获取map的key和value?
map.keySet():先获取map的key,然后根据key获取对应的value
3. java数组的长度可以改变吗?
不可以
①在初始化的时候申请足够大的空间
②用java几个的方式存储,如list set map
4. java调用函数中传参是值传递 还是是引用传递
在java中,当对象作为参数传递时,实际上传递的是一份“引用的拷贝”,参数的值就是该对象的引用一个副本,但还是是值传递,Java编程语言只有值传递参数
java8个基本类型由于是不可变的,所以在作为参数传递时,是值传递
引用传递是针对一个object对象作为参数传递
string是值传递 相当于new一个新的string的过程
即①基本数据类型传值,对形参的修改不会影响实参②引用类型传引用,形参和实参指向同一个地址(同一个对象),所以对参数的修改会影响到实际的对象③string integer double等immutablle的类型特殊处理 可以理解为传值 最后的操作不会修改实际对象
5. a=a+b a+=b的区别
主要区别是是否进行数据类型的转换 当两个操作同类型的时候 这两种形式的结果是没有差别的 当两个操作数据类型不同时 且左操作数的数据精度低 这是这两种形式有区别
6. arraylist linkedlist的区别
①都是list接口的实现 arraylist时动态数组 linkedlist是双向链表结构
②当随机访问(get set)操作时 arraylist比linkedlist效率要高 因为linkedlist是线性的数据存储形式 需要移动指针从前往后依次寻找
③当对数据进行增加和删除的操作时 linkedlist比arraylist效率高 因为arraylist是数组 在进行增加和删除时 会对操作之后的数据下标索引造成影响 需要进行数据的移动
7. java抽象类和接口的区别
①抽象类是包含抽象方法的类 关键字abstract
抽象类中有变量和方法 方法必须为public或protected
如果一个类继承一个抽象类 则子类必须实现父类的抽象方法 如果没有实现父类的抽象方法则子类必须定义为abstract
②接口在软件工程中指别人调用的方法或函数 java中是对行为的抽象 关键字interface
接口中可以有变量和方法 变量是public static final类型 方法不能有具体的实现即必须是抽象方法
借口是一种极度抽象的类型 比抽象更抽象 一般不在接口中定义变量
一个类遵循多个接口 如果一个非抽象类遵循了某个接口 则必须实现接口的所有方法 而抽象类不用
8. 什么是java常量 static静态变量
常量是指在程序运行过程中其值不能改变的量 关键字final
static静态变量 方法 在没有创建对象的前提下 直接通过类本身调用
9. 什么是映射
即map 用于存储一个由关键字和值组成的集合
put get remove keySet
10. 子类继承父类的执行循序
--父类的静态代码块--
--子类的静态代码块--
--子类主程序--
--父类的非静态代码块--
--父类的有参构造函数--
--父类的方法--
--父类的非静态代码块--
--父类的无参构造函数--
--子类的非静态代码块--
--子类的有参构造函数--
--子类Override了父类的方法--
静态代码块—主程序—非静态代码块—构造函数—一般方法
11. sql数据库优化
①sql语句大写 因为所有sql语句执行时都会转换成大写
②避免使用* 用具体字段
③尽量在where子句中进行null值判断 最好不要给数据库留null
④尽量在where子句中使用!= <> in not in操作符
⑤能用between 不用in 用exists代替in
⑥模糊查询like尽量少用%
⑦建立索引 较频繁座位查询条件的字段 是优化见效最快的解决方案
⑧分库分表分区
分库:按照业务分库
分表:历史表或归档表 用来存放历史数据 保证实时数据效率
12. springboot配置
①启动类spplication入口类 main入口方法
②springbootapplication核心注解
③springboot配置文件
④全局配置文件 application.properties或application.yml
⑤日志配置
13. java比较两个对象
重写equals()实现
重写equals()必须重写hashcode()
因为如果两个对象相同 那么hashcode值一定相同 而两个对象的hashcode值相同 对象不一定相同