牛客网Java题知识点总结(持续更新)

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的知识:

  1. 设置 session.getAttribute(“key”,“value”)
  2. 获取 session.getAttribute(“key”)
  3. 移除 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:

  1. 每次从内存中取值,不从缓存中什么的拿值。这就保证了用 volatile修饰的共享变量,每次的更新对于其他线程都是可见的。
  2. 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就是传地址的方式,函数调用时是把实参的地值传给形参,也就是说实参和形参共用同一个存储空间,函数调用结束后,形参的值自然“带回”给实参了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值