局部变量没有默认值,需要初始化
java的整数溢出后的二进制数会表示成负数(补码形式),Java中负数除以2会向零取整:-3 / 2 = -1 而 -3 >> 1 = -2
'0' ^ 1 = '1'; '1' ^ 1 = '0' // ‘0’的ascii是48,异或1等于49,即'1'的ascii (同理)
(int)'A' (char)51 //ascii转换
(char)(9 + '0') // 将数字9转换成字符‘9’
if (Character.isLowerCase(i)) : char c = (char)(i - 32); // 小写转大写
if (Character.isUpperCase(i)) : char c = (char)(i + 32); // 大写转小写
char c; (char)(c ^ 32); // 字母大小写转换,小写字母ascii比大写字母大32
Math.[max, min, abs, log]
Math.ceil(d) // double ceil(double d) 或 double ceil(float f)
Math.floor(x) 返回小于或等于一个给定数字的最大整数。 x为数字
Arrays.sort(nums); //nums是数组
Arrays.sort(nums, (a, b) -> a - b);
Arrays.fill(dp, num); //给数组所有元素赋值为num
Arrays.toString(nums) // [1, 1, 2, 3, 5, 8]
Arrays.deepToString(ns) // 打印二维数组
int[] snums = nums.clone(); //nums是数组
Collections.sort(list) //集合排序
Arrays.stream(nums).min().getAsInt(); //求数组nums中最小值,max()
maxVal = Arrays.stream(nums).max().getAsInt(); //int[] nums
System.arraycopy(nums1, 0, nums2, 0, len); 拷贝nums1中len个数到nums2中,0为起始位置
char[] array = s.toCharArray(); // 字符串转换成字符数组
String s = new String(array); //字符数组转换成字符串
s1.equalsIgnoreCase(s2) // 忽略大小写比较字符串
int compareTo(String anotherString)
str1.compareTo(str2); // str1小于str2,返回负数(返回他们之间的差值),相等返回0,大于返回正数
// Java中replace()、replaceAll()、replaceFirst()区别:replace()和replaceAll()都是替换所有,但replaceAll()支持正则表达式;replaceAll()和replaceFirst()都支持正则表达式,但replaceFirst()只替换第一个匹配项。
command = command.replace("()", "o");
// a必须是Integer[],int[]会报错
Arrays.sort(a, new Comparator<Integer>() {
@Override
public int compare(Integer x, Integer y) {
if (bits[x] != bits[y]) {
return bits[x] - bits[y];
} else {
return x - y;
}
}
});
Set<Integer> num_set = new HashSet<Integer>();
num_set.add(num);
num_set.contains(num);
num_set.clear();
num_set.size()
String.join(" ", wordBreak) //wordBreak = List<String>
str.startsWith(String prefix, int toffset); // prefix -- 前缀。toffset -- 字符串中开始查找的位置。
str.substring(int beginIndex [, int endIndex]) // 相当于python字符串切分
s = "abc" s.substring(3) == "" 返回false,比较的是地址
s.substring(3).length() < 1返回true
s.substring(3).equals("") 返回true,比较的是值
s.trim(); // s是String , 去除头尾空白字符(s.strip())
s.toUpperCase() // 字符串中字符转大写(Lower)
List<String> wordList = Arrays.asList(s.split("\\s+")); // 正则匹配连续的空白字符作为分隔符分割
Collections.reverse(wordList); //
int int1 = 12;
int int2 = 12;
Integer integer1 = new Integer(12);
Integer integer2 = new Integer(12);
Integer a1 = 128;
1、 int1 == int2 -> true
2、 int1 == integer1 -> true //int1 == integer1,Integer是int的封装类,当Integer与int进行==比较时,Integer就会拆箱成一个int类型
3、 integer1 == integer2 -> false //这是两个都是对象类型,而且不会进行拆箱比较,所以不等(用 compareTo() ,equals()比较,原因是自动装箱默认范围是 -128 -127,超过会创建新的对象,可以看下这个https://my.oschina.net/miwang/blog/730343 ))
4、 integer3 == a1 -> false //integer3是一个对象类型,而a1是一个常量它们存放内存的位置不一样
Map<Integer,Boolean> note = new HashMap<>();
note.containsKey(index)
note.get(index)
note.getOrDefault(index, 0)
note.put(index, false)
note.remove(index)
map1.putAll(map2) //深拷贝
for (Integer i : note.keySet()) {
}
for (Map.Entry<Integer, Boolean> entry : note.entrySet()) {
entry.getValue()
entry.getKey()
}
// Lambda 表达式引用的是值,而不是变量.所以在lamdba和匿名内部类中使用变量不能被改变
map.forEach((key, value) -> {
;
});
// java8之前。从map中根据key获取value操作可能会有下面的操作
Object key = map.get("key");
if (key == null) {
key = new Object();
map.put("key", key);
}
// java8之后。上面的操作可以简化为一行,若key对应的value为空,会将第二个参数的返回值存入并返回
Object key2 = map.computeIfAbsent("key", k -> new Object());
graph.computeIfAbsent