AI写论文大揭秘!4款AI论文写作利器,写期刊论文超高效!
2026/5/23 16:10:18
这是最容易搞混的,先把这个死记硬背下来:
| 数据类型 | 语法 | 是否带括号 | 记忆口诀 |
|---|---|---|---|
数组(int[],char[]) | .length | ❌不带 | 数组也是对象,length是它的一个属性。 |
字符串(String) | .length() | ✅带 | String 是类,这是它的方法。 |
集合(List,Map,Set) | .size() | ✅带 | 集合里装了多少东西,用size。 |
int[],char[]不要用包装类声明!
数组是“死板”的,一旦创建,长度不能变。它的很多功能需要借助工具类java.util.Arrays。
int[] arr = new int[5];或int[] arr = {1, 2, 3};Arrays.sort(arr);(默认升序,O ( N log N ) O(N \log N)O(NlogN))Arrays.fill(arr, -1);(把数组全填成 -1)Arrays.toString(arr);(记得我们刚说的吗?不要直接 toString)Arrays.copyOf(arr, newLength);String 是只读的!任何修改 String 的操作(如 substring, replace)都不会改变原字符串,而是返回一个新的字符串。
s.charAt(i)(别用s[i],那是 C++ 写法)char[] chars = s.toCharArray();(改字符必备)s.substring(start, end)(⚠️左闭右开[start, end))s.substring(2, 5)取下标 2, 3, 4。s.equals("abc")(⚠️千万别用==,==比的是地址)s.trim()(去掉首尾空格)String[] parts = s.split(" ");🚀 进阶:StringBuilder (可变字符串)
如果你需要频繁修改字符串(比如在循环里拼接),一定要用 StringBuilder,否则会创建无数垃圾对象,导致超时。
StringBuildersb=newStringBuilder();sb.append('a');// 尾部追加sb.deleteCharAt(sb.length()-1);// 删除最后一个字符 (回溯法常用)sb.reverse();// 反转字符串 (力扣常考)Stringres=sb.toString();// 变回 String力扣中最常用的三个接口:List,Set,Map。
ArrayList)当做动态数组用。
list.add(val);list.get(index);(别用list[index])list.remove(index);Collections.sort(list);(注意是Collections复数)int[] arr = list.stream().mapToInt(i->i).toArray();(写起来比较麻烦,一般手写循环转)HashSet)主要用于去重和快速判断是否存在。
set.add(val);(如果已存在,返回false,否则true)set.remove(val);set.contains(val);(O ( 1 ) O(1)O(1)时间复杂度)HashMap)键值对神器。
map.put(key, value);map.get(key);(不存在返回null)map.getOrDefault(key, 0);(力扣神器,计数时防止空指针)map.containsKey(key);for(Integerkey:map.keySet()){...}for(Integerval:map.values()){...}for(Map.Entry<Integer,Integer>entry:map.entrySet()){// entry.getKey(), entry.getValue()}LinkedList或ArrayDeque)Java 官方推荐用Deque(双端队列) 接口来代替旧的Stack类。
Deque<Integer> stack = new ArrayDeque<>();stack.push(1);(压栈)stack.pop();(弹栈)stack.peek();(看栈顶)queue.offer(1);(入队)queue.poll();(出队)queue.peek();(看队头)刷题时经常需要在这个类型转到那个类型:
int num = Integer.parseInt("123");String s = String.valueOf(123);int num = ch - '0';(利用 ASCII 码差值)Integer[] arr = list.toArray(new Integer[0]);(注意是包装类数组)int) 用==。String) 和对象 (Integer在 -128~127 之外)必须用.equals()。null再判长度,否则空指针异常 (NPE)。if (s != null && s.length() > 0)index < 0或index >= length。