日常记录
我在使用Java写算法题或者日常使用的时候总是感觉自己会遗忘很多方法,每次都要重新去问,所以想写一个日常学习Java时的一些知识杂记,为了抗自己遗忘的,并做好分类供以后快速查阅。
函数\方法使用
字符串相关
问:为什么string或者sb不带这些方法,为什么要调用parseInt这个静态方法,这都是怎么设计的,我小白跟本理解不了,或者说记不住,为什么有时候使用对象的方法,有时候使用类的静态方法?
答:String的本质就是一堆字符,是一个字符数组。它本身并不知道这些字符到底是不是数字,还是什么莫名其妙的东西,所以不可以往这里添加类似于toInt()这种函数,所以这个方法就可以设置在对应的数字类中当静态方法调用。想变成 int,就找 Integer。字符串自己相关的事,才找 String。拼接修改字符串,才找 StringBuilder。
字符串变成数字的方法一般都是数字类型.parse**();
字符串没有添加、删除的方法,这些是可变字符串StringBuffer\Builder的功能.
字符串常用的方法就是replace(),substring(),lenght(),charAt()这些了
判断两个字符串是否相等使用str.equals()
可变字符串等使用delete(),append(),insert(),这些方法。
List和Set之间互相转换:
实际开发里最常见的是这几个:
// List -> Set,普通去重 Set<String> set = new HashSet<>(list); |
其实就是在创建set/list的时候填入对应的参数,调用构造方法。
但要注意可能会乱序,保证顺序需要用LinkedHashSet。
Arrays 是 java.util.Arrays 这个工具类,常用操作:
Arrays.toString //转字符串,打印用 |
char[[]][[][]二维数组怎么变List<
一、通过stream流:
List<String> list = Arrays.toStream(chars) |
二、通过增强for循环:
for(char[] c : chars){ |
三、通过下标常规循环:
for(int i=0;i<n;i++){ |
其实这里的第三个才是最基础的,因为有char[i]可以代表第i行的char[]数组这个条件,所以才可以通过增强for循环依次取出一行,以及通过stream流来依次处理。



