1.关于装箱和拆箱:也就是基本数据类型和包装类的转换,基本数据类型转换成包装类就是装箱(int->Integer),包装类转化为基本数据类型就是拆箱(Integer->int)
2.applet,也就是Java小应用程序,是可随着网页下载到客户端由浏览器解释执行的Java程序,而appletviewer是运行Applet的,Applet可以不用main方法,继承applet类即可
3.Hashtable和HashMap之间的区别:参考自:https://www.cnblogs.com/mmzs/archive/2019/08/27/11418706.html 大致是有:1.安全性:Hashtable是线程安全的,HashMap是非线程安全的。2.是否可以用null作为key:HashMap可以使用null,而Hashtable不允许。(一般来说,HashMap是比HashTable要晚一些的)
4.关于依赖注入的知识,参考:https://www.iteye.com/topic/692793,准备之后慢慢看
5.关于String的知识点:string是特殊引用类型,在考虑一些内存等原因,将他设置成不可变,不可变的实现方式:专门开辟一个字符串常量,用来锁定数据不被篡改。
6.容器集合类:直接参考这张图
7.String s = new String(“xyz”);创建了几个StringObject?解析:如果在常量池中已经存在“xyz”,那么不会继续创建,只创建一个new
String(“xyz”)的对象。如果常量池中没有,则会创建两个对象,一个是对象的值“xyz”,一个是new
String(“xyz”)的对象。
8.在OutputStream中包含方法flush(),因为方法flush()刷新此输出流并强制写出所有缓冲的输出字节。
9.关于session的知识:
- 设置 session.getAttribute(“key”,“value”)
- 获取 session.getAttribute(“key”)
- 移除 session.removeAttribute(“key”)
10.中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或OS环境。
(简单来说,中间件并不能提高内核的效率,一般只是负责网络信息的分发处理)
11.垃圾回收机制中,system.gc()是完全自动的,不能被强制执行,并且程序员最多就是 调用这个方法来建议可以执行垃圾回收,但具体的回收时间是不确定的。
12.equals和hashcode的联系与区别,参考自:https://www.cnblogs.com/keyi/p/7119825.html,总结下来就是,hashcode是equals的“小弟”,每当需要对比的时候,首先用hashCode()去对比,如果hashCode()不一样,则表示这两个对象肯定不相等(也就是不必再用equal()去再对比了),如果hashCode()相同,此时再对比他们的equal(),如果equal()也相同,则表示这两个对象是真的相同了,这样既能大大提高了效率也保证了对比的绝对正确性!
13.精度丢失是发生:从大范围到小范围的转换,也就是(int)8846.0这种,从double变成int类型
14.java多线程的实现的四个方式:
1.继承Thread类,重写run方法
2.实现Runnable接口,重写run方法
3.实现Callable接口,重写call方法,有返回值的那种
4.使用线程池(有返回值的)
15.静态内部类不可以直接访问外围类的非静态数据,而非静态内部类可以直接访问外围类的数据,包括私有数据:
16.自动类型的提升:
17.HttpServletResponse完成:设置http头标,设置cookie,设置返回数据类型,输出返回数据;读取路径信息是HttpServletRequest做的
18.关于String的一些知识:String s1 = “HelloWorld”; 其中的s1指向常量池的字符串变量,而 String s2 = new String(“HelloWorld”);,中的s2,是指向堆里面的一个字符串对象
19.关于实例方法,涉及到了父类和子类,总之需要记住的是,对于父类方法,需要使用到super,但是前提是父类里的方法是可以public的,而不是private,而对于子类的方法,也是需要new一个子类的,都是不能够直接调用的。“如果父类里被private修饰,则子类是无法继承和访问的,而父类访问子类,需要new一个对象才能访问,不能直接访问。本题中只有d选项是正确的,一个类访问本类是绝对可行的”
20.equals和 ==的区别 ===操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
21栈和堆的区别:参考自:https://blog.csdn.net/wangbo1998/article/details/80379016
栈内存中存放函数中定义的一些基本类型的变量和对象的引用变量; 堆内存中存放new创建的对象和数组。
也就是,堆是用来存放对象的,栈是用来执行程序的。
22.volatile:
- 每次从内存中取值,不从缓存中什么的拿值。这就保证了用 volatile修饰的共享变量,每次的更新对于其他线程都是可见的。
- volatile保证了其他线程的立即可见性,就没有保证原子性。
3.由于有些时候对 volatile的操作,不会被保存,说明不会造成阻塞。不可用与多线程环境下的计数器。
23.History对象的属性或方法: go:加载history具体页面 back:返回到历史列表当前url的上一个url forward:加载历史列表中当前url的下一个url length:返回历史列表的url长度信息
24.call by value 和 call by reference 的区别: Call by Value就是传值的方式,函数调用时是把实参的值传给形参,函数调用结束后形参的值不能带回给实参。
Call by
Reference就是传地址的方式,函数调用时是把实参的地值传给形参,也就是说实参和形参共用同一个存储空间,函数调用结束后,形参的值自然“带回”给实参了。