Java学习

最新笔记:https://www.yuque.com/g/bwywb/yg8g4f/kxe24ckin6osw0it/collaborator/join?token=KmDDobfEb7i7EDGp&source=doc_collaborator# 《Java学习(补漏版)》

仓库地址:https://github.com/Shmily33/javaSEPro

0 IDEA使用

0.1 导入模块

导入已有的新模块时,选择路径下的.iml文件(.iml 文件通常不需要手动编辑,而是由 IDEA 自动生成和管理。它们以 XML 格式存储,并包含了项目和模块的各种配置信息,如源码目录、依赖库、输出路径等。)
ps:先把文件复制到自己的工程文件里去,再导入,这样不会关联原来路径
image.png
image.png

0.2 代码surround:ctrl+alt+T

image.png

0.3 多行光标选中:shift+alt+左键

0.4 自动.var生成:ctrl+alt+v

1 Java基础

image.png

1.1 标识符

概念、要求、建议

image.png

1.2 自动类型转换

image.png

1.3 逻辑运算符

image.png

1.4 运算符优先级

image.png

1.5 switch分支注意事项

image.png

1.6 数组

1.6.1 静态初识化与动态初识化

image.png
image.png

1.6.2 java内存分配

image.png

1.6.3 数组执行原理

image.png

1.6.4 多个变量指向同一个数组

image.png

1.7 方法

1.7.1 Java参数传递机制:值传递

基本类型

image.png
image.png

引用类型

image.png
image.png

1.7.2 方法的重载

概念及注意事项

image.png

1.8 面向对象基础

1.8.1 如何识别引用类型的变量–存对象的地址

image.png

1.8.2 类和对象的注意事项

image.png

1.8.3 this

概念

image.png

this的应用场景

image.png

1.8.4 构造器

概念、特点、应用场景及注意事项

写完有参构造器就没有无参构造器了,记得补上无参构造器
image.png

1.8.5 封装

image.png
image.png

1.8.6 JavaBean(实体类)

概念及应用场景–仅负责数据存取

image.png

1.8.7 成员变量与局部变量的区别

image.png

1.9 常用API

1.9.1 包

image.png
image.png

idea自动快速导包

image.png

1.9.2 String:字符串

封装方式

image.png

常用方法

image.png

注意事项

image.png
image.png
image.png
image.png

1.9.3 ArrayList:集合

image.pngimage.png

常用方法

image.png

从集合删元素tips

image.png

2 基础进阶

2.1 面向对象进阶

三大特征:封装、继承、多态

2.1.1 static

概念1-修饰成员变量

image.png
image.png

类变量应用场景

image.png

概念2-修饰成员方法

image.png

类方法应用场景

image.png
image.png

注意事项

image.png

应用知识

代码块

image.png

单例设计模式

设计模式–解决什么问题、怎么写

image.png

概念image.png

上述为饿汉式

image.png

懒汉式单例

image.png

2.1.2 继承

概念

image.png
image.png
好处:减少代码的编写,提高代码的复用性

权限修饰符

image.png

方法重写–申明不变,重新实现

概念及注意事项

image.png

子类中访问其他成员的特点

image.png

子类构造器

image.png
image.png

this()调用兄弟

image.png

this和super

image.png

2.1.3 多态

概念–编译看左边,运行看右边

image.png
image.png

好处

image.png

问题、解决及注意事项

image.png
image.png

instanceof

image.png

2.1.4 final

概念及注意

image.png

常量

image.png

2.1.5 抽象类

概念

image.png

注意事项、特点

image.png

应用场景、好处

image.png

模板方法设计模式

解决的问题

image.png

写法

image.png

final修饰

image.png

2.1.6 接口

概念

image.png

好处

image.png

示例

image.png
image.png

新方法

image.png

其他注意事项

image.png

2.1.7 内部类

概念

image.png

成员内部类(了解)

image.png
image.png

静态内部类(了解)

