视频地址

基础篇-9天
进阶篇-19天

基础篇

Day1

  • 人机交互方式

    • 图形化:速度慢,占内存多
    • 命令行:速度快,占内存小
  • shutdown -s -t 300 计算机在300s后关机,可以坑人

  • java是美国Sun公司(Stanford University Network)在1995年推出的计算机语言,或被Oracle公司偏高

  • Java之父:詹姆斯·高斯林

  • Java三大平台

    • Java SE
      • Java语言的(标准版),用于桌面开发应用,是其它两个版本的基础
      • 桌面应用:用户只要打开程序,程序的界面会让用户在最短时间内找到它们的需要的功能,同时主动带领用户完成他们的工作并得到最好的体验
      • 学习Java SE的目的:为今后要从事的Java EE开发,打基础
    • Java ME
      • java语言的(小型版),用于嵌入式消费类电子设备
    • Java EE
      • java语言的企业版,用于Web方向的网站开发
      • 网页:用于数据展示
      • 网站:网页+后台服务器
  • java跨平台(即跨多操作系统)

    • 原理:在需要运行Java的应用程序的操作系统上,安装一个与Java对应的Java虚拟机(JVM Java Virtual Machine)
  • 下载JDK

    • Java 8,11,17为:LTS(long-term suppor长期支持版)
    • 官网下载
  • JDK的组成JDK的组成

  • IDEA概述

    • 目前业界公认的最好的Java集成开发环境
    • IDEA项目结构介绍
      • project
      • moudle
      • package
      • class

Day2

  • 标识符命名规范

    • 小驼峰命名法
        1. 标识符是一个单词的时候,所有字母小写
        1. 标识符由多个单词组成的时候,从第二个单词开始,首字母大写
      • 该命名法多用于变量
    • 大驼峰命名法
        1. 标识符是一个单词的时候,首字母大写
        1. 标识符由多个单词组成的时候,每个单词的首字母大写
      • 该命名用于类的命名
  • 整数类型,首选int,定义long类型变量需要加入L的标识

    1. 基本得隐式转换
    • 把一个取值范围小的数值或变量,赋值给另一个取值范围更大的变量
    1. 运算中的隐式变换
    • 取值范围小的数据,和取值范围大得数据进行运算,小的会提升为大的再进行运算
    • byte,short,char,三种数据在运算时,会提升为int,再进行运算
  • 计算机中进制分类

    • 10进制:默认
    • 2进制 :0b开头
    • 8进制 :0开头
    • 16进制:0x开头

Day3

  • 方法(函数)
    • 方法调用内存
      • 方法没有被调用的时候,在方法区字节码文件中存放
      • 方法被调用时,需要进入到栈内存中运行
    • 方法重载
      • 在同一个类中,定义了多个同名的方法,但每个方法具有不同的参数类型或参数个数,这些同名的方法,就构成了重载关系

Day4

  • jdk14后,case后面允许编写多个数据,多个数据之间用逗号隔开
switch(week){
    case 1,2,3,4,5 -> System.out.println("");
    case 6,7 -> System.out.println("");
    default -> System.out.println();
}

Day5

  • 数组遍历快捷键:数组名.fori

  • 数组初始化

    • 动态初始化:初始化时只指定数组长度,由系统为数组分配初始值
    • 格式:数据类型[] 数组名 = new 数据类型[数组长度]
  • ctrl+alt+M:抽取方法的快捷键

  • Java内存分配

    • 方法去:字节码文件加载时进入的内存
    • 栈内存:方法运行时进入的内存
    • 堆内存:new出来的东西会在这块内存中开辟空间并产生地址
  • Java二维数组

    • 二维数组在存储一维数组时,具体存储的是一维数组的地址

Day6

讲习题,跳!

Day7

  • 面向对象:并不是一种技术,而是一种编程的指导思想

  • 面向对象程序设计(Object Oriented Programming),OOP

  • Java中想要创建对象,必须先要有类的存在

  • 类指的是一组相关属性和行为的集合,我们可以理解为是一张对象的设计图,一个类可以创建无限的对象

  • 类的组成

    • 属性:成员变量
      • 跟之前定义变量的格式一样,但位置需要放在方法外面
    • 行为:成员方法
      • 跟之前定义方法格式一样,但需要去掉static
  • 类的本质:对事物进行的描述

  • 打印对象名,可以看到对象的内存地址

    • 全类名:包名+类名
区别 成员变量 局部变量
类中位置不同 方法外 方法中
初始值不同 有默认初始值 没有,使用之前需要赋值
内存位置不同 堆内存 栈内存
生命周期不同 随着对象的创建而存在,随着对象的消失而消失 随着方法的调用而存在,随着方法的运行结束而结束
作用域 在自己所属的打括号中 在自己所属的打括号中
  • this关键字

    • 局部变量和成员变量重名时,使用就近原则
    • this关键字可以调用本类成员
    • this代表当前对象的引用
  • 构造方法

    • 初始化一个新建的对象,创建和构造对象的时候所调用的方法
    • 格式
        1. 方法名与类名相同
        1. 没有返回值类型
        1. 没有具体的返回值
    • 作用
        1. 本质作用:创建对象
        1. 结合执行时机:可以在创建对象的时候,给对象中的数据初始化
    • 注意事项
        1. 构造方法的创建:如果没有定义构造方法,系统会给出一个默认的无参的构造方法
        1. 构造方法的重载:构造方法也是方法,允许重载
        1. 推荐使用方式:无参和有参的构造方法均自己给出
  • 面向对象三大特征:封装,继承,多态

  • 封装:使用类设计对象时:将需要处理的数据,以及处理这些数据的方法,设计到对象中

    • 更好的维护数据
    • 使用者无需关心内部实现,只要知道如何使用即可
    • 封装的设计规范:合理隐藏,合理暴露
    • 权限修饰符
      • private:同一个类中
          1. 私有成员变量(保证数据安全性)
          1. 针对私有成员变量,提供setxxx,getxxx方法
      • (default):同一个类中,同一个包中
      • protected:同一个类中,同一个包中,不同包的子类中
      • public:任意位置访问
  • 标准JavaBean

      1. 这个类的成员变量都要私有,并提供对应的set和get方法
      1. 提供带参和无参的构造方法
    • JavaBean是一个实体类
  • 实体类:实体类只负责数据存取,而对数据的处理交由其它类来完成,实现数据和数据业务处理相分离

