1 键盘录入
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
String str = sc.nextLine();
2 生成随机数
Random r = new Random();
int number = r.nextInt(100); //0-100(包括0 不包括100)
3 字符串遍历
对象.charAt();
对象.length();
4 StringBuilder
append(); //添加数据 返回对象本身
reverse(); //反转
链式编程:sb.append().append().reverse() …
toString(); // 返回字符串
5 ArrayList<String> array = new ArrayList<>();
add();
remove();
set();
get();
size();
6 static(静态)
静态: 随着类的加载而加载
非静态: 随着对象的创建而加载
静态不能访问非静态
静态成员可以直接用类名调用
7 极限修饰符
修饰符 同一个类中 同一个包中子类无关类 不同包的子类 不同包的无关类
private ✅
默认 ✅ ✅
protected ✅ ✅ ✅
Public ✅ ✅ ✅ ✅
8 多态的前提和体现
有继承/实现关系
有方法重写
有父类引用指向子类对象
9 多态中成员访问特点
成员变量:编译看左 运行看左
成员方法:编译看左 运行看右
10 多态的向上转型和向下转型
向上转型:父类引用指向子类对象
向下转型:父类引用转为子类对象
ClassCastException 类型转换异常
关键字:instanceof //判断向下转型
11 接口中成员特点
成员变量:只能是常量 默认修饰符:public static final…
构造方法:无
成员方法:只能是抽象方法 默认修饰符:public abstract…
12 内部类的访问特点
内部类可以直接访问外部类的成员,包括私有。
外部类要访问内部类的成员,必须创建对象。
13 匿名内部类(局部内部类的一种)
前提:存在一个类或者接口,这里的类可以是具体类也可以是抽象类。
本质:是一个继承了该类或者实现了该接口的子类匿名对象。
14 Math(数学工具类)
int abs(int a); 返回绝对值
double ceil(double a);
double floor(double a);
int round(float a); 四舍五入
int max(int a , int b);
int min(int a , int b);
double pow(double a , double b); 返回a的b次幂的值
double random(); 返回为double的正值,[0.0,1.0)
15 System
exit();
currentTimeMillis();
16 Object
equals();
toString();
17 冒泡排序
for(int x = 1 ; x < arr.length ; x++){
for(int i = 0 ; i < arr.length-x ; i++){
if (arr[i] > arr[i+1]) {
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
18 Arrays工具类
toString(int[] a);
sort(int[] a);
19 工具类
构造方法私有
成员方法静态
20 增强for循环
快捷生成键:iter
21 TreeSet 二叉树
接口Comparable 方法compareTo()
this 是马上存储的元素
参数去点是已经存储的元素
22 什么是序列化?
就是将我们的java代码中的对象,以流的形式,写入到本地磁盘。
什么是反序列化?
将本地磁盘中的数据,以流的形式还原成Java中的对象。
如果一个对象想要被序列化,要满足什么条件?
类要实现序列化接口,Serializable
实现序列化接口,为什么不需要重写所有的抽象方法?
因为接口中没有方法。
23 Properties类
load();
store();
24 多线程 Thread
进程:正在执行的程序。
线程:是进程中的单个顺序控制流,是一条执行路径。
实现多线程的方式一:继承Thread类
start();
setName();
getName();
Thread.currentThread();
线程的优先级:getPriority(); setPriority(); 范围1-10
线程控制:sleep(long millis);
join(); 等待这个线程死亡
setDaemon(boolean b); 守护线程
线程的生命周期:
实现多线程方式二:实现Runnable接口
同步代码块格式:synchronized(任意对象){
多条语句操作共享数据的代码
}
同步方法的格式:修饰符 synchronized 返回值类型 方法名(方法参数){ }
普通锁:this
静态锁:类名.class
Lock 锁:lock(); 获得锁
unlock();释放锁
25 常用的函数式接口
Supplier<T> 生产型接口, 方法:T get();
Consumer<T> 消费型接口,方法:accept(T t); andThen(Consumer after);
Predicate<T> 判断,方法:boolean test(T t); Predicate negate(); and(); or();
Function<T R> 转换,方法:R apply(T t); andThen(Function after);
26 Stream流
生产流的方式:集合名.stream()
Stream.of(T…values)
Stream流的中间操作方法:
filter();过滤
limit();截取前几个元素
skip();跳过前几个元素,返回后面的元素
concat();合并两个流
distinct();去除重复元素
sorted();排序
sorted(Comparator);按照比较器排序
map();
mapToInt();
Stream流的终结操作方法:
forEach();
count(); |
|