1、int与Integer用==比较详解

public static void main(String[] args) { int t1 = 12; int t2 = 12; Integer integer1 = new Integer(12); Integer integer2 = new Integer(12); Integer integer3 = new Integer(127); Integer a1 = 127; //或者写成Integer a1 = Integer.valueOf(127); Integer a2 = 127;//或者写成Integer a2 = Integer.valueOf(127); Integer a = 128; Integer b = 128; // 基本数据类型==比较只要值相等就为true System.out.println("2个int类型比较 -> " + (t1 == t2)); // Integer与int进行==比较时,Integer就会拆箱成一个int类型,所以还是相当于两个int类型进行比较 System.out.println("int和integer比较 -> " + (t1 == integer1)); // 两个都是对象类型,而且不会进行拆箱比较 System.out.println("2个new出来的integer比较 -> " + (integer1 == integer2)); // 无论如何,Integer与new Integer不会相等。不会经历拆箱过程,因为它们存放内存的位置不一样。 System.out.println("integer3 == a1 -> " + (integer3 == a1)); // Integer作为变量时,对于-128到127之间的数,会进行缓存,再次创建直接拿原来的赋值给变量。 // 超出这个范围,则会new一个对象 System.out.println("a1 == a2 -> " + (a1 == a2)); System.out.println("a == b -> " + (a == b)); }
2、找到的基础题
https://blog.nowcoder.net/n/7d0544796437467285bd1032c79a0d3a
3、
一个java文件中可以定义多个类,但是最多只有一个类被public修饰(类只能被public修饰),
并且这个类的类名与文件名必须相同,若这个文件中没有public的类,则文件名随便是一个类的名字即可。
需要注意的是,当用javac指令编译有多个类的Java文件时,它会给每一个类生成一个对应的.class 文件
4、 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类,但线程不安全
5、ArrayList 和Linkedlist 区别
二者都线程不安全,但是效率比 Vector 的高
ArrayList 底层是以 数组 的形式保存数据,随机访问集合中的元素比LinkedList 快(原因是 LinkedList 要移动指针);
LinkedList 内部以 链表 的形式保存集合里面数据,它随机访问集合中的元素性能比较慢,但是新增和删除时速度比 ArrayList 快(原因是 ArrayList 要移动数据)