Arrays
//把数组中的原始数据改为新数据
double[] price={11.1,33.0,2.3};
Arrays.setAll(price, new IntToDoubleFunction() {
@Override
public double applyAsDouble(int value) {
return price[value]*0.8;
}
});
System.out.println(Arrays.toString(price));
*第一个拷贝数组的指定范围包前不包后
2.数组中存储的是对象,如何排序?
@Override
public int compareTo(Student o) {
//升序规定:左边对象 大于 右边对象 返回正整数
// 左边对象 小于 右边对象 返回负整数
// 左边对象 等于 右边对象 返回0
return this.age-o.age;}//降序相反
Arrays.sort(students, new Comparator<Student>() {
@Override//double升序
public int compare(Student o1, Student o2) {
return Double.compare(o1.getHeight(), o2.getHeight());}});
jdk8新特性:Lambda表达式
1.认识Lambda表达式:
Arrays.sort(students, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return Double.compare(o1.getHeight(), o2.getHeight());
}
});
//简化
Arrays.sort(students,(Student o1, Student o2) ->{
return Double.compare(o1.getHeight(), o2.getHeight());
});
2.Lambda表达式的省略规则(进一步简化):
jdk8新特性:方法引用
1.静态方法引用:类名::静态方法
使用场景:如果某个Lambda表达式里只是调用一个静态方法,并且前后参数的形式一致,就可以用静态方法引用。
2.实例方法引用:对象名::实例方法
使用场景:如果某个Lambda表达式里只是调用一个实例方法,并且前后参数的形式一致,就可以用实例方法引用。
3. 特定类型方法引用:类型::方法
使用场景:如果某个Lambda表达式里只是调用一个实例方法,并且前面参数列表中的第一个参数是作为方法主调,后面的所以参数都是作为该实例方法的入参的。
*4. 构造器引用:类名::new
使用场景:如果某个Lambda表达式里只是在创建对象,并且前后参数情况一致,就可以用构造器引用。
算法
先搞清楚算法流程,直接去推敲如何敲代码。
一.排序算法
1.冒泡排序:
2.选择排序:
二分查找:
1.前提条件:数组中的数据必须是有序的
2.核心思想:每次排除一半的数据,查询数据的性能明显提高很多
public static int binarySearch(int[] arr,int date){
//1定义两个变量,一个站在左边位置,一个右边
int left=0;
int right= arr.length-1;
//2.定义一个循环控制折半
while (left<=right){
//3每次折半,都算出中间位置的索引
int mid=(left+right)/2;
if (date>arr[mid]){
left=mid+1;
} else if (date<arr[mid]) {
right=mid-1;
}else { return mid; } }
return -1; }
正则表达式
·就是由一些特定的字符组成,代表的是一个规则
·作用:1.用来校验数据是否合格
2.在一段文本中查找满足要求的内容
异常
throw:抛出去异常对象
throws:用在方法上,抛出方法内部的异常
*抛异常的时候不知道抛的异常是哪一种,可以直接抛Exception
对异常的处理:
1.捕获异常,记录异常并返回合适的信息给用户
2.捕获异常,尝试重新修复
while (true) {
try {
System.out.println(getMoney());
break;
} catch (Exception e) {
System.out.println("请输入合法数字:");
} }
编写自定义异常处理类:
public class myException extends Exception {
static final long serialVersionUID=-923627383723798L;
public myException(String msg) {
super(msg);
}}