1.string是基本数据类型吗?为什么
不是,string是封装对象的,不是八大基本数据类型
2."==" 和equal的区别?
对于"= =",比较的是值是否相等,
如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
如果作用于引用类型的变量,则比较的是所指向的对象的地址
equal:比较的是是否是同一个对象
如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。
3.string,stringbuffer与stringbuilder的区别?
String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,
StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。
然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
4.int和Integer的区别
Integer是int的包装类,int则是java的一种基本数据类型
Integer变量必须实例化后才能使用,而int变量不需要
Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值
Integer的默认值是null,int的默认值是0
5.用最有效率的方法计算2乘以8
因为将一个数左移n 位,就相当于乘以了2 的n 次方,那么,一个数乘以8 只要将其左移3 位
即可,而位运算cpu 直接支持的,效率最高,所以,2 乘以8 等於几的最效率的方法是2 << 3。
6.过滤器的作用和用法?
它们拦截请求和响应,以便查看、提取或以某种方式操作正在客户机和服务器之间交换的数据。
7.&和&&的区别?
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,
整个运算结果才为true,否则,只要有一方为false,则结果为false。
&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式