Day8

  • 常用API(Application Programming Interface:应用编程接口)

    • 使用JDK的API帮助文档
        1. 看索引位置搜索自己要查看的类
        1. 看包,目的是看是不是Java.lang包(核心包),核心包不需要编写导包代码(import)
        1. 看这个类的介绍:弄清楚类的作用
        1. 看这个类的构造方法:为了创造该类的对象
        1. 看这个类的成员方法:方法名,参数,返回值,介绍
  • String类

      1. String是java核心包,所有程序中的双引号字符串都是String这个类的对象
      1. 字符串一旦被创建,就不可以被更改,字符串内容不可变更,想要更改只能使用新的对象,做替换
      1. String字符串虽然不可以更改,但可以被共享
      • 字符串常量池:当我们使用双引号创建字符串对象时,会检查常量池中是否存在该数据:不存在则创建,否则复用
        • jdk7之前:StringTable在方法去,7之后在堆内存
    • 字符串的两种构造方式
        1. 双引号直接创建
        1. 通过构造方法
      • 方法区别:双引号直接创建会在String Table中进行维护,而通过构造方法时,new方法会在堆中新开辟出一块内存
String s=new String();//创建一个空白字符串
String s=new String(char[] chs);//根据传入的字符数组,创建字符串对象
String s=new String("abs");//根据传入的字符串来创建字符对象
  • String中的比较方法
public boolean equals(Object anObject) //将此字符串与指定字符串进行比较
public boolean equalsIgnoreCase(String anotherString) //忽略大小写进行字符串比较
  • String字符串的遍历
    • char[] toCharArray(); 将字符串转化为字符数组
    • char charAt(int index); 根据指定索引返回对应位置字符
    • int length(); 返回字符串的长度,这是一个方法
  • String的截取方法 类似C++的
    • String substring(int beginIndex);
    • String substring(int beginIndex,int endIndex); 这个方法左闭右开
  • String的替换方法
    • String replace(CharSequence target,CharSequence replacement)
      • 参数1为旧值,参数二为新值,自动将旧值替换为新值
    • String replaceAll(String regex,String replacement)
      • 使用replacement替换所有符合regex正则表达式的字符串
    • String replaceFirst(String regex,String replacement)
      • 使用replacement替换第一个符合regex正则表达式的字符串
  • String的拆分方法
    • Sting[] split(String regex) 根据给定正则表达式的匹配拆分字符串
    String s="192,168,1,1";
    String[] sArr=s.split(",");
    //如果要匹配字符 "." 需要转义字符 "//."
    sAA={"192","168","1","1"};
    
long time = System.currentTimeMillis();获取从19700101 0时0分到现在有多少毫秒  
  • StringBuilder的引入
    • 作用:提高字符串的操作效率
    • 介绍:
        1. 一个可变的字符序列
        1. StringBuilder是字符串缓冲区,可以理解为容器,这个容器可以存储任意数据,但其里面自动转为字符串
    • 构造方法
      • public StringBuilder(); 创建一个空白字符串缓冲区,初始容量16个字符
      • public StringBuilder(String str);
    • 常用成员方法
      • public StringBuilder append(任意类型): 添加数据返回对象自己
        • s.append(“a”).append(“b”):链式编程:调用的方法,返回的结果是对象,就可以继续向下调用方法
      • public StringBuilder reverse():将缓冲区中的内容进行反转
      • public int length()
      • public toString() 将缓冲区的内容以String类型返回
  • StringBuilder和StringBuffer
    • 方法都一样
    • 但是StringBuilder是线程不安全的,StringBuffer是线程安全的,因此StringBuilder效率高一些,而StringBuffer效率慢一些

day9

  • 集合基础

    • 集合是一种容器,装数据,类似数组
    • 数组的局限:数组定义并启动后,长度即固定
    • 但是集合大小可变
  • Array长度可变原理

      1. 当创建Array集合容器的时候,底层会存在一个长度为10个大小的空数组
      1. 随后扩容原数组1.5倍大小的新数组
      1. 将原数组拷贝到新数组种
      1. 将新元素添加到新数组
  • ArrayList

      1. 构造方法:public ArrayList() 创建一个空的集合容器
      1. 指定类型的构造方法 ArrayList<String> list = new ArrayList<>() <>是一个泛型
    • 常用方法

进阶篇

进阶篇转战看书 On java 8 了,感觉自己也不是很急,不如稳稳地看书系统地学习java,博客地址