包装类

image.png
基本包装类型:

  • 基本包装类型是对象类型 - 其实就是在基本类型的外层套上一个壳子,把基本类型封装成了对象类型 - 目的是为了调用包装类型中的属性和方法。
  • java是一门oop的语言,八大基本类型是基本类型,在java中是bug的存在,因为八大基本类别类型使用非常的频繁,所有java保留了这个类型。
  • 由于java是纯面向对象语言,所以需要把基本类型包装成对象类型后才可以调用方法和属性 - 符合面向对象的语法。
  • 自动拆包装箱这个特性是jdk5.0推出的,包装类型是一直存在的!

汇总包装类的转换:

  • byte - Byte
  • short - Short
  • int - integer
  • long - Long
  • float - Float
  • double - Double
  • boolean - Boolean
  • char - Character

  • 每一个基本类型包装成为对象类型后就有了自己的方法和属性的调用!

    Object

    补充重点:

  • java中的顶级父类Object

  • 所以java中所有的类都是object的子类,直接或者间接继承object - 默认
  • object类中的方法:
    • toString()
    • equals()
    • hashcode()

正则表达式

?一次或零次
*0或无数
+1或无数

  1. //主图
  2. Pattern pPic = Pattern.compile("<img src=\"//img.alicdn.com/imgextra/(.+?)_60x60q90.jpg\"/>");
  3. Matcher mPic = pPic.matcher(html);
  4. ArrayList<String> picList = new ArrayList<String>();
  5. while (mPic.find()) {
  6. String picUrl = mPic.group(1);
  7. System.out.println(picUrl);
  8. picList.add(picUrl);
  9. }

迭代器

迭代器的使用:迭代器:就是一个用来遍历数据的工具在java中不止ArrayList一种集合,java中提供了众多的集合。
不同的容器(集合),提供了不同的数据存储
不同集合的特点不同: ArrayList:有序且重复的集合。
通过迭代器处理集合: 所有的集合通过获取元素的方法并不是唯一的,但是可以通过统一使用迭代器来处理
迭代器:Iterator - 接口
利用迭代器进行遍历的时候需要的步骤: 问 - 是否存在下一个元素 取 - 把存在的下一个元素取出来 删 - 可以处理

  1. public class IteratorDemo {
  2. public static void main(String[] args) {
  3. //创建集合对象
  4. ArrayList<Integer> list = new ArrayList<>();
  5. list.add(20);
  6. list.add(30);
  7. list.add(40);
  8. //利用迭代器处理
  9. //Iterator是一个接口,不能直接实例化,要通过集合去获取
  10. Iterator<Integer> iterator = list.iterator();
  11. //使用迭代器遍历
  12. while (iterator.hasNext()){//问
  13. //取
  14. Integer thisNumber = iterator.next();
  15. System.out.println(thisNumber);
  16. }
  17. }
  18. }

迭代器中的并发修改异常

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

public class CurrentModificationDemo {
    public static void main(String[] args) {
        //创建集合对象
        ArrayList<Integer> list = new ArrayList<>();
        list.add(20);
        list.add(30);
        list.add(40);
        list.add(50);

        //迭代器
        Iterator<Integer> iterator = list.iterator();

        //制造异常 - 做修改
        while(iterator.hasNext()){
            System.out.println(iterator.next()); //20
            if(iterator.next()==30){ //30
                list.add(90);
                break;
            }
        }

        System.out.println("====================================");

        //曲线救国 - 重新迭代集合
        Iterator<Integer> iterator2 = list.iterator();
        while (iterator2.hasNext()){
            System.out.println(iterator2.next());
        }
    }
}

image.png

ForEach - 增强for循环

foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。
可以解决迭代器(Iterator)并发修改异常。
**
格式:

for(int i: list){}

泛型

定义:类型的后面<变量> 例子:class
使用:创建对象时候确定类型
一般定义的泛型使用:E T K V