Java基础复习(2)
2021-04-11 21:26
标签:lambda 函数式编程 boolean 调用 集合 成功 for 参数传递 通过 上一篇博客学习了数组和对象的使用以及内存中的基本占用。这次就来学习一下java中常见的一些API。 在上一节我们已经学过,数组的长度是不可改变的,这在开发中会有很多的不方便。而ArrayList就提供了一个可变长度的集合。下面来看基本的使用: 可以看到,基础使用十分简单,只要定义好一个ArrayList后就可以很方便的使用了。 下面来看里面的几个常用方法: 可以看到,使用ArrayList会带来极大的方便。那么我们刚才提到,不能使用ArrayList来存储基本类型,那是真的不能吗?其实不是的,java中提供了包装类,可以通过包装类来存储基本类型的ArrayList: static关键字其实很简单,有点类似C语言中的static,使用了这个关键字后,会将内容存到一块特殊区域共享,比如在类中定义了一个static修饰的成员变量: 那么这个room变量就被这个类的所有对象共用了。如果作用到成员方法上,就可以使用类名.方法名来方便的使用这个方法。 Lambda表达式是JDK1.8中新增的一个特性,称之为函数式编程。那么为什么我们需要使用Lambda表达式呢?首先来看一个例子: 这里我们用匿名内部类实现了Runnable接口,新建了一个Thread对象。但这里面的new Runnable,方法名称等等都不是我们关注的内容,我们所关注的只有方法体中的内容。而使用Lambda表达式就可以让我们做到只关注内容: Lambda表达式主要由三部分组成,参数,箭头和代码段。看起来是十分的简单,我们写几个例子看看: 这里的invokeCook方法是调用了Cook接口中的makeFood方法,该方法无参无返回值,所以这么写就可以了。 这次我们使用Arrays工具类中的sort方法,第二个参数需要填入比较的方法,我们可以直接使用Lambda表达式书写,只需要关注内部逻辑即可。 可以看到,我们可以省略一些内容。接下来写一个例子试试: 这是最开始的引子,我们可以写成这样的简化格式。 需要注意的是,使用Lambda表达式是有前提的: 今天学习的内容不多,主要补充学习了ArrayList和static关键字以及JDK8的新特性Lambda表达式。实际上,提到了集合就不得不学习一下Collection集合以及java中各种集合的接口定义等,但那些都已经学习过了,这里就不再赘述了。接下来会学习一下JDK8的一些新特性。 Java基础复习(2) 标签:lambda 函数式编程 boolean 调用 集合 成功 for 参数传递 通过 原文地址:https://www.cnblogs.com/wushenjiang/p/13358177.html写在前面
ArrayList
/**
* 数组的长度不可以改变
* 但ArrayList的集合的长度是可以改变的
* 对于ArrayList来说,有一个尖括号
/**
* ArrayList中的常用方法
* 1. boolean add(E e) 向集合中添加元素,参数的类型和泛型一致。
* Tips:对于ArrayList来说,add添加动作一定成功,所以返回值可以不需要写。其他集合不一定。
* 2. E get(int index) 从集合当中获取元素,参数是索引编号,返回值是对应位置的元素
* 3. E remove(int index) 从集合中删除元素
* 4. int size() 获取集合的长度
*/
public static void method(){
ArrayList
/**
* 存储基本类型的ArrayList
* 可以使用包装类
* 除了int和char的对应包装类,其他都是首字母大写
* int Integer
* char Character
* 从JDK 1.5+开始支持自动装箱 自动开箱
* 自动装箱:基本类型 -> 包装类型
* 自动开箱: 包装类型 -> 基本类型
*/
public static void basicArray(){
ArrayList
static关键字
static String room;
Lambda表达式
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "新的线程创建了");
}
}).start();
// 使用Lambda表达式
new Thread(()->{
System.out.println(Thread.currentThread().getName() + "新的线程创建了");
}).start();
Lambda表达式的标准格式
/**
* Lambda表达式的标准格式:
* 由三部分组成:
* a.一些参数
* b.一个箭头
* c.一段代码
* 格式:
* (参数列表) -> {一些重写方法的代码}
* 解释:():接口中抽象方法的参数列表,没有参数就空着,多个参数用逗号分隔
* ->:传递的意思,把参数传递给方法体{}
* {}:重写接口的抽象方法体
* @param args
*/
// 使用Lambda表达式
invokeCook(() -> {
System.out.println("恰饭啦");
});
// 使用Lambda表达式简化匿名内部类
Arrays.sort(arr,(Person o1,Person o2) -> {
return o1.getAge() - o2.getAge();
});
Lambda表达式的省略格式
/**
* 可以省略的内容:
* 1.(参数列表):括号中参数列表的数据类型可以省略不写
* 2.(参数列表): 括号中参数只有一个,类型和()都可以省略
* 3.{代码块} 如果{}中的代码只有一行,无论是否有返回值都可以省略({},return,;)
* Tips:要省略{},return,分号必须一起省略
*/
// 优化省略Lambda
new Thread(() -> System.out.println(Thread.currentThread().getName() + "新的线程创建了"));
使用Lambda的前提
总结
下一篇:线程的通信