反转字符串【四种方法】
方法一:直接使用可边长字符串,调用其自带的reverse方法
StringBuffer buffer = new StringBuffer("abcd");
System.out.println(buffer.reverse());
方法二:使用字符数组倒叙循环拼接
public static String charArrayReverse(String a){
char[]aa;
aa = a.toCharArray();
String aaa="";
for(int i=a.length()-1;i>=0;i--)
aaa = aaa+aa[i];
return aaa;
}
方法三:使用字符拼接正序拼接
方法二、三思路类似
public static String charAtReverse(String a){
char aa;
String aaa="";
for(int i=0;i<a.length();i++){
aa = a.charAt(i);
aaa = aa+aaa;
}
return aaa;
}
方法四:递归调用(注意递归结束条件,会导致栈溢出)
本质还是拼接字符
public static String recursiveReverse(String a){
if(a==null||a.length()<=1){
return a;
}
return recursiveReverse(a.substring(1))+a.charAt(0);
}
Error和Exception区别
两者都继承自Throwable,只有Throwable类的实例才可以被抛出或捕获。
Exception是程序正常运行中可以预料的意外情况,可以进行捕获处理
Error指正常情况下不太可能出现的情况,绝大部分的Error会导致系统奔溃,如JVM内存严重不知时抛出的OutOfMemoryError或者超过栈的最大 深度所抛出的StackOverflowError等
运行时异常和一般异常(受检异常)的区别?
运行时异常是属于不检查异常,即程序中可以选择捕获处理当然也可以不进行处理。但是一般异常是强制要求用户必须对出现的这些异常进行catch处理的,否则程序将不会编译通过
常见的运行时异常
类转换异常ClassCastException
空指针异常NullPointerException
数据格式异常NumberFormatException
算术异常ArithmeticException
数组下标越界异常IndexOutOfBoundsException等
Collection和Collections的区别?
前者是接口,Collection是Set、List容器类的父接口,而Collections是一个工具类,里面有很多对容器操作的静态方法(排序、搜索、线程安全等)
TreeMap和TreeSet排序,存放的对象实现Comparable接口,进行重写compareTo方法
public class Dog implements Cloneable, Comparable<Dog>{
private String name;
private int age;
private Person person;
public int getAge() {
return age;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
@Override
public Object clone() throws CloneNotSupportedException {
Dog d = (Dog)super.clone();
d.setPerson((Person)d.getPerson().clone());
return d;
}
@Override
public int compareTo(Dog o) {
return o.age-this.age;
}
}
public static void main(String[] args) {
TreeMap<Integer,String> treeMap = new TreeMap<>();
Dog dog = new Dog();
dog.setAge(10);
dog.setName("小花");
Dog dog1 =new Dog();
dog1.setAge(9);
dog1.setName("小黑");
treeMap.put(dog1.getAge(),dog1.getName());
treeMap.put(dog.getAge(),dog.getName());
for(String name:treeMap.values()){
System.out.println(name);
}
}