javaSE

javaSE

1.java基础

java应用场景

  • 嵌入式
  • 安卓
  • 网站后台程序
  • 大数据
  • 人工智能

java语言的特点

  • 简单易学
  • 安全
  • 面向对象
  • 开源
  • 跨平台

跨平台

  • 概念

    • 如果使用java语言开发一个程序,则该程序可以在任意一个平台上使用
  • 原理

    • jvm是java跨平台的核心;jvm将java语言翻译成当前操作系统可以理解的指令,当前操作系统根据这些指令来完成程序的执行

运行java程序

  • 编译时期

    • 把 .java文件(源文件)编译为 .class 文件(字节码文件) 【检测java基本语法】
  • 运行时期

    • 把 .class 文件进行运行得到结果 【检测程序的执行逻辑】

main方法的作用

  • 程序的入口
  • 可以让单独的类进行运行
  • main方法可以被jvm来调用

关键字(53个)

  • 概念

    • 已经被java定义了特殊含义的单词
  • 特点

    • 全部都是小写
  • 注意

    • 在开发工具中对于关键字都有特殊的标识
    • goto 和 const 是特殊的关键字,也成为保留字

标识符

  • 概念

    • 在给类、方法、变量、接口等起名字的字符序列
  • 组成规则

    • 英文大小写及各国常见文字
    • 数字
    • 特殊符号:$ _
  • 组成规范

    • 见名知意
    • 驼峰规则

注释

  • 概念

    • 解释说明程序,不会影响java程序的编译运行
  • 分类

    • 行注释

      • // 注释一行
    • 块注释

      • /* */ 可以连续注释多行
    • 文档注释

      • /** */ 可以提取成说明文档

进制

  • 概念

    • 计数时进位的机制
  • 分类

    • 二进制
    • 八进制
    • 十进制
    • 十六进制
  • 进制转换

  • 二进制单位

    • 二进制位:bit 比特位

    • Byte:字节

      • 1Byte = 8bit
  • 计算机中数据的表现形式

    • 计算机中存储数据和计算数据都是基于二进制来做的;
    • 目前计算机中字符文件、图片、音频、视频等这些数据,最终都要转成二进制存储在计算机上

字面值(直接量)

  • 概念

    • 在程序中可以直接使用的数据
  • 分类

    • 数值型字面值

      • 整数
      • 浮点数
    • 字符型字面值

      • 使用一对单引号引起来的一个字符
      • 单引号中不能为多个字符,也不能为空字符
      • 转义字符 格式:\字符
    • 字符串字面值

      • 使用一对双引号引起来
      • 双引号中可以是一个字符,也可以是多个字符或者空字符
    • 布尔值字面值

      • 布尔:判断逻辑结果
      • true:对的,正确的
      • false:错误的

引用

  • 概念

    • 可以通过一个名字来指向一个具体的数据值
  • 格式

    • 数据类型 引用名 = 初始化值;
  • 分类

    • 变量

      • 引用可以发生变化的量
      • 可以存储单个数据的容器
      • 数据类型 变量名 = 初始化值;
    • 常量

      • 引用不可以发生变化的量
      • final 数据类型 常量名 = 初始化值;

数据类型

  • 分类

    • 基本数据类型

      • 整型

        • byte

          • 1字节
        • short

          • 2字节
        • int

          • 4字节
        • long

          • 8字节
      • 浮点型

        • float

          • 4字节
        • double

          • 8字节
      • 字符型

        • char

          • 2字节
      • 布尔型

        • boolean

          • 1字节
    • 引用数据类型

      • 数组
      • 接口
    • 数据类型转换问题

      • 分类

        • 自动数据类型转换

          • 小转大:byte->short->int->long—>float—>double char->int->long—>float—>double
        • 强制数据类型转化

          • 大转小
      • 注意

        • 整型转浮点型,直接在整数后面补 .0
        • 字符型转整型,会根据码表对应的ASCLL值转换为int型
        • 浮点型转整型,小数部分直接舍去,存在精度损失
        • 布尔型无法通过强制数据类型转换
        • 当大的数据类型的值超过小的数据类型的范围时,从最低位开始拿对应位数的二进制

运算符

  • 概念

    • java中内置的表示特定运算规则的符号
  • 分类

    • 算术运算符

            • / % ++ –
    • 赋值运算符

      • = += -= *= /= %=
    • 关系运算符

      • < >= <= == !=

    • 逻辑运算符

      • & | ! ^ && ||
    • 三目运算符

      • 表达式?表达式1:表达式2
    • 位运算符

      • & | ~ ^ << >> >>>

