java小知识

位运算技巧
java各常用集合类是否接受null值
float long double

Java基本类型占用的字节数:
1字节: byte , boolean
2字节: short , char
4字节: int , float
8字节: long , double
注:
1字节(byte)=8位(bits)
char在Java中占用2字节。Java编译器默认使用Unicode编码,因此2字节可以表示所有字符。
new Integer(123) 与 Integer.valueOf(123) 的区别在于:
new Integer(123) 每次都会新建一个对象;
Integer.valueOf(123) 会使用缓存池中的对象,多次调用会取得同一个对象的引用。
对于基本类型,== 判断两个值是否相等,基本类型没有 equals() 方法。
对于引用类型,== 判断两个变量是否引用同一个对象,而 equals() 判断引用的对象是否等价。
final:
对于基本类型,final 使数值不变;
对于引用类型,final 使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的。
声明方法不能被子类重写。
声明类不允许被继承。
long lNum  = 1234L;
float fNum = 1.23f;
double dNum = 1.23d;
//队列声明
Queue queue = new LinkedList();
//嵌套列表
List> list = new ArrayList>();
List> list = new ArrayList>();
ArrayList> res = new ArrayList>();

List> children = new ArrayList<>(N);
for(int i = 0; i < N; i++) {
    children.add(new LinkedList<>());
}
//重载了操作+
123 + "" 
"123"
//优先队列重定义排序,默认小顶堆
    private PriorityQueue maxHeap = new PriorityQueue(1, new Comparator() {
        @Override
        public int compare(Integer o1, Integer o2) {
            return o2 - o1;
        }
    });
// 二维数组排序
Arrays.sort(arr,new Comparator() {
	@Override
	public int compare(String[] aa, String[] bb) {
		if(aa[0].compareTo(bb[0])==0){
			return aa[1].compareTo(bb[1]);
		}
			return aa[0].compareTo(bb[0]);
	}
});
集合数组的声明方式
 Queue[] que = new Queue[2];
 que[0] = new LinkedList();
 que[1] = new LinkedList();
asList接受的是一个泛型类型的参数,再构造了一个ArrayList。然而基本类型是不支持泛型化的,但是数组支持。

asList返回的ArrayList并不是我们熟悉的java.util.ArrayList,而是另一个类
Integer[] datas = new Integer[]{1,2,3,4,5};
ArrayList arrayList = new ArrayList<>(Arrays.asList(datas));
lambda排序:
Arrays.sort(intervals, (a,b) -> a[0]!=b[0]?a[0]-b[0]:b[1]-a[1] );
ArrayList转int[]
ArrayList out = new ArrayList<>();
out.toArray(new int[out.size()][2]);
数组clone
int[] snums = nums.clone();
scanner类:
nextInt() / next() 在一开始遇到换行和空白时会跳过,然后遇到数字字符进行解析,最后遇到空白或换行终止读取,并且会把空白或换行留在缓冲区。
nextLine()  在读取到空白会读进字符串,然后遇到字符会读入,遇到换行终止读入,并且把换行符处理掉。


import java.util.*;
class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int x = in.nextInt();
        System.out.println(x);
        int y = in.nextInt();
        System.out.println(y);
        in.next();
        String line = in.nextLine();
        System.out.println(line);
        line = in.nextLine();
        System.out.println(line);
    }
}
输入:
1 2
 3 4
5 6
输出:
1
2
 4
5 6

你可能感兴趣的:(java)