函数式接口
函数式接口:只有一个抽象方法的接口
@FunctionalInterface//是判断是否是函数式接口,如果是则编译成功,不是则编译失败
@FunctionalInterface
public interface MyI {
void show(int a);
}
函数式接口包括:消费性,供给型,断言型
消费型接口:有形参
供给型接口:有形参,有返回值
断言型接口:有形参,有返回值,返回值必须是boolean类型
类加载器
作用:负责将class文件加载到内存中
反射
反射机制:
获取类对象的三种方式:类名.class属性
对象名.getClass()方法
Class.forName(全限定类名)方法
全限定类名:包名.类名
三种方式获取的类对象是同一个
枚举
是final修饰的类,不能被继承
是一个数据类型变量,是我们自己创建出来的
枚举项必须写在第一排,枚举值是静态的常量
枚举的构造方法可以不写,写的话必须是私有
注解
对程序进行标注和解释
注释:给程序员看的
注解:给程序看的
元注解:注解的注解
设计模式
单例模式:保证创建对象唯一
//饿汉式
//私有化构造方法
private Users(){}
//自定义成员变量
public static Users users = new Users();
//提供一个公开的方法
public static Users getUsers(){
return users;
}
//懒汉式
//私有化构造方法
private Users(){}
//创建成员变量
private static Users user = null;
///公开的方法
public static User getuser(){
if(user == null){
user = new Users();
}
return user;
}
以前的补充
switch()分支括号里只能填 short,int,long,char,String,枚举,6种类型
静态代码块只执行一次
算法
合并两个有序数组
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。
请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。
public static void merge(int[] nums1, int m, int[] nums2, int n){
int p1 = 0;
int p2 = 0;
int[] sorted = new int[m+n];
int curr = 0;
while(p1<m||p2<n){
if(p1 == m){
curr = nums1[p1++];
}else if(p2 == n){
curr = nums2[p2++];
}else if(nums1[p1] < nums2[p2]){
curr = nums1[p1++];
}else{
curr = nums2[p2++];
}
sorted[p1+p2-1] = curr;
}
for (int i = 0; i != m + n; ++i) {
nums1[i] = sorted[i];
}
}