CSDN社群十问十答(Java第一期)

过去的一周,我们从CSDN Java社群中,整理了小伙伴们提问较多的问题,并请技术达人对这些问题进行了回答,现整理如下。欢迎大家在社群中积极提问哦,积极提问的小伙伴还将获得CSDN提供的神秘纪念礼品哦!

问题1、为什么优先返回空集合而非null?    
如果程序要返回一个不包含任何值的集合,确保返回的是空集合而不是null。这能节省大量的”if else”检查。

问题2、为什么谨慎操作字符串
如果两个字符串在for循环中使用+操作符进行拼接,那么每次循环都会产生一个新的字符串对象。这不仅浪费内存空间同时还会影响性能。

问题3、数组与ArrayList有什么区别?  

 数组是定长的,而ArrayList是变长的。由于数组长度是固定的,因此在声明数组时就已经分配好内存了。而数组的操作则会更快一些。

问题4、String、StringBuffer和StringBuilder的区别?    
"1. String是字符串常量,而StringBuffer、StringBuilder都是字符串变量,即String对象一创建后不可更改,而后两者的对象是可更改的:
2. StringBuffer是线程安全的,而StringBuilder是非线程安全的,这是由于StringBuffer对方法加了同步锁或者对调用的方法加了同步锁
3. String更适用于少量的字符串操作的情况,StringBuilder适用于单线程下在字符缓冲区进行大量操作的情况,StringBuffer适用于多线程下在字符缓冲区进行大量操作的情况"

问题5、static关键字可以修饰什么?    
可以用来修饰:成员变量,成员方法,代码块,内部类等。

问题6、使用static存在什么问题?    
"1.占用内存,并且内存一般不会释放;
2.在系统不够内存情况下会自动回收静态内存,这样就会引起访问全局静态错误。
3.在Android中不能将activity作为static静态对象,这样使activity的所有组件对象都存入全局内存中,并且不会被回收。"

问题7、静态变量和实例变量的区别是什么?    
1。 静态变量是被static修饰符修饰的变量,也称为类变量,它属于类,不属于类的任何一个对象,一个类不管创建多少个对象,静态变量在内存中有且仅有一个拷贝。静态变量可以实现让多个对象共享内存。在Java开发中,上下文类和工具类中通常会有大量的静态成员。
2. 实例变量必须依存于某一实例,需要先创建对象然后通过对象才能访问到它"

问题8、装箱、拆箱什么含义?    
"装箱就是自动将基本数据类型转换为包装器类型
拆箱就是自动将包装器类型转换为基本数据类型"

问题9、什么时候装箱/拆箱?    
什么时候拆箱主要取决于:在当前场景下,你需要的是引用类型还是原生类型。若需要引用类型,但传进来的值是原生类型,则自动装箱(例如,使用equals方法时传进来原生类型的值);若需要的是原生类型,但传进来的值是引用类型,则自动拆箱(例如,使用运算符进行运算时,操作数是包装类型)。

问题10、为什么要使用通配符    
通配符的设计存在一定的场景,例如在使用泛型后,首先声明了一个Animal的类,而后声明了一个继承Animal类的Cat类,显然Cat类是Animal类的子类,但是List却不是List的子类型,而在程序中往往需要表达这样的逻辑关系。为了解决这种类似的场景,在泛型的参数类型的基础上新增了通配符的用法。


欢迎大家扫码进群交流哦!我们还将每周分享技术学习资源+每月推出技术主题月活动+群主、技术达人在线答疑互动!

猜你喜欢

转载自blog.csdn.net/CSDNedu/article/details/91991602