image.png

局部内部类(了解)

image.png

匿名内部类(重点)

image.png
image.png

2.1.8 枚举

概念及特点

image.png
image.png

枚举类实现单例设计模式

image.png

应用场景

image.png

2.1.9 泛型

概念

image.png

方法、通配符、上下限

image.png

问题、注意事项

image.png

2.2 常用API

2.2.1 Object类

image.png

克隆(拷贝)–深浅

image.png

2.2.2 Objects类

image.png

2.2.3 包装类

image.png
image.png

2.2.4 StringBuilder、StringBuffer

image.png

与String

image.png

与StringBuffer

image.png

2.2.5 Stringjoiner

image.png

2.2.6 Math

image.png

2.2.7 System

image.png

2.2.8 Runtime

image.png

2.2.9 BigDecimal

image.png
image.png

double a = 0.1
BigDecimal a1 = BigDecimal.valueOf(a);

2.2.10 jdk8之前的日期、时间

image.png
image.png
image.png
image.png
image.png

2.2.11 jdk8之后的日期、时间

image.png
image.png
image.png

LocalDate

image.png

2.2.12 Arrays

image.png
image.png
image.png

2.1.13 Lambda表达式

image.png
image.png
image.png
image.png

public class LambdaTest2 {
    public static void main(String[] args) {
        // 目标:使用Lambda简化函数式接口。
        double[] prices = {99.8, 128, 100};

//        Arrays.setAll(prices, new IntToDoubleFunction() {
//            @Override
//            public double applyAsDouble(int value) {
//                // value = 0  1  2
//                return prices[value] * 0.8;
//            }
//        });

//        Arrays.setAll(prices, (int value) -> {
//                return prices[value] * 0.8;
//        });

//        Arrays.setAll(prices, (value) -> {
//            return prices[value] * 0.8;
//        });

//        Arrays.setAll(prices, value -> {
//            return prices[value] * 0.8;
//        });

        Arrays.setAll(prices, value -> prices[value] * 0.8 );

        System.out.println(Arrays.toString(prices));
        System.out.println("----------------------------------------------------------");

        Student[] students = new Student[4];
        students[0] = new Student("蜘蛛精", 169.5, 23);
        students[1] = new Student("紫霞", 163.8, 26);
        students[2] = new Student("紫霞", 163.8, 26);
        students[3] = new Student("至尊宝", 167.5, 24);

//        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()); // 升序
//        });

//        Arrays.sort(students, ( o1,  o2) -> {
//            return Double.compare(o1.getHeight(), o2.getHeight()); // 升序
//        });

        Arrays.sort(students, ( o1,  o2) -> Double.compare(o1.getHeight(), o2.getHeight()));


        System.out.println(Arrays.toString(students));
    }
}

2.1.14 方法引用

image.png
image.png
image.png
image.png

2.3 正则表达式

image.png
image.png
image.png

package com.javase.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @Author: gs_wang
 * @Date: 2024/06/16/下午3:23
 * @Description: 使用正则表达式查找一段文本中的内容
 */
