Java 学习笔记 持续更新

本文详细探讨了Java中的继承特性,包括单继承、protected关键字的作用、构造方法的调用规则以及向上转型和向下转型的规则。同时,文章还介绍了多态的概念,如何通过super调用父类方法,以及final、abstract和接口的应用。此外,还讨论了静态字段、静态方法、接口的使用,以及包和类路径的相关知识。
摘要由CSDN通过智能技术生成

局部变量没有默认值,需要初始化

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
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值