学习笔记——JAVA面试题精选

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.接口不可以实现接口,但可以继承接口,并且可以继承多个接口,用逗号隔开。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值