内部类
用得最多的是在有事件监听的情况下
广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类
-
成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员)。
class Circle { double radius = 0; public Circle(double radius) { this.radius = radius; } class Draw { //内部类 public void drawSahpe() { System.out.println("drawshape"); } } }
-
静态内部类是不需要依赖于外部类
匿名内部类
匿名内部类:没有名字的内部类
-
匿名内部类只能使用一次,它通常用来简化代码编写
-
使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口
-
只要一个类是抽象的或是一个接口,那么其子类中的方法都可以使用匿名内部类来实现
最常用的情况就是在多线程的实现上,因为要实现多线程必须继承Thread类或是继承Runnable接口
public class Demo {
public static void main(String[] args) {
Thread t = new Thread() {
//直接将抽象类的方法在大括号中实现了,这样便可以省略一个类的书写
public void run() {
for (int i = 1; i <= 5; i++) {
System.out.print(i + " ");
}
}
};
t.start();
}
}
常见类
Random
java.lang.Math.Random
调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间,返回值是一个伪随机选择的数,在该范围内(近似)均匀分布
java.util.Random
Random():创建一个新的随机数生成器。
Random(long seed):使用单个 long 种子创建一个新的随机数生成器。
rand.nextInt(100);中的100是随机数的上限,产生的随机数为0-100的整数,不包括100
AtomicInteger类
AtomicInteger类的理解与使用
https://blog.csdn.net/u012734441/article/details/51619751
AtomicInteger 是一个提供原子操作的 Integer 类,通过线程安全的方式操作加减(适合高并发情况下的使用
- 在使用Integer的时候,必须加上synchronized保证不会出现并发线程同时访问的情况
- 而在AtomicInteger中却不用加上synchronized,在这里AtomicInteger是提供原子操作的
public class Sample1 {
private static Integer count = 0;
synchronized public static void increment() {
count++;
}
}
public class Sample2 {
private static AtomicInteger count = new AtomicInteger(0);
public static void increment() {
count.getAndIncrement();
}
}