2021.1.11学习总结(大一)

一、配置java环境

  1. 安装jdk

    • 需要记住安装的路径!
  2. 配置环境变量

    • 我的电脑–右键–属性–高级系统设置

    • 环境变量–系统变量–JAVA_HOME(安装路径)

    • path:1.%JAVA_HOME%\bin (好像只需要有这个就可以)

      ​ 2.%JAVA_HOME%\jre\bin(作用未知!)

  3. 检验环境是否成功:

    • cmd–java -version

二、使用cmd运行java文件

  1. 新建一个java文件(后缀名.java)

  2. 在文件目录下使用cmd:

    • java java文件全名–产生一个java文件.class文件
    • javac java文件

三、java基础知识

3.1、注释

  • //
  • /* */
  • /** */

3.2、标识符

  • 定义:所有的组成部分(类名,变量名。。。等)都需要名字。

  • 所有的 标识符只能以字母、美元符号、或下划线开始

  • 不能使用关键字作为变量名或方法名

  • 大小写敏感

3.3、数据类型

  1. 基本类型
  • 整数类型
    • byte 1个字节
    • short 2个字节
    • int 4个字节
    • long 8个字节
  • 浮点类型
    • float 4个字节
    • double 8个字节
  • 字符类型
    • char 2个字节
  • boolean类型
    • true/false 1位
  1. 引用类型
  • 接口
  • 数组

3.4、类型转换

  1. 原因:java是强类型语言,进行运算时,需要类型转换

​ 低 ---------------------------------------------------------------------------> 高
​ byte,short,char–>int–>long–>float–>double

  1. 运算中,不同类型的数据先转化为同一类型,在进行运算。

    • 自动转换(低----高)
    • 强制转换(高----低):(类型名)变量名
  2. 注意点:不能对布尔值进行转换。

3.5、变量

  1. 变量声明是一条完整语句,必须以分号结束。

  2. 变量的作用域:

    • 类变量(静态变量):static修饰
    • 实例变量(成员变量):若没有初始化值,有默认值 0/0.0/null/false
    • 局部变量:定义在方法中,只在方法生效,必须声明和初始化值。

3.6、常量

  1. final 修饰,常量名一般全用大写命名

  2. 修饰符,不存在先后顺序

3.7、运算符

  1. 二元运算符:运算的结果为参与运算的最高类型
  2. 关系运算符:
  3. 一元运算符:a++ 先用后加 ++a 先加后用
  4. 逻辑运算符
  5. 位运算符:^(异或):相同为0,不同为1
  6. 位移运算符:<< *2 >>/2
  7. 复合运算符
  8. 三元运算符
  • 优先级:运算符优先级

3.8、Scanner对象

  1. 作用:通过Scanner类来获取用户(键盘)输入

    Scanner sc = new Scanner(System.in);
    
  2. 获取内容:

    • next():在读到有效数据之前,空格自动忽略。若再次读到空格,则将其当分隔符
    • nextLine():能够获取一行信息,包括空格!
  3. 判断用户是否输入了数字:sc.hasNextDouble()

    while (sc.hasNextDouble()){
             //将精度设置为最高,自动转换!
        double x = sc.nextDouble();
    }
    

3.9、流程控制

3.9.1、顺序结构

  • 它是任何一个算法都离不开的一种基本算法结构

