Q:一个Java文件中可以有多个类么(不含内部类)?
答:可以,一个Java文件中可以有多个类,但是最多只能有一个被public修饰的类;此外,如果一个Java文件中包含public修饰的类,则这个类的类名必须和Java文件名保持一致。
一、Object类
1、Object类的常见方法有哪些?
2、== 和 equals() 的区别
3、HashCode()的作用?
4、为什么要有hashCode?
5、为什么重写equals()时必须重写hashCode()方法?
二、String类
1、String、StringBuffer、StringBuilder的区别?
2、String为什么是不可变的?
3、字符串拼接用“+”还是StringBuilder?
建议使用StringBuilder,因为使用“+”实际上还是调用StringBuilder来拼接字符串的。
4、String#equals() 和 Object#equals() 有何区别?
5、字符串常量池
字符串常量池 是JVM为了提升性能和减少内存消耗针对字符串(String类)专门开辟的一块区域。主要目的是为了避免字符串的重复创建。
String s1 = new String(“abc”);这句话创建了几个字符串对象?
会 创建1个或2个字符串对象 。(如果字符串常量池中不存在,则创建两个;反之,如果字符串常量池中存在,则创建一个)
6、intern方法有什么作用?
String.intern()是—个native(本地)方法,其作用是将指定的字符串对象的引用保存在字符串常量池中。可以简单分为两种情况:
- 如果字符串常量池中保存了对应的字符串对象的引用,就直接返回该引用。
- 如果字符串常量池中没有保存了对应的字符串对象的引用,那就在常量池中创建一个指向该字符串对象的引用并返回。
7、String类型的变量和常量做“+”运算时发生了什么?
三、实用类
1、枚举
枚举 Enum,是一种有确定值区间的数据类型,本质上就是一个类,具有简洁、安全、方便等特点。
枚举的值被约束到一个特定的范围内,只能从这个范围以内取值。
Q:为什么要有枚举?
因为描述某些对象的属性时,该属性的值不能随便定义,必须在某个特定的区间内取值,如星期、月份等。
出于对数据安全的考虑,类似这种有特定取值范围的数据我们就可以使用枚举来描述。
枚举指由一组常量组成的类型,指定一个取值区间,我们只能从区间中取值。
2、Math
3、random
用来产生随机数的类,并且可以任意指定一个区间,在此区间范围内产生一个随机数。
4、日期类
1、java.util.Date
Date表示当前的系统时间
SimpleDateFormat转换时间格式(“yyyy-MM-dd hh:mm:ss”)(M —— 月份,m —— 分钟,H —— 24小时制,h —— 12小时制)
2、java.util.Calendar
Calendar用来完成日期数据的逻辑运算
运算思路:(op + com + t)
①将日期数据传给Calendar (Calendar 提供了很多静态常量,专门用来记录日期数据)
②调用相关方法进行运算