leetcode刷题经常出现的问题
-
数组初始化,集合泛型初始化
静态初始化int[] arr={100,200,300};
动态初始化 int[] arr=new int[5];//每个元素默认都是0
String[] names=new String[6];//每个都是null -
遍历数组和遍历集合的区别
增强型for循环
int[] arr=new int[10];
for(int i:arr){
System.out.print(i);
}
ArrayList<Obj> arr
for(Obj o:arr){
}
对于数组,使用的是普通for循环
但是对于集合,使用的是迭代器Iterator
Iterator i=list.iterator();
while(i.hasNext()){
Object obj=i.next();
}
3 . 数组和集合的互相转化和排序方法
数组可以转化成List
但是不能转化成Set,而且转换的不能add元素
String[] array = {"one","two","three","four"};
List<String> list = Arrays.asList(array);
// list.add("k");报错
System.out.println(list);
集合转化成数组使用toArray
toArray返回的Object[] 所以可以参数中加上一个新数组作为类型
String[] s=prices.keySet().toArray(new String[prices.size()]);
for(String k:s){
System.out.println(k);
}
排序的方式
对于数组使用Arrays的静态方法Arrays.sort(arr)
如果是集合,就使用Collections.sort()
的方法,里面只能放List
- 运算符的优先级
!弹幕运算符优先级高于==
所以判断的时候如果有必要需要用最高优先级的()
if(!(a==0)) 的意思是a!=0
if(!a==0) 会报错,因为java中a是整数,不能运行!a
if( a||b&& c||d) 会优先计算b&&c 变成了if(a||d||c)
if(a&&b || c&&d) 这样才是合理的
- 字符,字符串,数字之间的转换
字符和字符串的转换
使用包装类的静态方法
//如果是包装类可以用toString,但是char基本类型不行,需要用静态方法
Character c='U';
String s=c.toString();
char c2='V';
String s2=Character.toString(c2);
//方法2
String s=c+"";
//方法3 String的唯一一个静态方法
String.valueOf(c)
String转成char
s.charAt()
或者s.toCharArray()
字符串和数字之间
String.valueOf(678) 可以转字符串
Integer.valueOf(”12“) 返回Integer
Integer.parseInt(“12”) int