4.6学习总结

包装类

包装类:基本数据类型对应的引用数据类型

JDK5以后新增了自动装箱,自动拆箱

以后获取包装类方法,不需要new,直接调用方法,直接赋值即可

 

//1.把整数转成二进制,十六进制
String str1= Integer.toBinarystring(i: 100);
System.out.println(str1);//1100100
//2.把整数转成八进制
String str2 = Integer.tooctalstring(i: 100);
System.out.println(str2);//144
//3.把整数转成十六进制
String str3= Integer.toHexstring(i:100);
System.out.println(str3);//64
//4.将字符串类型的整数转成int类型的整数
//强类型语言:每种数据在java中都有各自的数据类型
//在计算的时候,如果不是同一种数据类型,是无法直接计算的。
int i = Integer.parseInt( s:"123");
System.out.println(i);
System.out.println(i + 1);//124

强类型语言:每种数据在Java中都有个各自的数据类型,在计算的时候,如果不是同一种数据类型,无法直接计算

细节1:在类型转换的时候,括号中的参数只能是数字不能是其他,否则代码会报错

细节2:八种包装类中,处理Character都有对应的parseXxx方法,进行类型转换

以后我们如果要键盘输入,不管什么类型,统一使用nextLine,可以输入一整行的数据,遇到回车才停止,之后再用parseXxx进行类型转换。

Arrays

//tostring:将数组变成字符串
System.out.println("-----------------toString----
int[]arr={1,2,3,4,5,6,7,8,9,10};
System.out.printIn(Arrays.tostring(arr));//[1,2,3,4,5,6,7,8,9,10]

//binarySearch:二分查找法查找元素
//细节1:二分查找的前提:数组中的元素必须是有序,数组中的元素必须是升序的
//细节2:如果要查找的元素是存在的,那么返回的是真实的索引
//但是,如果要查找的元素是不存在的,返回的是-插入点-1
//疑问:为什么要减1呢?
//解释:如果此时,我现在要查找数字0,那么如果返回的值是-插入点,就会出现问题了
//如果要查找数字0,此时@是不存在的,但是按照上面的规则-插入点,应该就是-0
//为了避免这样的情况,Java在这个基础上又减一。
System.out.println("_--
---binarySearch--
System.out.println(Arrays.binarySearch(arr,key:10));//9
key: 2));//1
System.out.println(Arrays.binarySearch(arr,
System.out.println(Arrays.binarySearch(arr, key:20));//-11

//copyof:拷贝数组
//参数一:老数组
//参数二:新数组的长度
//方法的底层会根据第二个参数来创建新的数组
//如果新数组的长度是小于老数组的长度,会部分拷贝
//如果新数组的长度是等于老数组的长度,会完全拷贝
//如果新数组的长度是大于老数组的长度,会补上默认初始值
System.out.println("-------------------copyOf---
int[l newArr1 =Arrays.copyof(arr,newLength:20);
System.out.printIn(Arrays.tostring(newArr1));//[1,2,3,4,5,6,7,8,9,10]

//copyofRange:拷贝数组(指定范围)
//细节:包头不包尾,包左不包右
System.out.println("----
----copyOfRange-
int[]newArr2 =Arrays.copyOfRange(arr, from:0,to:9
System.out.println(Arrays.tostring(newArr2));
//fi11:填充数组
System.out.println("
Arrays.fill(arr, val: 100);
System.out.println(Arrays.tostring(arr));

//sort:排序。默认情况下,给基本数据类型进行升序排列。底层使用的是快速排序。
System.out.println("--
int[]arr2={10,2,3,5,6,1,7,8,4,9};
Arrays.sort(arr2);
---SOAT
System.out.println(Arrays.tostring(arr2));

常见算法

二分查找

二分查找的优势:提高查找效率

二分查找的前提条件:数组必须是有序的

递归

排序

Lambda表达式

Lambda表达式的注意点:

1.Lambda表达式可以用来减缓匿名内部类的书写

2.Lambda表达式只能简化函数式接口的内部类的写法

3.函数式接口:

有且只有一个抽象方法的接口叫做函数式接口,接口上方可以加@FunctionalInterface注释

利用匿名内部类的形式去调用下面的方法
调用一个方法的时候,如果方法的形参是一个接口,那么我们要传递这个接口的实现类对象
如果实现类对象只要用到一次,就可以用匿名内部类的形式进行书写

Lambda 简写格式:
小括号:数据类型可以省略,如果参数只有一个,小括号还可以省略
大括号:如果方法体只有一行,return,分号,大括号都可以省略

comparegto(String anotherString):

将字符串按字典的顺序进行比较

集合

Collection是一个接口,我们不能直接创建他的对象。
所以,现在我们学习他的方法时,只能创建他实现类的对象。

添加:

细节1:如果我们要往List系列集合中添加数据,那么方法永远返回true,因为List系列的是允许元素重复的。
细节2:如果我们要往set系列集合中添加数据,如果当前要添加元素不存在,方法返回true,表示添加成功。

如果当前要添加的元素已经存在,方法返回false,表示添加失败。
因为set系列的集合不允许重复。

删除:
细节1:因为collection里面定义的是共性的方法,所以此时不能通过索引进行删除。只能通过元素的对象进行删除。
细节2:方法会有一个布尔类型的返回值,删除成功返回true,删除失败返回fa1se
如果要删除的元素不存在,就会删除失败。

4.判断集合中某一个学生对象是否包含
Student s4 =new student( name:"zhangsan",age:23);
因为contains方法在底层依赖equals方法判断对象是否一致的。
如果存的是自定义对象,没有重写equa1s方法,那么默认使用object类中的equa1s方法进行判断,而object类中equals方法,依赖地址值进行判断。
需求:如果同姓名和同年龄,就认为是同一个学生。
所以,需要在自定义的Javabean类中,重写equals方法就芯以了,

Collection的遍历方式分为:迭代器遍历,增强for遍历和Lambda表达式遍历三种。

迭代器遍历

package Test.Collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Collection1 {
    public static void main(String[] args) {
        //1.创建一个集合对象
        Collection<String> coll = new ArrayList<>();
        coll.add("1");
        coll.add("2");
        coll.add("3");
        coll.add("4");

        //2.获取迭代器对象
        Iterator<String> it=coll.iterator();
        //3.利用循环不断去获取集合中的每一个元素
        while(it.hasNext()){
            //4.next方法的两件事情:获取元素并移动指针
            String s=it.next();
            System.out.println(s);
        }
    }
}

细节注意点:
1,报错NoSuchElementException
2,迭代器遍历完毕,指针不会复位
3,循环中只能用一次next方法
4,迭代器遍历时,不能用集合的方法进行增加或者删除

可以使用迭代器的方法来增加或者删除

增强for遍历

快速生成方式:

集合的名字+for回车

修改增强for中的变量,不会改变集合中原本的数据

 

List集合

List系列集合中的两个删除的方法
1.直接删除元素
2.通过索引进行删除 

2.删除元素
在调用方法的时候,如果方法出现了重载现象
优先调用,实参跟形参类型一致的那个方法

 

数据结构

ArrayList

size既是元素的个数,也是下次存入元素的位置

LInkedLIst