java复习记录点
类型转换
int类型转二进制:
Integer.toBinaryString(int);
进制解析(其他进制转十进制):
Integer.parseInt(String,int); //将string看成是以int进制的string,并以10进制输出结果
进制解析(十进制转其他进制):
Integer.toHexString(int);
返回绝对值:
Math.abs();
*正则:
[a-zA-Z] 英文字母
\\s 空格字符
[0-9] 数字
[^0-9a-zA-z\\s]
两位小数:
String.formate("%.2f",double);
平方根:
Math.sqrt(n);
Switch
long类型的变量不能作为switch语句的参数;E选项直接量“3.0”是double型的,不能赋值给float,需要改为“3.0f”。
逻辑运算符
逻辑运算符包括&&、||、!三种,部分教材里把&、|也归为逻辑运算,事实上是用位运算来代替逻辑运算,容易混淆概念。
FilterInputStream的子类:DataInputStream
哪些集合类提供对元素的随机访问?
HashMap、TreeMap、HashTable
volatile关键字
保证内存可见性、禁止指令重排、使用Double-Check进行单例化时,静态单例变量需要加上volatile关键字。
**哪些垃圾回收算法会造成内存碎片:清除 **
清除算法(sweep):
原理:
将垃圾对象所占据的内存标记为空闲内存,然后存在一个空闲列表(free list)中。当需要创建对象时,从空闲列表中寻找空闲内存,分配给新创建的对象
优缺点:
优点:速度快
缺点:容易造成内存碎片,分配效率低
类初始化的时机有哪些? (多选)
访问类的静态变量或静态方法
创建类实例
反射调用类
初始化子类时,父类会被初始化
类的初始化
类一般会在如下过程被初始化:
JVM启动时,先初始化用户指定的主类、初始化子类之前,先初始化父类、访问类的静态变量或静态方法、创建类实例、反射调用类。
即时编译器JIT(just in time)的触发条件:
方法被执行多次
方法中的循环体被执行多次
下列哪个内存区域会发生OOM异常? (多选)
Java堆
方法区
直接内存
Java虚拟机栈和本地方法栈
JVM抛出的OOM一般有如下几种:
java.lang.OutOfMemoryError:Java heap space: 对应堆内存不足。
java.lang.OutOfMemoryError: Metaspace 对应metaspace空间不足
java.lang.OutOfMemoryError: 可能为直接内存溢出(一般为通过NIO或JNI不断分配内存导致)
Java程序 CPU使用率高的可能原因有哪些?(多选)
代码中存在死循环
代码中线程过多
发生gc次数过多
代码中进行IO次数过多
JAVA程序CPU高的原因一般有如下几种:
代码中存在死循环
代码中线程过多,导致上下文切换次数变多,这种情况可通过vmstat查看
gc次数太多,这种情况可以看到占用CPU的线程为GC线程,也可通过GC日志辅助查看
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端