文章目录
1. Lambda表达式
【JAVA8】快速理解Consumer、Supplier、Predicate与Function_阳阳的博客-优快云博客_supplier和function
2. Static和Final
java中static和final修饰符 - 韦邦杠 - 博客园 (cnblogs.com)
1、static变量
按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。两者的区别是:对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问,当然也可以通过对象来访问(但是这是不推荐的)。
2、静态方法
静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。因为实例成员与特定的对象关联!因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract
3、final修饰类中的属性
无论属性是基本类型还是对象类,final所起的作用都是变量里面存放的“值”不能变。这个值,对于基本类型来说,变量里面放的就是实实在在的值,如1,“abc”等。 而引用类型变量里面放的是个地址,所以用final修饰引用类型变量指的是它里面的地址不能变,并不是说这个地址所指向的对象或数组的内容不可以变,这个一定要注意。
final修饰属性,声明变量时可以不赋值,而且一旦赋值就不能被修改了。对final属性可以在三个地方赋值:声明时、初始化块中、构造方法中。总之一定要赋值。
3. Java中的集合
Java集合中List,Set以及Map等集合体系详解(史上最全)_君羊-优快云博客_java集合
4. 函数式接口
java8 四大核心函数式接口Function、Consumer、Supplier、Predicate
原文:https://blog.youkuaiyun.com/a879611951/article/details/80104014
Function<T, R>
T:入参类型,R:出参类型
调用方法:R apply(T t);
定义函数示例:Function<Integer, Integer> func = p -> p * 10; // 输出入参的10倍
调用函数示例:func.apply(10); // 结果100
Consumer
T:入参类型;没有出参
调用方法:void accept(T t);
定义函数示例:Consumer consumer= p -> System.out.println§; // 因为没有出参,常用于打印、发送短信等消费动作
调用函数示例:consumer.accept(“18800008888”);
Supplier
T:出参类型;没有入参
调用方法:T get();
定义函数示例:Supplier supplier= () -> 100; // 常用于业务“有条件运行”时,符合条件再调用获取结果的应用场景;运行结果须提前定义,但不运行。
调用函数示例:supplier.get();
Predicate
T:入参类型;出参类型是Boolean
调用方法:boolean test(T t);
定义函数示例:Predicate predicate = p -> p % 2 == 0; // 判断是否、是不是偶数
调用函数示例:predicate.test(100); // 运行结果true
5. 字符串
C语言与Java字符串的异同
C语言中字符数组需要结束符’\0’才会结束,而Java不需要
来自 https://blog.youkuaiyun.com/weixin_30539625/article/details/98595479
6. Stream数据流
7. Input和Output
Scancer:
next()方法输入字符串不能读取空格,可以使用nextLine()来读取一行。
总结:next碰到空格,换行都结束输入。而nextLine只以换行(回车)才会结束输入。
User Input Command Line Argument只能在运行程序的时候将输入传进程序,在程序运行的过程中就没办法使用 了。我们可以使用 Scanner 类来解决这个问题。Scanner的作用类似C语言的 scanf ,但是给我们提供 了更多的功能(method)。Scanner (Java Platform SE 8 ) (oracle.com)
Read Files :
第一种方法,使用 FileReader和 Scanner
优点: scanner能帮我们Parse data => nextInt()
第二种方法,使用 FileReader 和 BufferedReader
优点:buffer更大,效率更高 => 可以读取更大的文件,更快
Differences:
scanner的nextLine(): 如果没有内容了会报错,用hasNextLine()先检查 但是br的readLine()不会报错,如果没有内容会返回null。