流程控制语句

  • 概念

    • 控制程序执行的语句
  • 分类

    • 顺序结构

      • 最基本的从上到下,从左到右的常用结构
    • 分支结构

      • if判断语句、switch case选择语句
    • 循环结构

      • for循环、while循环、do while循环

跳转控制语句

  • break

    • 在switch语句中出现,用于结束语句,在循环中用于结束当前循环
  • continue

    • 在循环中跳过当次循环
  • return

    • 返回一个值

数组

  • 概念

    • 存储多个相同类型的数据元素的容器
  • 定义格式

    • 数据类型[] 数组名 = new 数据类型[元素个数/数组长度]
    • 数据类型[] 数组名 = new 数据类型[]{元素值1,元素值2,……}
    • 数据类型[] 数组名 = {元素值1,元素值2,……}
  • 数组应用

    • 遍历—依次输出数组元素

    • 最值—数组元素的最大值/最小值

    • 查找—给定查找数返回在数组中第一次出现的下标值

    • 排序—数组元素进行排序

      • 冒泡排序
      • 选择排序
    • 扩容—数组定义完成之后长度无法改变—数组之间的复制

  • 二维数组

    • 概念

      • 存储一维数组的数组
    • 定义格式

      • 数据类型[][] 数组名 = new 数据类型[二维数组长度/一维数组个数][每一个一维数组长度]
      • 数据类型[][] 数组名 = new 数据类型[二维数组长度/一维数组个数][]
      • 数据类型[][] 数组名 = {{元素值1,元素值2,……},{{元素值1,元素值2,……},……}

java内存

    • 存储变量,当存储内容使用完毕时立即清除,不会给存储的内容赋予系统默认初始值
    • 存储对象,当对象不再使用时会等某个时刻系统来进行回收,会对存储的内容赋予系统默认初始值
  • 方法区

  • 本地方法栈

  • 寄存器

方法

  • 概念

    • 把重复有效的代码进行抽取,抽取的形式就叫方法
  • 书写格式

    • 修饰符 返回值类型 方法名(参数列表){
      方法体;
      return 返回值;
      }
  • 返回值类型

    • 给定对应返回值类型来接受返回值,如果没有返回值用void表示
  • 方法名

    • 标识符
  • 参数列表

    • 由参数类型、参数个数、以及参数顺序来决定的
  • 方法体

    • 重复且有效的代码
  • return

    • 把方法的方法返回值进行返回
  • 注意

    • 方法只有被调用才执行
    • 两个明确:方法返回值类型、参数列表
    • return两个功能:结束方法;把返回值进行返回
    • 考虑参数所有取值情况都要提供对应的返回值情况
  • 重载方法

    • 概念

      • 当一个类中,方法名一直,参数列表不一致的方法
    • 调用重载方法时

      • 如果提供精确匹配方法就进行精确匹配
      • 如果没有提供精确匹配方法进行相对精确匹配
      • 如果提供多个精确匹配方法无法调用到具体的方法就会报错
      • 尽量提供精确匹配方法
  • 方法传值

    • 当实参是基本数据类型时,传递就是值得拷贝
    • 当实参是引用数据类型时,传递就是地址值的拷贝

2.面向对象

面向对象引入

  • 概念

    • 面向对象本质是一个编程范式(思考方式)
    • 面向过程:关注每一步代码实现的细节
    • 面向对象:先把代码的实现细节整合到对象上,只要找对对象就能获取对象身上所有的功能
  • 类与对象直接的关系

    • 针对一类对象进行抽取,把共有的特征抽取成了属性,把共有的行为抽取成了方法,把这一类对象抽取成了类。
    • 类就是对对象的概况
    • 对象就是类的具体实现
  • 构造方法

    • 与类同名,没有方法返回值类型
    • 用来构建对象
    • 有参构造,给对象属性进行初始化
    • 支持重载
    • 当类中没有定义任何形式的构造方法时,底层jvm就会默认添加无参构造。当类中定义了构造方法,底层就不会再提供无参构造
    • 类中至少含有一个构造方法
  • java中所有的非静态属性和非静态方法都要通过对象来调用

  • this

    • 关键字,代表当前类正在活动的对象
    • this(),this语句用于在同一个类中的构造方法里调用别的构造方法,要在首行使用
  • 构造代码块

    • 方法外内类定义{}
    • 用于初始化属性
    • 优先于任何形式的构造方法先执行
  • 局部代码块

    • 方法内定义{}
    • 可以控制变量的生命周期,提高内存的利用率
  • 成员变量与局部变量的区别

    • 位置

      • 成员变量:方法外类内
      • 局部变量:方法内/代码块内
    • 使用范围

      • 成员变量:整个类
      • 局部变量:整个方法/代码块
    • 内存

      • 成员变量:堆内存
      • 局部变量:栈内存
    • 生命周期

      • 成员变量:随着类的对象的创建而产生,随着对象的回收而消失
      • 局部变量:随着方法的调用/代码块的执行而出现,随着方法调用完毕/代码块执行完毕而消失

面向对象的特征

  • 封装

    • 体现形式—方法、属性私有化,提供公共的访问方式来保证可以进行正常的取值和赋值,提高数据的安全性
  • 继承

    • 概念

      • 当对个类中出现的重复的内容,把重复的内容方法新的类中,通过extends关键字让原来的类和新类产生的关联关系。
      • 原来的类称之为子类/派生类,新的类称之为父类/超类
      • 子类可以获取父类的部分信息
      • 【子类继承不了父类的私有化信息,构造方法以及构造代码块】
    • 继承方式

      • 类与类之间支持单继承
    • 重写(覆盖)

      • 当父子类中出现方法签名一致的方法
    • 重写的原则(两等两小一大)

      • 当父类的方法返回值类型是基本数据类型/void时,子类的方法返回值类型要和父类一致
      • 当父类的方法返回值类型是引用数据类型,子类的方法返回值类型要么和父类的方法返回值类型一致,要么是父类方法返回值类型的子类
      • 子类方法不能抛出比父类更大范围的编译时异常
      • 子类的方法访问权限修饰符要么和父类一致,要么比父类的方法访问权限修饰符大
    • super

      • 关键字,代表父类对象可以调用信息
      • super()—super语句,在子类构造方法里调用父类的构造方法,使用时要在首行
      • 每个子类构造方法里默认还有super无参语句来调用父类的无参构造,当父类没有提供无参构造,子类所有的构造方法需要手动添加super语句去调用父类对应形式的有参构造
      • 保证父类对象优先于子类对象先存在
      • 父子类执行顺序:父类构造代码块–>父类构造方法–>子类构造代码块–>子类构造方法
  • 多态

    • 概念

      • 在代码操作过程中呈现的多种形式

      • 编译时多态—在编译时期绑定代码

        • 体现形式—重载
      • 运行时多态—在运行时期绑定代码

        • 体现形式—重写、向上造型
    • 向上造型

      • 对象可以调用哪些方法看父类,具体方法执行看子类是否有重写
    • 解释重写原则

    • 优点

      • 统一参数类型
      • 解耦(降低耦合度)

static(静态)

  • 关键字,修饰符

  • 静态变量

    • 随着类的加载(方法区的静态常量池)而加载到静态区,与类同级,也叫类变量。
    • 可以通过类名.的形式来直接调用,也可以通过对象调用
    • 静态区会给静态变量赋予系统默认初始值
    • 类创建的所有对象都共享同一个静态变量
  • 静态方法

    • 随着类的加载而加载到静态区,与类同级,也叫类方法
    • 可以通过类名.的形式来直接调用,也可以通过对象调用
    • 静态区不会给静态方法赋予系统默认初始值
    • 当main方法被调用会加载到栈中执行
  • 静态代码块

    • static修饰的构造代码块
    • 给静态属性进行初始化
    • 静态代码块随着类的加载而加载一次(类只加载一次)
    • static修饰的信息都只加载一次
    • 父子类执行顺序—类级别(先父后子),对象级别(先父后子)
  • java中所有的静态信息只能直接使用静态信息,所有的非静态信息可以直接使用静态信息以及非静态信息

  • 总结

    • 静态方法里不可以定义静态变量

      • 静态方法只有被调用时才加载到栈中执行,里面的内容才能出现,但静态变量与类同级
    • 静态方法可以重载

    • 静态方法不可以重写

      • 重写与对象同级,静态方法与类同级,静态方法没有重写。
      • java中允许父子类中出现方法签名一致的两个静态方法(没有重写)以及两个非静态方法(有重写)

final(最终)

  • 关键字,修饰符

  • 最终值

    • 当final修饰基本数据类型时是值不能发生改变
    • 当final修饰引用数据类型时是地址值无法改变
    • 当final修饰成员变量时保证对象创建完成之前给值
    • 当final修饰静态变量(静态常量)时保证类加载完之前给值
  • 最终方法

    • 支持重载但不支持重写
  • 最终类

    • 不能有子类但是可以有父类

abstract(抽象)

  • 概念

    • 当所有子类对父类某个方法都进行不同程度的重写,那么此时方法里的方法体没有任何意义,所以可以把方法体去掉再加上abstract来修饰变成抽象方法,抽象方法所在的类需要变成抽象类
    • 抽象方法一定要被重写(为了避免调用到抽象方法)
    • 当普通类继承抽象类需要重写所有的抽象方法,如果不想重写所有的抽象方法,可以把普通类变成抽象类
  • 注意

    • abstract是关键字,修饰符 方法、类
    • 抽象类中不一定含有抽象方法,但是抽象方法所在的类一定是抽象类
    • 抽象类里可以定义属性和方法
    • 抽象类里可以定义构造方法,给属性进行初始化
    • 抽象类不能创建对象,没有对象
    • private/final/static三种修饰符都没有重写,所以不能修饰抽象方法
    • 宗旨就是延展类的继承结构

interface(接口)

  • 概念

    • 当抽象类中所有的方法都是抽象方法,那么就可以把抽象类转成接口使用
    • 接口本质不是类
    • 通过implements让类与接口直接产生关联关系—实现
    • 支持类与接口之间多实现,支持接口与接口之间是多继承
  • 注意

    • 实现类需要重写接口中所有的抽象方法,如果不想重写所有的抽象方法需要把类变成抽象类
    • 接口中所有的方法都是抽象方法(和版本有关系)
    • 接口不可以定义构造方法
    • 接口不可以创建对象
    • 接口可以定义属性并且默认被public static final共同修饰
    • 接口中的抽象方法默认被public abstract 共同修饰
    • 接口声明对象在编译期间可以接受所有类型对象的赋值,运行期间会检测类是否是接口的实现类
    • 宗旨是为了给实现类注入更多的功能
  • 优点

    • 模板
    • 约束

接口与抽象类的区别

  • 接口不是类
  • 接口里的方法都是抽象方法
  • 接口支持多实现多继承
  • 接口里不能定义构造方法
  • 接口里的属性默认被public static final共同修饰
  • 抽象类的目的是为了延展类继承结构,接口是为了注入更多的特性

内部类

  • 概念

    • 类/接口中再次定义类
  • 类里再次定义类

    • 方法内部类

      • 在方法内定义类
      • 可以定义所有的非静态信息以及静态常量
      • 可以进行正常的继承和实现
      • 不能被访问权限修饰符来修饰,可以被final以及abstract修饰
      • 可以获取外部类所有信息
      • 只能获取本方法里的常量信息
    • 成员内部类

      • 在成员位置定义类
      • 可以定义所有的非静态信息以及静态常量
      • 可以进行正常的继承和实现
      • 可以被访问权限修饰符以及abstract和final来修饰
      • 可以获取外部类所有信息
    • 静态内部类

      • 在成员位置定义被static修饰的类
      • 可以定义所有的非静态信息以及静态常量
      • 可以进行正常的继承和实现
      • 能被访问权限修饰符以及abstract和final修饰
      • 只能获取外部类的静态信息
    • 匿名内部类

      • 默认继承类/默认实现接口,重写抽象方法
      • 可以被继承的类或者接口具有匿名内部类形式
      • 只能使用一次
      • 使用场景—当参数传递
  • 接口里定义类以及内部接口都是被static默认修饰

  • 用法

    • package 声明包 声明当前类所在的位置 在首行且只能出现一次
    • import 导入包 把不在当前包位置的类导进来,不在首行且可以多次出现
  • 提供包

    • Java(提供源生包)

      • lang包

        • 当程序启动时会自动加载lang包下(核心类库)的内容,使用时不需要导包
      • util包

        • 工具包,提供大量可以操作对象和类的信息
      • io包

        • 数据传输
      • math包

        • 提供简单的数学运算
      • net包

        • 网络编程
      • nio包

        • 高并发
      • sql包

        • 操作数据库
      • time包

        • 提供时间和日期
    • Javax(提供扩展包)

    • Org(第三方厂商 Apache)

3.API

XMind - Trial Version

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值