1 equals
与
==
区别
==
如果基本类型,
==
表示判断它们值否相等;
如果引用对象,
==
表示判断两个对象指向内存地址否相同。
equals
如果字符串,表示判断字符串内容否相同;
如果
object
对象方法,比较也引用内存地址值;
如果自己类重写
equals
方法,可以自定义两个对象否相等。
2 int
和
Integer
有什么区别,还有
Integer
缓存实现
int
基本数据类型,
interger
是
int
的 包装类
int
默认值为
0
,而
interger
默认值为
null
,
Interger
使用需要判空处理
Integer
缓存机制:为了节省内存和提高性能,
Integer
类在内部通过使用相同对象引用实现
缓存和重用,
Integer
类默认在
-128 ~ 127
之间,可以通过
- XX:AutoBoxCacheMax
进行修
改,且这种机制仅在自动装箱时候有用,在使用构造器创
Integer
对象时无用。
3 Java
获取反射三种方法
第一种,使用
Class.forName()
静态方法。
第二种,使用类
.class
方法
第三种,使用实例对象
getClass()
方法。
4 Java
创建对象有几种方式
用
new
语句创对象。
使用反射,使用
Class.newInstance()
创对象
/
调用类对象构造方法
Constructor
调用对象
clone()
方法。
运用反序列化手段,调用
java.io.ObjectInputStream
对象
readObject()
方法
5 String
类常用方法都有那些呢?
indexOf()
:返回指定字符索引。
charAt()
:返回指定索引处字符。
replace()
:字符串替换。
trim()
:去除字符串两端空白。
split()
:分割字符串,返回一个分割后字符串数组。
getBytes()
:返回字符串
byte
类型数组。
length()
:返回字符串长度。
toLowerCase()
:将字符串转成小写字母。
toUpperCase()
:将字符串转成大写字符。
substring()
:截取字符串。
equals()
:字符串比较。
6
可以在
static
环境中访问非
static
变量吗?
static
变量在
Java
中属于类,它在所有实例中值一样。当类被
Java
虚拟机载入时候,会对
static
变量进行初始化。因为静态成员属于类, 随着类加载而加载到静态方法区内存,当类
加载时,此时不一定有实例创, 没有实例,就不可以访问非静态成员。类加载先于实例
创,因此静态环境中,不可以访问非静态!
7 object
中定义了哪些方法?
getClass();
获取类结构信息
hashCode()
获取哈希码
equals(Object)
默认比较对象地址值否相等,子类可以重写比较规则
clone()
用于对象克隆
toString()
对象转变成字符串
notify()
多线程中唤醒功能
notifyAll()
多线程中唤醒所有等待线程功能
wait()
让持有对象锁线程进入等待
wait(long timeout)
让持有对象锁线程进入等待,设置超时毫秒数时间
wait(long timeout, int nanos)
让持有对象锁线程进入等待,设置超时纳秒数时间
finalize()
垃圾回收前执行方法
8 hashCode
作用什么
hashCode
存在主要用于查找快捷性,如
Hashtable
,
HashMap
等,
hashCode
用来在散列
存储结构中确定对象存储地址;
如果两个对象相同,就适用于
equals(java.lang.Object)
方法,那么这两个对象
hashCode
一定要相同;
如果对象
equals
方法被重写,那么对象
hashCode
也尽量重写
两个对象
hashCode
相同,并不一定表示两个对象就相同,也就不一定适用于
equals(java.lang.Object)
方法,只能够说明这两个对象在散列存储结构中
9
如何将字符串反转呢?
使用
StringBuilder
或
StringBuffer reverse
方法
10 java8
新特性。
Lambda
表达式:
Lambda
允许函数作为一个方法参数
Stream API
:新添加
Stream API
(
java.util.stream
)真正函数式编程风格引入到
Java
中
方法引用:方法引用提供了非常有用语法,可以直接引用已有
Java
类或对象(实例)方法
或构造器。
Optional
类 :
Optional
类已经成为
Java 8
类库一部分,用来解决空指针异常。
Date Time API
:加强对日期与时间处理