public class RegexTest {
    public static void main(String[] args) {
        String data = "来黑马程序员学习Java,\n" +
                "      电话:18666688888,18699997777\n" +
                "      或者联系邮箱:boniu@itcast.cn,\n" +
                "      座机电话:01036517895,010-98951256\n" +
                "      邮箱:bozai@itcast.cn,\n" +
                "      邮箱2:dlei0009@163.com,\n" +
                "      热线电话:400-618-9090 ,400-618-4000,4006184000,4006189090";
        // 1.定义爬取规则
        String regex = "(1[3-9]\\d{9})|(0\\d{2,7}-?[1-9]\\d{4,19})|" +
                "(\\w{2,}@(\\w{2,10}\\.){1,2})|(400-?\\d{3,7}-?\\d{3,7})";
        // 2.封装成Pattern对象
        Pattern pattern = Pattern.compile(regex);
        // 3.通过Pattern对象去获取查找内容的匹配器对象
        Matcher matcher = pattern.matcher(data);
        while (matcher.find()) {
            System.out.println(matcher.group());
        }

        String s2 = "我我我们喜喜喜喜喜喜欢欢欢欢欢欢欢欢欢编编编编编编编编编编编编程程程程程程程程程程程啊";
        /**
         * (.)一组: .匹配任意字符
         * \\1: 为这个组声明一个组号
         * + :声明必须是重复的字
         * $1:可以取到第一组代表的那个重复的字
         * 在正则表达式中,使用 \\1 表示引用第一个捕获组的内容,而 \\2 则表示引用第二个捕获组的内容,以此类推。在给定的代码中,只使用了一个捕获组 (.),因此只能使用 \\1 来引用它。
         * 捕获组是通过圆括号来创建的,每个圆括号内的内容都会被视为一个捕获组。在正则表达式替换的时候,可以使用这些捕获组的引用来进行替换操作。
         * 如果在正则表达式中有多个捕获组,并且需要引用它们,可以使用 \\1、\\2、\\3 等来分别引用第一、第二、第三个捕获组的内容
         */
        System.out.println(s2.replaceAll("(.)\\1+", "$1"));

    }
}

2.4 异常

异常的体系

image.png

处理异常

image.png

自定义异常

image.png

2.5 集合进阶

体系

image.png

2.5.1 Collection

image.png

常见方法

image.png

遍历方式

(1)迭代器

image.png
image.png

(2) 增强for

image.png

问题

image.png

(3)Lambda表达式

image.png

2.5.2 List

image.png

ArrayList

底层原理

image.png
image.png

应用场景

image.png

LinkedList

底层原理

image.png

常用方法

image.png

应用场景:设计队列、栈

2.5.3 Set

image.png

HashSet

前置知识:哈希值

image.png

去重复机制

image.png
image.png

LinkedHashSet

底层原理

image.png

TreeSet

特点、注意事项

image.png

自定义排序

image.png
image.png

2.5.4 总结(一)

image.png

2.5.5 可变参数

image.png

2.5.6 Collections

image.png
image.png

2.5.7 Map

集合体系

image.png

常用方法

image.png

遍历方式

(1)键找值

image.png

(2)键值对

image.png

(3)lambda

image.png

package com.javase.map;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.function.BiConsumer;

/**
 * @Author: gs_wang
 * @Date: 2024/06/17/下午4:55
 * @Description:
 */
public class MapTest {
    public static void main(String[] args) {
        Map<String, Double> map = new HashMap<>();
        map.put("1", 123.2);
        map.put("2", 1565.5);
        map.put("3", 445.1);

        // 1、键找值
        Set<String> keySet = map.keySet();
        for (String key : keySet) {
            System.out.println(key + "=>" + map.get(key));
        }
        // 2、键值对	-- 以他可以对map排序
        Set<Map.Entry<String, Double>> entries = map.entrySet();
        for (Map.Entry<String, Double> entry : entries) {
            System.out.println(entry.getKey() + "=>" + entry.getValue());
        }
        // 3、lambda
        map.forEach(new BiConsumer<String, Double>() {
            @Override
            public void accept(String k, Double v) { // 实际上还是以2方式实现
                System.out.println(k + "=>" + v); 
            }
        });
        map.forEach((k, v) -> { // 简写
            System.out.println(k + "=>" + v);
        });

    }
}

HahMap

image.png image.png

LinkedHashMap

image.png

TreeMap

image.png

2.5.8 Stream流

概念

image.png

使用步骤

image.png

常用方法

image.png

(1)获取Stream流

image.png

(2)Stream流常用方法

image.png

ps: 关于distinct去重

distinct去重复自定义类型的对象,希望内容一样就认为重复,需要重写hashCode、equals两个方法

(3) 终结方法

image.png
image.png

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bwywb_3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值