本文记录平时敲Java代码时遇到的一些琐碎问题。
简单的异常处理
当定义一个有返回值的方法的时候,由于某些情况可能无法正常返回,这时就需要用到异常处理了。
这里我们以出栈为例,出栈方法需要我们返回出栈的数据,但当栈空时我们再出栈就无法返回数据了,所以就需要用到异常处理。
主要用到RuntimeException,代码如下:
public class ArrayStackDemo {
public static void main(String[] args) {
ArrayStack arrayStack = new ArrayStack(4);
try {
System.out.println("出栈的数据为:" + arrayStack.pop());
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
class ArrayStack {
int[] stack;
int maxSize;
int top = -1;
public ArrayStack(int maxSize) {
this.maxSize = maxSize;
stack = new int[maxSize];
}
public boolean isEmpty() {
return top == -1;
}
public int pop() {
if (isEmpty()) {
throw new RuntimeException("栈空,无法出栈");
}
int num = stack[top--];
return num;
}
}
char转int
直接上代码
public static void main(String[] args) {
char ch = '1';
int num = ch;
System.out.println(ch);//输出1
System.out.println(num);//输出49
System.out.println((int)ch);//输出49
System.out.println(ch - '0');//输出1
System.out.println(Integer.parseInt(String.valueOf(ch)));//输出1
}
由此,我们给出char转int两种可行的方法:
- 把char变量直接减’0’即可;
- 先用String的valueOf()方法把char转成String,再用Integer的parseInt()方法将String转为int。
注:char不可直接转为int,同样int也不可以直接转为char。
去除String中的所有空格。
public static String replaceAllBlank(String s) {
// \\s+ 匹配任何空白字符,包括空格、制表符、换页符等等,等价于[\f\n\r\t\v]
return s.replaceAll("\\s+", "");
}
得到一个数的位数
int num = 43548964;
int length = (num + "").length();
Arrays.aslist()
Arrays.aslist()创建的list不可改变
List<String> list = Arrays.asList("a", "b", "c");
list.forEach(System.out::println);
list.add("d");//报错
数组的逆序
可以利用反向迭代器:
sort(arr.rbegin(),arr.rend());
其他
- 能用++i就不用i++,节省资源。
- main里不能用static定义变量。因为main是方法,只有类才存在静态的变量,方法只能对静态变量的操作,不能在方法内试图定义静态变量。
- 一行代码实现以下功能
当 2 <= 2 * i <= n 时,nums[2 * i] = nums[i]
当 2 <= 2 * i + 1 <= n 时,nums[2 * i + 1] = nums[i] + nums[i + 1]
nums[i] = nums[i / 2] + i % 2 * nums[i / 2 + 1];
- 基本数据类型不能置null,包装类型可以取值为null
- 使用Scanner的nextLine()方法时要注意其会读取回车的问题