3.9.2、选择结构

  • if的多种结构

  • switch多选择结构

    //switch()括号中的类型为:byte,short,char,int,String(Java SE7)
    //switch( ){case :} 类型必须一致
    switch (grade){
           
                case 'A':
                    System.out.println("优秀");
                    break; //可选(建议写上,只会执行当前case)
                case 'B':
                    System.out.println("良好");
                    break;
       			default:
            		System.out.println("不对");
    

3.9.3、循环结构

  • while循环

  • do…while循环

这两种循环的区别:

  1. while先判断后执行,do…while先执行后判断!

  2. do…while保证循环体至少会被执行一次!

  • for循环
for(初始化;布尔表达式;更新){
     
    //代码语句
}
  • 增强for循环(foreach循环)

    //主要用于数组或集合,没有下标
    for(声明语句:表达式){
           
        //代码句子
    }
    

break与continue使用区别:

  1. break:

    • 用于强行退出循环,不执行循环中剩余语句
  2. continue:

    • 跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定
  3. 标签:用在循环语句之前

3.10、方法

  • 方法的声明

  • 方法的调用:实际参数传递给形式参数,实际参数和形式参数的类型要对应!

    • 值传递
    • 引用传递
  • 方法重载

    • 方法名称必须相同
    • 参数列表必须不同(个数,类型,排列顺序)
    • 方法的返回类型可以相同也可以不相同
    • 仅仅返回类型不同不足以成为方法的重载
  • 命令行传参

  • 可变参数:在方法声明中,在指定参数类型后加一个省略号(···)。

    • 一个方法只能指定一个可变参数,他必须是方法的最后一个参数。

    • 任何普通的参数必须在他之前声明。

  • 递归:

    • 递归条件:什么时候需要调用自己
    • 递归出口:什么时候 不调用 自己

3.11、数组

  1. 定义:相同数据类型的有序集合

  2. 声明:

    • 动态初始化:包含默认初始化
    • 静态初始化(常用)
  3. 特点:

    • java中对象是在堆中,数组对象本身是在堆中的
    • 有length属性,可以获取长度
    • 合法区间:[0,length-1],越界抛出ArrayIndexOutOfBoundsException
  4. 二维数组的遍历

    • 2层for循环
  5. Arrays类

  6. 冒泡排序

  7. 稀疏数组

四、java面向对象

本质:以类的方式组织代码,以对象的方式封装数据

4.1、类与对象的关系

4.2、创建与初始化对象

4.3、构造器

4.4、封装

  • 属性私有,方法公共get/set

4.5、继承

  • super:只能在继承中使用,调用父类的构造方法,只出现在子类方法或构造器
  • this:代表本身这个类
  • 方法重写:需要有继承,方法与父类一致,方法体不同!
  • 静态方法:方法的调用只和定义的类型有关!
  • 非静态方法:子类重写了父类的方法,将执行子类的方法

4.6、多态

  • 原理:

    • 同一方法根据发送对象的不同采取多种不同的行为方式
    • 对象能执行哪些方法,主要看对象左边的类型,和右边关系不大!
    • 子类重写了父类的方法,将执行子类的方法
  • 特点:

    • 多态是方法的多态,属性没有多态
    • 继承关系,方法需要重写,父类引用指向子类对象!
  • instanceof关键字:x与y是否是父子关系

  • 作用:

    • 父类引用–>子类对象 (左引用–>右对象)

    • (右对象)子转父:向上转型,自动转换,可能会丢失一些方法

      Person person = new Student();
      
    • (右对象)父转子:向下转型,强制转换,(子类型)父对象

      Student stu = (Student) new Person();
      

4.7、static

  • 属性与方法推荐通过类调用

  • 静态代码块:只执行一次;

  • 执行顺序:静态代码块–>匿名代码块–>构造方法

  • 静态导入包:import static java.lang.Math.PI;

4.8、抽象类

  • 声明:public abstract class 类名{}
  • 抽象方法:只有方法头,没有方法体
  • 抽象类可以写普通方法
  • 抽象类不能new,但是其存在构造器,依靠子类
  • 继承抽象类的子类必须实现抽象类的所有抽象方法

4.9、接口

  • interface 声明接口
  • implements 实现接口 (需要实现接口中的所有方法

4.10、内部类

  • 匿名内部类

  • 用于声明时,即new的时候

  • 内部类的调用:

    • 通过外部类来实例化内部类

4.11、异常机制

  • 错误(Error) --jvm抛出

  • 异常(Exception)–程序逻辑

  • try

  • catch

  • fiinally

  • throw:主动抛出异常,在方法中使用

  • throws :在方法上抛出异常

4.12、自定义异常

  • 继承Exception类

    • 创建自定义异常类

    • 在方法中通过throw关键字抛出异常对象

    • 如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;

      否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作

    • 在出现异常方法的调用者中捕获并处理异常

  • toString():异常的打印信息

五、GUI编程

5.1、Awt

  • Frame

    • 设置可见性
    • 设置窗口大小
    • 设置背景颜色
    • 设置初始位置
    • 设置大小固定
  • 面板Panel

    • 设置布局
    • 设置坐标,相对于frame
    • 面板无法单独显示,必须添加到某个容器中
  • 布局管理器

    • 流式布局
    • 东西南北中
    • 表格布局 Grid
  • 事件监听

    • 窗口监听
    • TextField监听
    • 鼠标监听
    • 键盘监听

5.2、Swing

  • JFrame

  • this.getContentPane()

  • JDialog

  • JLabel

    • ICON
  • JPanel

  • JScrollPane

  • JButton

    • JRadioButton
    • JCheckBox
  • JComboBox

  • jList

  • JTextField

  • JPasswordField

  • 设置大小固定

  • 面板Panel

    • 设置布局
    • 设置坐标,相对于frame
    • 面板无法单独显示,必须添加到某个容器中
  • 布局管理器

    • 流式布局
    • 东西南北中
    • 表格布局 Grid
  • 事件监听

    • 窗口监听
    • TextField监听
    • 鼠标监听
    • 键盘监听

5.2、Swing

  • JFrame

  • this.getContentPane()

  • JDialog

  • JLabel

    • ICON
  • JPanel

  • JScrollPane

  • JButton

    • JRadioButton
    • JCheckBox
  • JComboBox

  • jList

  • JTextField

  • JPasswordField

  • JTextArea

你可能感兴趣的:(java)