• JavaSE 知识整合 (更新中……)


    JAVASE 学习回顾

    java历史

    java的诞生

    诞生于1995年

    2006年进军大数据领域 (Hadoop底层为java实现)

    java的三大市场攻略

    JavaSE -> java的基础

    JavaME -> 安卓市场

    JavaEE -> 企业及开发 (互联网应用领域)

    java运行与开发环境

    JDK (开发者工具包)

    配置环境变量

    找到我的电脑 -> 右键菜单 -> 属性 -> 高级系统设置 -> 系统环境变量

    -> 找到Path菜单 -> 编辑 -> 新建环境变量 -> 复制粘贴安装好的jdk

    路径-|| bin 添加到环境变量列

    JRE(运行时环境)

    HelloWorld

    code

    public class Hello{
        public static void main(Strng[] args){
            System.out.println("Hello world !");
        }
    }
    

    编译过程

    1. javac Hello.java -> 生成 class 字节码
    2. java Hello -> 运行文件

    语言类型区别

    编译型语言

    运行编译型语言是相对于解释型语言存在的,编译型语言的首先将源代码编译生成机器语言,再由机器运行机器码二进制)。像C/C++等都是编译型语言。

    解释型语言

    相对于编译型语言存在的,源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。比如Python/JavaScript / Perl /Shell等都是解释型语言。

    java 是解释型+编译型的语言

    java语言基础

    注释

    行内注释

    // code already annotation
    String hello = "Hello world!"; // 单行注释
    

    多行注释

    /*
    public class Hello{
        public static void main(Strng[] args){
            System.out.println("Hello world !");
        }
    }
    */
    /* 多行注释 */
    

    文档注释

    /**
    *@return null
    */
    public class Hello{
        public static void main(Strng[] args){
            System.out.println("Hello world !");
        }
    }
    

    javadoc -> 生成帮助文档命令

    标识符

    关键字

    关键字 作用含义
    private 一种访问控制方式 : 私用模式
    protected 一种访问控制方式 : 保护模式
    public 一种访问控制方式 : 公有模式
    abstract 表明或者成员方法具有抽象属性
    class 定义类
    extends 继承(表明一个类型是另一个类型的子类型)
    final 说明最终属性(表明一个不能派生出子类成员方法不能被覆盖,成员域的属性值不可以被二次改变)
    implements 一个类实现了一个给定的接口
    interface 定义接口
    native 声明一个方法是由计算机相关的语言(C/C++)实现的 java只是直接调用而已 native详解
    new 创建新实例对象
    static 表示(类、变量、方法)具有静态属性
    strictfp 声明FP_strict(单精度或双精度浮点数)遵循 IEEE 754算数规范
    synchronized 表示一段代码块成员方法需要同步执行 详解
    transient 表示不用序列化的成员域 详解
    volatile 表明2个,或者多个变量必须同步发生变化 详解
    break 提前跳出一个代码块
    continue 回到一个代码块的开始处
    return 从成员方法中返回数据
    do do-while 循环结构中
    while 循环结构中
    if 条件语句的引导词
    else 条件语句的引导词,表示第一个条件不成立时,所执行的事情
    for 循环结构的引导词
    instanceof 来验证一个对象是否是一个指定类的实例对象 详解
    switch 分支语句结构的引导语
    case switch语句中,的一个分支语句
    default switch语句中的默认分支
    try 异常处理 : 抛出异常程序块
    catch 异常处理 :捕获抛出的异常
    throw 异常处理 :在当前所定义的方法中所有需要抛出的异常
    import 表明要访问的类或包
    package
    boolean 八大数据类型之一 : 布尔类型
    byte 八大数据类型之一 : 字节类型
    char 八大数据类型之一 : 字符类型
    double 八大数据类型之一 : 双精度浮点数类型
    float 八大数据类型之一 : 单精度浮点类型
    int 八大数据类型之一 : 整数类型
    long 八大数据类型之一 : 长整数类型
    short 八大数据类型之一 : 短整数类型
    null
    true 正确 (1)
    false 错误 (0)
    super 表示当前对象的父类型的引用,或者父类的构造方法
    this 指当前实例对象的引用
    void 声明当前方法没有返回值
    goto 保留关键字 (无具体含义)
    const 保留关键字 (无具体含义)

    数据类型

    基本数据类型

    整数
    // 长度由小到大排列
    byte; 			// 字节数 : 1
    short;			// 字节数 : 2
    int; // 默认     // 字节数 : 4
    long;			// 字节数 : 8
    

    进制转换

    1. 2进制 : 0b
    2. 16进制: 0x
    3. 8进制 : 0
    浮点数
    // 长度由小到大排列
    float;			// 字节数 : 4
    double;/*默认*/  // 字节数 : 8  
    

    金融计算问题

    BigDecimal

    金融计算问题常用数据类型

    字符
    char;        // 字节数 : 2
    

    编码

    1. ASCII 编码 -> 对中文的存储量 : 1字节 (不推荐)
    2. Unicode 编码 -> 对中文的存储量 : 2字节 (不推荐)
    3. utf-8 编码 -> 对中文的存储量 : 3字节 (推荐)

    Windows默认编码为GBK编码,可能会导致数据库、Tomcat等配置乱码

    转义字符

    1. 'u0000'
    2. '' 退格
    3. ' ' 换行
    4. ' '
    5. ' ' 制表
    6. \
    布尔值
    boolean;    // 字节数 : 1位
    

    条件判断

    if(a) <==> if(a == true)

    引用数据类型

    接口

    数组

    类型转换

    自动类型转换

    低 - 转 - 高

    高低含义

    在数据类型中 : 以字节数为基准进行比较
    在类中 :以子类父类作为标准比较

    强制类型转换

    高 - 转 - 低

    低 = (低)高

    // 人类
    public class Person{
        public Person();
    }
    // 学生类
    public class Student extends Person{
        public Student(){
            super();
        }
    }
    public class Test{
        public static main(String[] args){
            // 实例化人对象
            Person person = new Person();
            // 实例化学生对象
            Student student = new Student();
            // 强制类型转化
            student = (Student)person;
        }
    }
    

    变量和常量

    变量

    type varname = value;

    作用域

    1. 类变量
    2. 实例变量
    3. 局部变量

    常量

    final MAX_A = 10;

    必须大写常量

    命名规范

    1. 见名知意
    2. 驼峰命名 (变量、方法)
    3. 类 :首字母大写 驼峰
    4. 常量 : 大写+下划线
    5. 不可用拼音命名

    运算符

    1. 算数运算符

      +  -  *  /  ++  --
      
    2. 赋值运算符

      =
      
    3. 关系运算符

      >  <  >=  <=  ==  !=  instanceof
      
    4. 逻辑运算符

      &&  ||  !
      
    5. 位运算符

      &; // 与
      |; // 或
      ^; // 异或
      <<; // 右移
      >>; // 左移
      
    6. 条件运算符

      ? : // 三目运算符
      
    7. 扩展运算符

      +=  -=  *=  /=
      

      包机制

      域名倒写
      package
      import
      防止命名冲突

      JavaDoc

      JDK 帮助文档

      1. @author 作者
      2. @Version 版本
      3. @Since 说明Java类最早支持到那个版本
      4. @Param 参数
      5. @Return 返回值
      6. @Throws 异常名称

      流程控制

      Scanner

      用户交互输入

      顺序结构

      程序的默认结构,自下而上的执行

      选择结构

      IF单选泽结构

      IF ELSE 双选择结构

      IF ELSE IF ELSE 多选择结构

      switch

      JDK 7 支持了 switch 的 String 类型的选择条件

      case 的穿透现象

      指不加break会继续执行的效果

      default

      循环结构

      while

      尽量避免死循环

      do-while

      for

      九九乘法表

      foreach

      增强for循环

      break

      跳出循环

      continue

      终止当前循环,执行下一次循环

      带标签的 continue

      goto

      return

      结束方法的运行

      方法

      什么是方法

      一堆语句块的组合

      方法的定义

      修饰符 返回值类型 方法名 (参数名) {

      return 返回值;

      }

      方法的调用

      类名.方法

      对象.方法

      方法重载

      名字相同 参数列表不同

      命令行传递参数

      // 给main方法传递参数
      // args 会接受其数值
      // 方便之进行jvm调优时使用
      public class Test {
          public static void main(String[] args) {
              for (int i = 0; i<args.length; i++){
                  System.out.println(args[i]);
              }
          }
      }
      

      可变长参数

      Java从JDK1.5以后,允许定义形参长度可变得参数从而允许为方法指定

      数量不确定的参数,一个方法只能有一个可变参数,且可变参数应为最后一个参数,调用时,如果同时能匹配固定参数和可变长参数的方法,会优先匹配固定参数方法,如果能同时和2个包含可变参数的方法想匹配,则编译会报错,因为编译器不知道该调用哪个方法

      case

      public class Test {
          public static void main(String[] args) {
              // 方法调用
              par("你好","世界","我来啦!");
          }
      
          // 参数长度可变的方法
          public static void par(String... strings) {
              for (String s : strings) {
                  System.out.print(s);
              }
          }
      }
      

      递归

      自己调用自己,给自己一个出口

      面试问题

      数组

      数组的定义

      int[] lee = new int[5];
      int[] jia = {1,2,3,3,4,5};
      // 数组内必须是同一个类型
      

      数组使用

      1. 通过下标拿到值

        常见异常

        ArrayIndexOutofBounds ----> 数组下标越界异常

      2. 遍历数组

        foreach 遍历

      3. 二维数组

        int[][];
        
      4. Arrays工具类

      5. 排序算法

        西部开源首页 ———— bilibili

        冒泡排序
        选择排序
        插入排序
        快速排序
        归并排序
        希尔排序
        堆排序
        基数排序

      面向对象

      什么是对象

      类与对象

      类是对象的抽象(模板Class),对象是类的具体

      构造方法

      构造的重载

      1. 默认无参构造
      2. 如果手动定义了有参构造需要手动添加一个无惨构造方法

      new 对象

      栈存放引用

    堆存放具体对象

    封装

    属性为私有的private属性,且设置get,set方法进行数据的访问

    继承

    extends 继承关键字

    Object 是所有类的爹

    子类会拥有父类的全部属性

    方法重写

    this

    super

    java是单继承,只能继承一个父类

    多态

    父类的引用指向子类的对象

    public class Test {
        // 人类
        public static class Person{
            public Person(){ }
        }
        // 学生类
        public static class Student extends Person{
            public Student(){ super(); }
        }
    
        public static void main(String[] args) {
            Person person = new Student();
        }
    }
    

    instanceof 关键字,如果匹配,直接进行类型的转换,实现动态性

    修饰符

    public

    protected

    private

    static

    final

    abstract

    接口

    inteface

    约束只能定义方法名

    子类实现接口后,必须重写其中的方法

    只有一个方法的接口叫做函数式接口,可以使用lambda表达式简化

    接口比抽象类更抽象

    接口可以实现多个
    // 接口的实现
    
    // play接口
    public interface Play {
        void start();
    }
    
    // test2类实现接口
    public class Test2 implements Play {
        @Override
        public void start() {
    
        }
    }
    
    // test3实现接口
    public class Test3 implements Play {
        @Override
        public void start() {
    
        }
    }
    

    内部类

    局部内部类

    静态内部类

    匿名内部类(重点)

    异常

    Throwable

    异常的和接口

    Exception

    Exception 捕获不到的异常,可以提升至 Throwable 捕获

    Exception 不可以捕获 Error 的异常

    运行时异常

    1/0 异常

    ClassNotFound

    NullPoint

    UnKownType

    下标越界异常

    ……

    检查型异常

    Error

    AWT错误
    JVM错误

    StackOverFLOW (堆栈溢出异常)

    OutOfMemory (内存溢出)

    五个关键字

    try {}

    异常代码块

    catch () {}

    先小后大原则

    先捕获小的异常,逐渐的向外捕获大的异常

    finally {}

    无论如何最终执行的方案

    throw

    手动抛出异常

    throws

    方法抛出异常

    自定义异常

    继承 Exception 类即可实现自定义异常

    常用类(JavaSE高级部分)

    Object类

    hashcode()
    toString()
    clone()
    getClass()
    notify()
    wait()
    equals()

    String类

    不可变性

    不可能被改变的 final

    public final class String{
        // code
        // …………
    }
    
    常见方法

    length()

    getBytes()

    indexOf()

    subString()

    split()

    trim()

    实例case
    String str = "a" + 1 + 2; // "a12"
    String str = 'a' + 1 + 2; // 100 -> 97 + 1 + 2
    String str = 1 + 2 + "a"; // "3a"
    
    操作数据量较少时使用

    StringBuffer类

    可变长的 append()方法
    多线程数据量较大
    处理数据效率低,但安全

    StringBuilder类

    可变长的 append()方法 安全
    单线程数据量较大
    处理数据效率高,但不安全

    Math类

    常见的数学运算

    Random类

    生成随机数
    UUID类

    File类

    创建文件
    查看文件
    修改文件
    删除文件

    包装类

    自动装箱
    自动拆箱

    Date类

    Date

    创建时间

    SimpleDateFormat

    yyyy-MM-dd HH:mm:ss

    Calendar

    推荐使用

    集合框架

    Collection
    List (有序的可以重复)

    ArrayList(常用)

    add()

    remove()

    contains()

    size()

    Iterator

    LinkedList (链表) (常用)

    getFirst()

    getLast()

    removeFirst()

    addFirst()

    Vector

    Stack

    Set (无序的不可以重复)

    HashSet (常用)

    TreeSet

    Map
    HashMap (超级常用) (用途及广) (高频面试考点)

    JDK1.7

    数组 + 链表

    JDK1.8

    数组 + 链表 + 红黑树

    TreeMap
    Collections

    工具类

    泛型

    约束,避免类型转换之间的问题

    IO流

    字节流

    输出

    OutPutStream

    输入

    InPutStream

    字符流

    读入

    Reader

    写出

    Writer

    处理流

    buffer

    bufferInPutStream

    bufferOutPutStream

    bufferReader

    bufferWriter

    data

    DataInputStream

    DataOutPutStream

    转换流

    InputStreamReader

    OutPutStreamWriter

    Filter

    filterInPutStream

    filterOutPutStream

    filterReader

    filterWriter

    print

    PrintWriter

    PrintStream

    节点流

    CharArrayReader

    CharArrayWriter

    CharArrayInPutStream

    **CharArrayOutPutStream **

  • 相关阅读:
    VUE 引入element ui 样式不生效解决
    Spark项目故障思路整理总结
    Spark-环境安装
    01.Kettle的安装-千亿级数仓环境搭建
    千亿级数仓day01-项目的简介
    Umeng项目day04
    Umengday12-统计指标
    Umengday11-azkaban调度
    Umengday09-hive自定义UDTF函数叉分函数
    Docker配置jdk1.8
  • 原文地址:https://www.cnblogs.com/JQ04/p/13699714.html
Copyright © 2020-2023  润新知