最新更新:2021-5-5
5.1假期即将结束,再过几个月就面临秋招,准备写一次博客,本博客是个人以前所学一些JAVA相关知识的整理和总结,以及对这两个月将要学到一些知识点的巩固。
- 文章内容:JAVA知识点(个人也是在不断学习中,如有不对还请指正)
- 说明:里面穿插着找实习面试时被问到的问题,题目没有顺序,答案也不能保证百分百正确,想看JAVA基础的可以从面试宝典看起,在通过宝典深入去学习每一个知识点相关内容。谢谢!希望看了文章的你能从中受益。
JAVA基础(更新中)
JAVA基础
1. JAVA八大基本数据类型,以及他们占用内存大小(面试题)
单位 字节
byte 1/ short 2/ int 4/ float 4/ double 8/ long 8/ char 2/ boolean ?
关于boolean占用内存大小,在不同版本的jvm中可能表现出不同的结果,但都是考虑到某些优势,有的使用32bit,当成int对象存储,对于32位CPU来说加快寻址。但缺点也很明显,浪费空间(不过现在内存很便宜了,个人猜测可能后面的版本采用这种方式概率大)。或者按照1bit存储(省内存,但对于按字寻址和按字节寻址是不是有点不友好?)
2.一个JAVA对象有多大?
content
JVM内存管理
操作系统
计算机网络
计算机组成
- 堆栈
- 堆栈是一种FILO的数据结构。
- 堆栈作用:
- 保护信息,保存现场
- 程序嵌套与中断嵌套,递归调用
- 利于逆波兰表达式的运算
- Q: 递归底层实现?
- 逆波兰表达式
- 逆波兰表达式的存在,是为了方便计算机进行运算。
- 逆波兰计算过程:见到元素就入栈,见到运算符就将栈顶和次栈顶元素进行运算。
- 数学表达式:A+B
- 波兰表达式:+AB
- 逆波兰表达式:AB+
- 逆波兰表达式怎么生成?
- 把最后一个运算符做根节点
- 数学表达式就是中序遍历结果,根据表达式生成二叉树
- 后序遍历得到逆波兰
- HP3000常见堆栈机指令
- ADD:栈顶和次栈顶相加,结果在栈顶
- SUB:次-顶
- MUL:乘
- DIV: 次/顶
- LOAD X: X入栈
- STOR X: 栈顶传给X
- ADDM X: 顶和X求和
- SUBM X: 顶-X
- MULM X: 乘
- DIVM X: 顶/X
如(A+B)× C-D/(E+F)
LOAD A, ADDM B, MULM C, LOAD D, LOAD E, ADDM F, DIV, SUB.
这样可以完成一次计算,但逻辑复杂,对其进行逆波兰运算,运算结果:
AB+C× DEF+/-
则堆栈机中指令如下:
LOAD A, LOAD B, ADD, LOAD C, MUL, LOAD D, LOAD E, LOAD F, ADD, DIV, SUB
在你写指令的时候应该就能看出来,为什么堆栈机要选逆波兰