Java常用操作
Integer.SIZE; // 二进制位数
Integer.MIN_VALUE;// 整数的最小, 对应包装类都有
Integer.MAX_VALUE;// 整数的最大
boolean: 只有两个取值:true 和 false;默认值是 false;
char: char 类型是一个单一的 16 位 Unicode 字符;
byte: 8位、有符号的,以二进制补码表示的整数, [-128(-2^7), 127], 默认值是 0
short: 默认值是 0, 16 位、有符号的
int: 默认值是 0, 32位、有符号的
long: 默认值是 0L, 64 位、有符号的
float: 0.0f 单精度、32位
double: 浮点数的默认类型为 double 类型, 默认值是 0.0d
String: 默认null
整数的默认类型是 int, 小数默认是 double 类型浮点型在定义 float 类型时必须在数字后面跟上 F 或者 f。
更多
0. 输入
Scanner scan = new Scanner(System.in);
scan.hasNext();// 判断是否还有
String str1 = scan.next(); // 输入不接受空格后面内容
String str2 = scan.nextLine(); // 接受一行内容
scan.nextInt(); // int输入
scan.nextFloat(); // float输入
- 遍历
for (int i : nums){} - 字符串与整数
char - '0'; // 字符转换为int - 操作 Math
Math.max()
Math.min()
Math.abs()
Math.ceil() // 上取整
Math.floor() // 下取整, 双精度浮点型
Math.round() // 四舍五入
Math.pow() // 第一个参数的第二个参数的平方
Math.random() // 返回一个随机数[0,1)
String
length()
"hello" + "world"; +连接
"hello".concat("world"); concat 连接
char charAt(int index); //返回指定索引处的 char 值。
isEmpty() //判断字符串是否为空。
String trim() //返回字符串的副本,忽略前导空白和尾部空白。
String[] split(String regex) //根据给定正则表达式的匹配拆分此字符串。
more
* StringBuffer
append()
charAt(int index) //索引
reverse() //翻转
public String substring(int beginIndex)
public String substring(int beginIndex, int endIndex); // endIndex都是不包括的
List
Arrays.sort(nums); // 排序
List<List
new ArrayList<>(Arrays.asList(a, b, c)); // a, b, c 构造成ArrayList
Collections.max(Arrays.asList(Arrays.stream(nums).boxed().toArray(Integer[]::new))); // 返回int[] 数组最大值 python中只需要max(nums)
- LinkedList(add, remove, peek)
for (int i=0; i<list.size(); i++) {list.get(i);} // 遍历
for (Integer integ:list) {} //遍历
Stack, Queue : Stack, LinkedList
Stack
push(), pop(), peek()
Deque
- LinkedList也可以作为Stack和queue 可以作为栈、队列或双端队列使用 : addFirst, addLast, removeFirst, removeLast, peekFirst(), peekLast()
add, addFirst, addLast
poll() 删除并返回第一个元素。
get(int index) 返回指定位置的元素。
getFirst() 返回第一个元素。
getLast() 返回最后一个元素。
栈方法 等效方法
push(e) addFirst(e)
pop() removeFirst()
peek() peekFirst()
isEmpty() //判断是否为空
作为队列使用
addLast(), add(), offer(e) //进队列,将元素加入队列末尾
poll() //获取队列头的元素并移除
peek() //获取队列的元素
isEmpty() //判断是否为空
栈与队列
Map : HashMap(put, get, containsKey)
Map<Integer, DoubleLinkedNode> hashMap = new HashMap<>();// HashMap
HashSet
// 获取
getOrDefault(key,0);//查找键的值,没有返回默认值
get(key);
// 添加
add(key,val);
// 方法
containsKey(key);
containsValue(value);
// 遍历
for (Map.Entry<Integer, Integer> entry : hashMap.entrySet()){}
Set : HashSet(add)
Queue : LinkedList, PriorityQueue(add, poll)
- PriorityQueue 实现细节
int[] 传递值,或者Entry传递值, 默认小顶堆
PriorityQueue<Map.Entry<Integer, Integer>> queue = new PriorityQueue<>((o1, o2) -> o1.getValue() - o2.getValue());// 小顶堆
// 大顶堆
PriorityQueue<int[]> pq = new PriorityQueue<>(new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o2[1] - o1[1];
}
});
//添加
add(),offer()
//获取
poll()//删除堆顶并返回元素
remove()//删除指定元素
迭代器
// 遍历
Iterator
while(it.hasNext()) {
System.out.println(it.next());
}
位运算 more
位运算可以大量减少运行开销,优化算法
&:按位与。
|:按位或。
~:按位非。
^:按位异或。
<<:左位移运算符。
:右位移运算符。
<<<:无符号右移运算符。
补码:将原码按位取反加1(负数,正数补码就是原码)