Java 03(代码块,内部类,lambda表达式)

代码块

使用{}括起来的代码块

1.局部代码块

位置
方法中的一对大括号
作用

在这里插入图片描述

减少代码的生命周期,提早的释放内存
----
很少用,因为现在电脑的内存大了

2.构造代码块

位置

image-20241211105806361

类中方法外的一堆大括号
特点
1.在创建对象,执行代码的时候,就会执行构造代码块,(优先于构造方法执行)
作用
将多个构造方法中,重复的代码,抽取到构造代码块当中,从而提高代码的复用性

3.静态代码块

位置
类中方法外的一对大括号,需要加入static关键字
特点

在这里插入图片描述

类加载的时候就会调用,当这个类加载的时候就i会创建一次,
但是类只加载一次,所以只会执行一次,但是***局部代码块除外
作用
1.将数据进行初始化
(数据比较复杂)
2.文件读取

内部类

就是定义在一个类里面的类

成员内部类

class outer{
	class inner{
	}
}
格式
outer.inner in = new outer().new inner();
成员访问细节
内部类访问外部类:直接访问,包括私有
外部类访问内部类:不可以,需要访问的话需要创建对象,
并且,在外部内类里创建内部类对象的时候,可以直接inner =new inner();
小面试题

在这里插入图片描述

意义
一个汽车对象有一些别的内容例如发动机,可以使用内部类
但一般比较少用

静态内部类

class outer{
	static class inner{
	
	}
}
只有内部类才能这样写;
格式
outer inner in =new outer.inner();
注意事项
静态只能访问静态

局部内部类

放在方法里面,代码块和构造器等执行体里面;

在这里插入图片描述

比较鸡肋,不怎么用,上图是一个样例

匿名内部类**

概述
本质上是一个特殊的局部内部类(定义在方法内部)
前提
需要存在一个接口或者类
格式
new 接口/类名{
}
问题

在这里插入图片描述

可以让代码变得更加简介
在定义类的时候就可以实例化对象

Lambda表达式

1.作用

简化匿名内部类的代码写法
(匿名内部类杯从写的形参列表) -> {
 	被重写的方法体代码
}

2.例子

在这里插入图片描述

3.注意

并不是所有的都可以使用lambda使用
只允许操作函数式表达式接口:
也就是有且仅有1个抽象方法的接口
可以跟@Override的使用一样,在需要的时候加上@FunctionalInterface检测一下

4.细节

a
如果方法体只有一行代码,可以省略大括号不写
b

在这里插入图片描述
)

只有一个参数,参数类型和小括号都可以不写
c
忘记了,参数类型可以一直省略不写

5.与匿名内部类的差别

1.lambda只能是函数类接口
2.lambda在编译的时候不会产生class字节码文件,但是匿名内部类需要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值