Lambda 表达式
Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。
Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
语法
lambda 表达式的语法格式如下:
(parameters) -> expression 或 (parameters) ->{ statements; }
lambda表达式的重要特征:
可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定表达式返回了一个数值。
super关键字
super代表父类的引用,用于访问父类的属性、方法、构造器
基本语法:
1.访问父类的属性,但不能访问父类的private属性
super.属性名;
2.访问父类的方法,不能访问父类的private方法
super.方法名(参数列表);
3.访问父类的构造器(这点前面用过);
super(参数列表);只能放在构造器的第一句,只能出现一次!
字符串的两种定义方式
1. 直接定义字符串
String str="Hello Java";
2.使用 String 类定义
String()
初始化一个新创建的 String 对象,表示一个空字符序列。
String(String original)
初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列。换句话说,新创建的字符串是该参数字符串的副本。例如:
String str1 = new String("Hello Java");
String str2 = new String(str1);
创建线程的两种方式
1)、创建线程的第一种方式:
继承Thread类,重写run方法
2)、创建线程的第二种方式:
实现Runnable接口。重写run方法
Set 和 Map
Set 和 Map 主要的应用场景在于 数据重组 和 数据储存。
Set 是一种叫做集合的数据结构,Map 是一种叫做字典的数据结构。
Map是一组键值对的结构,具有极快的查找速度
Map 结构的默认遍历器接口(Symbol.iterator属性),就是entries方法。
Map和Set的区别
Map是键值对,Set是值的集合
Map可以通过get方法获取值,而Set不能因为它只有值;
Set的值是唯一的可以做数组去重,Map由于没有格式限制,可以做数据存储
map以键值对的形式存储,key=value组成pair,是一组映射关系。set只有值,可以认为只有一个数据,并且set中元素不可以重复且自动排序。
java生成随机数的方式:
1.Math.random()方法:使用Math.random()方法可以生成一个0到1之间的随机double值。如果需要生成特定范围内的随机数,可以通过一些算术运算来实现。例如,生成一个1到100之间的随机整数:
int randomNumber = (int) (Math.random() * 100) + 1;
2.Random类:Java中的Random类提供了更灵活的随机数生成方式。可以创建一个Random对象,并使用其nextInt()方法来生成随机整数。例如,生成一个1到100之间的随机整数:
Random random = new Random();
int randomNumber = random.nextInt(100) + 1;
3.ThreadLocalRandom类:Java 7引入了ThreadLocalRandom类,提供了更好的多线程环境下的随机数生成支持。可以使用其nextInt()方法来生成随机整数。例如,生成一个1到100之间的随机整数:
intrandomNumber=ThreadLocalRandom.current().nextInt(1,101);
4。SecureRandom类:如果需要更安全的随机数,可以使用SecureRandom类。这个类提供了更强的随机性,适用于需要高度随机性的场景,比如密码学。例如,生成一个1到100之间的随机整数:
SecureRandomsecureRandom=newSecureRandom();intrandomNumber=secureRandom.nextInt(100) +1;
向上转型与向下转型
1.向上转型:
父类 : class Fruit {}
子类 : class Apple extends Fruit{}
创建向上转型对象 fruit ;
Fruit fruit = new Apple();
Apple 向上转型为父类
如果 Apple 中有重写父类方法,fruit 对象默认调用子类中重写方法
注意 :
fruit 可以直接访问子类重写方法。
fruit 不能直接访问子类私有方法、子类所有属性。
fruit 可以通过重写方法调用子类私有方法和属性
fruit 重写方法中调用方法和属性顺序 : 子类 -> 父类
其他 : 关于重写的返回值类:如果方法的返回类型是 void和基本数据类型,则返回值重写时不可修改。但是如果方法的返回值是引用类型,重写时是可以返回该引用类型的子类的。
2.向下转型
注意 : 只有向上转型过的对象才能向下转型
向下转型为恢复子类所有功能。
Apple apple = (Apple) fruit;