java基础笔记

JAVA基础笔记

多态

所谓多态,就是指一个引用变量在不同的情况下的多种表现状态。也可以理解为,多态是指通过指向父类的引用变量,来调用在不同子类中实现的方法。

多态的使用:

1.一般用于继承体系下,子类重写父类的某个方法,调用时根据具体的子类实现去调用子类的方法

2.向上转型:把子类对象直接赋给父类引用叫向上转型

//		使用多态方法创建对象:
//		能调用父类中的方法,子类重写了父类的方法,但不能调用子类特有的方法
		Pet dog2 = new Dog();	//类型转换,向上转型

泛型

泛型可以在很多地方进行定义,分为以下几类

泛型类

使用场景:当一个类中,某个变量的数据类型不确定时,就可以定义带有泛型的类

泛型方法

方法中形参类型不确定时

  1. 可以使用类名后面定义的泛型
  2. 在方法申明上定义自己的泛型

泛型接口

如何使用一个泛型接口?

  1. 实现类给出具体类型
  2. 实现类延续泛型,创建对象时再确定

Arrays

此类是一个操作数组的工具类,常见方法包括把数组拼接成一个字符串;二分查找法查找元素;拷贝数组;填充数组;按照默认或指定方法进行数组排序

数组排序:

    public static void main(String[] args) {
        Integer[] arr = {1, 3, 4, 2, 7, 8};
        //第二个参数是一个接口,所以我们在调用方法的时候需要传递这个接口的实现类对象,作为排序规则
        //注意只能给引用数据类型的数组进行排序
        //o1-o2升序排列,o2-o1降序排列,详细原理上网查
        Arrays.sort(arr, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 - o2;
            }
        });
        System.out.println(Arrays.toString(arr));
    }

匿名内部类

调用一个方法的时候,如果方法的形参是一个接口,那么我们要传递这个接口的实现类对象

public class test2 {
    public static void main(String[] args) {
        method(new Swim() {
            @Override
            public void swimming() {
                System.out.println("swim");
            }
        });


    }

    public static void method(Swim s){
        s.swimming();

    }

    interface Swim{
        public abstract void swimming();
    };
}
  1. 实现或继承了Swim类(也可以是接口)
  2. 重写了Swim类的方法
  3. 创建了这个匿名类的对象

Lambda表达式

函数式编程是一种思想特点,忽略面向对象的复杂语法,强调做什么,而不是谁去做

Lambda表达式是jdk8以后的一种新语法形式,Lambda表达式是一个匿名函数,可以使代码更简洁和灵活

() ->{

}

()对应着方法的形参,->为固定形式,{}对应着方法的方法体

注意点:

  • Lambda表达式可以用来简化匿名内部类的书写
  • Lambda表达式只能简化函数式接口的匿名内部类的书写
  • 函数式接口:有且仅有一个抽象方法的接口叫做函数式接口,接口上方可以加@Functionallnterface注解
public class test2 {
    public static void main(String[] args) {
        Integer[] arr = {1, 3, 4, 2, 7, 8};
        //第二个参数是一个接口,所以我们在调用方法的时候需要传递这个接口的实现类对象,作为排序规则
        //注意只能给引用数据类型的数组进行排序
        //o1-o2升序排列,o2-o1降序排列,详细原理上网查

        //lambda表达式
        Arrays.sort(arr, (Integer o1, Integer o2) -> {
                    return o1 - o2;
                }
        );
        System.out.println(Arrays.toString(arr));
    }
}

集合进阶

Java集合框架主要包括两种类型的容器,一种是单列集合(Collection),存储一个元素集合,另一种是双列集合(图,Map),存储键/值对映射。Collection接口又有三种子类型List,Set和Queue,再下面是一些抽象类,最后是具体实现类

List系列集合:添加的元素是有序(存和取的顺序是一样的),可重复,有索引

Set系列集合:添加的元素是无序的(存和取的顺序可能是不一样的),不重复,无索引

Collection:Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的

Collection遍历

迭代器遍历
Collection<String> col = new ArrayList<>();
col.add("aaa");
col.add("bbb");
Iterator<String> it = col.iterator();

//判断当前指向的位置是否有元素
while (it.hasNext()){
    String str = it.next(); //获取当前指向的元素并移动指针
    System.out.println(str);
}
增强for遍历
for (String s : coll) {
    System.out.println(s);
}

可以使用集合.for的方式快捷完成书写

Lambda表达式遍历

HashMap

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。

HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。

HashMap 是无序的,即不会记录插入的顺序。

@Test
public void testHashMap(){
    HashMap<String, Integer> m1 = new HashMap<>();  //键值对,前为键后为值
    m1.put("a",1);
    m1.put("b",2);
    System.out.println(m1.get("a"));
}

ArrayList

ArrayList<E> objectName =new ArrayList<>();  // 初始化,E为泛型,及存储数据的类型

Junit单元测试

步骤:

1.定义一个测试类(测试用例)

2.定义测试方法:可以独立运行

3.给方法加@Test

4.导入Junit依赖环境

一般使用断言(Assert)来处理结果

异常处理

数据流

Java正则表达式

在这里插入图片描述

注:字符类中如果只匹配单个字符,[]可省略

()表示分组 例如a(bc):表示出现a或出现bc

并发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值