-
Math.random() 返回包括0,不包括1之间的随机浮点数
返回num1-num2之间的随机整数:
int num=num1+Math.random()*(num2-num1)
-
equals与==的区别
==
比较的是对象的内存地址
equals
比较的是对象的内容 -
String,StringBuffer,StringBuilder的区别
String
:是不可变的,每次修改都会创建新的对象
StringBuilder
:使用append()追加字符串,线程不安全但效率较高
StringBuffer
:使用append()追加字符串,线程安全但效率较低 -
抽象类和接口的区别
抽象类可以被继承,子类要实现所有抽象方法,否则子类也是抽象类。抽象类中可以有具体方法和抽象方法(用abstract修饰)。
接口只能被实现,并且要实现所有方法。接口内的所有方法都是抽象方法。成员变量必须用public static final
修饰。在jdk1.8之后,用default
修饰方法可以在接口内实现具体方法。 -
内部类相关
(1)普通内部类
public class Out{
//外围类
class In{
//内部类
}
}
外围类和内部类可以互相访问内部类私有变量和私有方法
实例化内部类: 先实例化外围类,再实例化内部类
Out out=new Out();
Out.In in=out.new In();
(2)静态内部类
public class Out{
static class In{
}
}
内部类不可以访问外围类
(3)局部内部类
public class Out{
public void method(){
class In{
}
}
}
局部内部类不能用public
或private
修饰,作用域是当前方法内部,即外围类不能访问局部内部类。局部内部类可以访问外围类的私有变量和当前方法内的用final
修饰的变量。
(4)匿名内部类
没有类名,没有构造函数,得实现接口或者继承类,需要的参数从父类构造器中获得
public static void main(String[] args) {
Thread a = new Thread(){
@Override
public void run() {
System.out.println(1);
}
};
a.start();
}
}
- char变量可以存储汉字吗?
可以。char中存储Unicode编码的字符,其中包含汉字。char变量大小为2字节,Unicode编码也是占用2字节。 - 创建对象对象过程
在堆中开辟空间 > 父类静态代码块 > 子类静态代码块 > 父类构造代码块 > 父类构造方法 > 子类构造代码块 > 子类构造方法