一、枚举:是一种引用数据类型,主要对数据进行限制。
语法:enum
如:
enum WEEKDAY{
MON,TUE,THU
}
public class Test {
public static void main(String[] args) {
int num=10;
WEEKDAY weekday=WEEKDAY.MON;
System.out.println(weekday);
}
//输出结果:MON
二、内部类:在一个类的里面又定义一个类
1、内部类的分类:
(1)静态内部类:
在一个类中定义一个静态类,在静态内部类中可以定义静态内容和实例内容。
(1)访问静态内容时: Test.A.静态方法();
如:public class Test {
static class A{
static int num=7;
static int getNum() {
return num;
}
}
public static void main(String[] args) {
System.out.println(Test.A.getNum()); //输出结果:7
}
}
(2)访问实例内容时: Test.A a=new Test.A(); a.实例方法();
如:
public class Test {
static class A{
void print() {
System.out.println("静态内部类的实例方法");
}
}
public static void main(String[] args) {
Test.A a=new Test.A();
a.print(); //输出结果:静态内部类的实例方法
}
}
2、成员内部类:
在一个类中定义一个非静态类。成员内部类可以直接使用外部类中定义所有内容,包括私有内容
(1)创建成员内部类的对象:
外部类名.内部类名 b=new 外部类名().new 内部类名();
如:
public class Test {
private String name="tom";
class B{
int age=20;
void display() {
System.out.println("名字:"+name);
}
}
public static void main(String[] args) {
Test t=new Test();
Test.B b=t.new B();
b.display();
System.out.println("年龄:"+b.age);
}
}
//输出结果:
名字:tom
年龄:20
3、局部内部类:
4、匿名内部类:没有名字,实现需要有个接口
例1:
//接口USB.java文件
public interface USB {
void work();
}
//Test.java文件
public static void main(String[] args) {
USB usb1=new USB() {
@Override
public void work() {
System.out.println("键盘输入");
}
};
usb1.work();
USB usb2=()->{System.out.println("连接打印机");};
usb2.work();
}
//输出结果:
键盘输入
连接打印机
例2:
//接口Calc.java文件
public interface Calc {
int sum(int a,int b);
}
//Test.java文件
public static void main(String[] args) {
Calc c1=new Calc() {
@Override
public int sum(int a, int b) {
return a+b;
}
};
System.out.println(c1.sum(3, 7));
Calc c2=(a,b)-> a+b;
System.out.println(c2.sum(5, 1));
Calc c3=(a,b)-> {return a+b;};
System.out.println(c3.sum(2, 6));
}
//输出结果:
10
6
8