1.final与static的区别
1.都可以修饰类、方法、成员变量。
2.static 可以修饰类的代码块,final 不可以。
3.static 不可以修饰方法内的局部变量,final 可以。
4.static 修饰表示静态或全局,被修饰的属性和方法属于类,可以用类名.静态属性 / 方法名 访问
final 修饰表示常量、一旦创建不可改变
5.static 修饰的变量可以重新赋值
final 标记的成员变量必须在声明的同时赋值,或在该类的构造方法中赋值,不可以重新赋值
6.static 方法只能被 static 方法覆盖
private 类型的方法默认是final类型的
2.return与finally的执行顺序对返回值的影响
finally 没有 return,finally 对 return 变量的重新赋值修改无效
try 和 finally 都包含return,return 值会以 finally 语句块 return 值为准
3.Math.round(-1.5) 等于多少?
round() :返回四舍五入,负 .5 小数返回较大整数,如 -1.5 返回 -1。
ceil() :返回小数所在两整数间的较大值,如 -1.5 返回 -1。
tail() :返回小数所在两整数间的较小值,如 -1.5 返回 -2。
4.String属于基础的数据类型吗?
不属于。
Java 中 8 种基础的数据类型:byte、short、char、int、long、float、double、boolean
但是 String 类型却是最常用到的引用类型。
5.java中操作字符串都有哪些类?它们之间有什么区别?
Java 中,常用的对字符串操作的类有 String、StringBuffer、StringBuilder
String : final 修饰,String 类的方法都是返回 new String。即对 String 对象的任何改变都不影响到原对象,对字符串的修改操作都会生成新的对象。
StringBuffer : 对字符串的操作的方法都加了synchronized,保证线程安全。
StringBuilder : 不保证线程安全,在方法体内需要进行字符串的修改操作,可以 new StringBuilder 对象,调用 StringBuilder 对象的 append()、replace()、delete() 等方法修改字符串。
6.如何将字符串反转?
1.使用 StringBuilder 或 StringBuffer 的 reverse 方法,本质都调用了它们的父类 AbstractStringBuilder 的 reverse 方法实现。(JDK1.8)
2.不考虑字符串中的字符是否是 Unicode 编码,自己实现。(数组)
3.递归
7.String类的常用方法有哪些?
equals:字符串是否相同
equalsIgnoreCase:忽略大小写后字符串是否相同
compareTo:根据字符串中每个字符的Unicode编码进行比较
compareToIgnoreCase:根据字符串中每个字符的Unicode编码进行忽略大小写比较
indexOf:目标字符或字符串在源字符串中位置下标
lastIndexOf:目标字符或字符串在源字符串中最后一次出现的位置下标
valueOf:其他类型转字符串
charAt:获取指定下标位置的字符
codePointAt:指定下标的字符的Unicode编码
concat:追加字符串到当前字符串
isEmpty:字符串长度是否为0
contains:是否包含目标字符串
startsWith:是否以目标字符串开头
endsWith:是否以目标字符串结束
format:格式化字符串
getBytes:获取字符串的字节数组
getChars:获取字符串的指定长度字符数组
toCharArray:获取字符串的字符数组
join:以某字符串,连接某字符串数组
length:字符串字符数
matches:字符串是否匹配正则表达式
replace:字符串替换
replaceAll:带正则字符串替换
replaceFirst:替换第一个出现的目标字符串
split:以某正则表达式分割字符串
substring:截取字符串
toLowerCase:字符串转小写
toUpperCase:字符串转大写
trim:去字符串首尾空格
8.普通类和抽象类有哪些区别?
抽象类不能被实例化
1.抽象类可以有抽象方法,抽象方法只需申明,无需实现
2.含有抽象方法的类必须申明为抽象类
3.抽象类的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类
4.抽象方法不能被声明为静态
5.抽象方法不能用 private 修饰
6.抽象方法不能用 final 修饰
9.抽象类必须要有抽象方法吗?
不一定。如
public abstract class TestAbstractClass {
public static void notAbstractMethod() {
System.out.println("I am not a abstract method.");
}
}
10.接口和抽象类有什么区别?
1.抽象类可以有构造方法;接口中不能有构造方法。
2.抽象类中可以有普通成员变量;接口中没有普通成员变量。
3.抽象类中可以包含非抽象普通方法;接口中的所有方法必须都是抽象的。
4.抽象类中的抽象方法的访问权限可以是 public、protected 和 default;接口中的5.抽象方法只能是 public 类型的,并且默认即为 public abstract 类型。
6.抽象类中可以包含静态方法;JDK1.8 前接口中不能包含静态方法,JDK1.8 及以后可以包含已实现的静态方法。
public interface TestInterfaceStaticMethod {
static String getA() {
return "a";
}
}
7.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量可以是任意访问权限;接口中变量默认且只能是 public static final 类型。
8.一个类可以实现多个接口,用逗号隔开,但只能继承一个抽象类。
9.接口不可以实现接口,但可以继承接口,并且可以继承多个接口,用逗号隔开。