JavaSE学习总结

 

正文

JavaSE

一、Java语言初始

  1. 我能不能学会这个语言???
  2. 注册博客
  3. MarkDown语法
  4. 简单的Dos命令
  5. 计算机语言发展
  6. Java的诞生
    • 1995 JAVA SE、JAVA ME(Android)、JAVA EE
    • 2006 Hadoop
  7. JDK 开发者工具包 配置环境变量
  8. JRE 运行环境

二、HelloWorld

//生成class
public class Hello{
    public static void main(String[] args){
        System.out.println("Hello,World")
    }
}
  1. Java Hello
  2. 编译型
  3. 解释型语言
  4. 安装IDEA

三、基础语法

3.1 注释

  • 行内注释 //
  • 多行注释 /* */
  • 文档注释 /** */ javadoc生成帮助文档

3.2 标识符

  • 关键字

3.3 数据类型

  1. 基本数据类型
  • 整数
    • byte 占1字节
    • short 占2字节
    • int(默认) 占4字节
    • long 占8字节
    • 0b 二进制
    • 0x 十六进制
    • 0 八进制
  • 浮点数
    • float 占4字节
    • double(默认) 占8字节
    • BigDecimal (金融方面的有关计算)
  • 字符
    • char 占2字节
    • Ascii编码
    • utf-8
    • Unicode
    • 转义字符
      • \b 退格(BS) ,将当前位置移到前一列
      • \n 换行(LF) ,将当前位置移到下一行开头
      • \r 回车(CR) ,将当前位置移到本行开头
      • \t 水平制表(HT) (跳到下一个TAB位置)
      • ' 代表一个单引号(撇号)字符
      • " 代表一个双引号字符
      • \ 代表一个反斜线字符'''
  • 布尔值
    • boolean 占1位
    • if(a)
  1. 引用数据类型
  • 接口
  • 数组
  1. Java数据类型优先级:byte,short,char—> int —> long—> float —> double (排序由低到高)

3.4 类型转换

  1. 自动类型转换 ---->低转高
  2. 强制类型转换 ---->高转低 (低) 高 例如:(int)long

3.5 变量和常量

  1. type varName[=value];
  2. 作用域
    • 类变量
    • 实例变量
    • 局部变量
  3. 常量 final MAX_A = 10;
  4. 命名规范
    1. 见名知意
    2. 驼峰命名(变量,方法)
    3. 类,首字母大写然后再符合驼峰命名规则
    4. 常量:大写+下划线
    5. 不要使用拼音命名

3.6 运算符

  1. 算术运算符 + - * / % ++ --
  2. 赋值运算符 =
  3. 关系运算符 > < >= <= == != instanceof
  4. 逻辑运算符 && || !
  5. 位运算符 & | ^ ~ >> << >>>
  6. 条件运算符 ? :
  7. 扩展运算符 += -= *= /=

3.7 包机制

  1. 域名倒写
  2. 防止命名冲突
  3. package
  4. import

3.8 JavaDoc

  1. JDK帮助文档
  2. javadoc
    1. @author(作者)
    2. @Version(版本)
    3. @Since(Java类最早能支持到哪个版本)
    4. @param(参数)
    5. @return(返回值)
    6. @throw(抛出的异常)

四、流程控制

4.1 Scanner

​ 用户交互System.in

4.2 顺序结构

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

4.3 选择结构

  1. if单选择结构
  2. if - else 双选择结构
  3. if - else if - else 多选择结构
  4. switch
    • jdk支持了String类型
    • case穿透现象
    • break
    • default

4.4 循环结构

  1. while 尽量避免死循环
  2. do......while 一定会执行一次循环语句
  3. for for(int i = 0; i <100; i++)(九九乘法表)
  4. 增强for循环 for-each
  5. break & continue
    • break:跳出循环
    • continue:终止当次循环
    • 带标签continue
    • return:结束方法的运行

五、方法

  1. 什么是方法
  2. 方法的定义:修饰符 返回值 方法名 (参数名)
  3. 方法的调用
    1. 类名.方法
    2. 对象.方法
  4. 方法重载:名字相同,参数列表不同
  5. 命令行传参:给main方法传递参数
  6. 可变长参数:....... 必须放在最后一个参数
  7. 递归:自己调用自己,给自己一个出口

六、数组

  1. 数组的定义: new int[5] ; {1,2,3,4,5} (必须是同一个类型)
  2. 数组的使用
    • 通过下标拿到值
    • 数组下标越界:ArrayIndexoutofBounds
    • 增强for循环遍历
  3. 二维数组:int[][]
  4. Arrays工具类
  5. 排序算法
    1. 冒泡排序
    2. 选择排序
    3. 插入排序
    4. 快速排序
    5. 归并排序
    6. 希尔排序
    7. 堆排序
    8. 基数排序

七、面向对象

7.1 什么是面向对象

7.2 类与对象

类是对象的抽象:模板Class;对象是类的具体

7.3 构造方法:构造的重载

  • 默认的无参构造
  • 如果手动定义了有参构造就必须要手动再加一个无参构造
  • 单例模式,需要构造器私有

7.4 new对象

  • 栈存放引用
  • 堆存放具体的对象

7.5 封装:

属性私有,get 、set

7.6 继承

  • extends关键字
  • Object是所有类的父类
  • 子类拥有父类的全部特性
  • 方法重写
  • this
  • super
  • Java是单继承,只能继承一个父类

7.7 多态

  1. 父类的引用指向子类的对象 Person person = new Student();
  2. instanceof关键字,如果匹配,可以进行类型之间的转换

7.8 修饰符

  • public
  • protected
  • private
  • static
  • final
  • abstract

7.9 接口

  1. interface关键字
  2. 只是起到约束作用,只能定义方法名
  3. 子类实现接口,必须重写其中的方法
  4. 只有一个方法的接口叫做函数式接口,可以使用lambda表达式简化
  5. 接口比抽象类更抽象
  6. 一个类可以实现多个接口

7.10 内部类

  1. 局部内部类
  2. 静态内部类
  3. 匿名内部类(重点)

八、异常

8.1Throwable

  • Exception
    • 运行时异常:例如:1 / 0 ; ClassNotFound ; NullPoint;UnKownType;下标越界异常.........
    • 检查型异常
  • Error
    • AWT错误
    • JVM错误:栈溢出(StackOverFlow);Java内存溢出(OutOfMemory)

8.2五个关键字

  • try
  • catch(){}:捕获异常 先小后大
  • finally{}
  • throw:手动抛出异常
  • throws:方法抛出异常
  1. 自定义异常:继承Exception类即可

九、常用类

  1. Object类
    • hashcode()
    • toString()
    • clone()
    • getClass()
    • notify()
    • wait()
    • equals()
  2. Math类:常见的数学运算
  3. Random类:生成随机数 UUID
  4. File类
    • 创建文件
    • 查看文件
    • 修过文件
    • 删除文件
  5. 包装类:自动装箱和拆箱
  6. Date类
    • Date
    • SimeDateFormat:yyyy-MM-dd HH:mm:ss
    • Calender(建议使用)
  7. String类:不可变形 final (操作量较少)
  8. StringBuffer:可变长 append()(多线程数据量较大 效率低,安全)
  9. StringBuilder:可变长(单线程数据量较大 效率高,不安全)

十、集合框架

10.1 Collection

  • List (有序可重复)
    • ArrayList(常用)
      • add
      • remove
      • contains
      • size
    • LinkedList(常用)
      • getFirst()
      • getLast()
      • removeFirst()
      • addFirst()
      • ........
    • Vector
    • Stack
  • Set(无序不可重复)
    • HashSet(常用)
    • TreeSet

10.2 Map

  1. HashMap(重点,天天用)
    • JDK1.7:数组+链表
    • JDK1.8:hash表= 数组+链表+红黑树
  2. TreeMap

10.3 Collections工具类

10.4 泛型

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

十一、IO流

11.1 字节流

  1. 输出:OutputStream
  2. 输入:InputStream

11.2 字符流

  1. 写出:Writer
  2. 写入:Reader

11.3 节点流

  1. CharArrayReader ,Write,inputstream,outputstream
  2. StringReader,Writer
  3. pipe(管道流)PipedOutputStream,PipedInputStream
  4. File(文件流)
    • FileOutputStream
    • FileInputStream
    • FileWriter
    • FileReader

11.4 处理流

  1. buffer
    • BufferedOutputStream
    • BufferedInputStream
    • BufferedWriter
    • BufferedReader
  2. 序列化 反序列化 Serializable(标记性接口) transient(透明的)
  3. date
    • DateOutputStream
    • DateInputStream
  4. object流
    • ObjectOutputStream
    • ObjectInputStream
    • ObjectWriter
  5. 转换流
    • OutputStreamWriter
    • InputStreamReader
  6. Filter
    • FilterOutputStream
    • FilterInputStream
    • FilterWriter
    • FilterReader
  7. print
    • PrintStream
    • PrintWriter

十二、多进程

12.1 进程和线程

12.2 run(),Start();

12.3 线程创建的方式

  1. Thread start(),本地方法:Java无权调用,交给底层的c处理 private native void start();
  2. Runnable:函数式接口 lambda
  3. Callable:可以有返回值

12.4 静态代理

new Thread(Runnable).start();

12.5 Lambda表达式:

  • 函数式编程,避免内部类定义过多

  • new Thread(()->{
    System.out.println();
    }).start();

  • 手动推导一遍lambda表达式

12.6 线程状态

  • 新建状态
  • 就绪
  • 运行
  • 阻塞
  • 死亡

12.7 常用的方法

  • sleep
  • join
  • yield
  • isLive
  • start
  • setPriority
  • interrupt

12.8 线程同步

  • 多个对象操作同一个资源,并发
  • 队列 + 锁
  • Synchronized:
    • 同步方法(弊端:锁太多了)
    • 同步代码块(常用)
    • 第一个线程进来拿到锁,后面就要排队了,直到这个人释放锁,后面拿到锁才能进去
    • 死锁:两个人都抱着对方的锁,产生死锁的四个条件:①互斥;②请求与保持;③不剥夺条件;④循环等待条件
  • Lock(优先级高) ReentrantLock :lock;trylock;unlock

12.9 线程通信

  1. 缓冲区:消息队列
  2. 标志位:红绿灯
  3. Wait();等待某些时间
  4. notifyAll();唤醒所有

12.10 线程池(Pool)

  1. 池化技术
  2. 池的大小
  3. 最大连接数
  4. 保持时间
  5. ......

十三、网络编程

  1. IP
  2. 端口
  3. Socket编程
  4. TCP(三次握手、四次挥手、面向连接)
  5. UDP(无连接、Packet)
  6. URL
  7. 聊天通信
  8. 文件上传

十四、GUI(可选)

14.1 AWT

  • Frame
  • 监听事件(鼠标、键盘、窗口、动作事件)

14.2 Swing

  • 文本框
  • 标签
  • 按钮
  • 文本域
  • 面板
  • 布局方式
  • 关闭窗口
  • 列表

14.3 贪吃蛇

  • Timer
  • 键盘监听
  • 游戏帧的概念

十五、注解和反射

15.1 注解

  • 元注解
  • 内置注解
  • 自定义注解
  • 反射读取注解

15.2 反射

  • Class newInstance();
  • 类加载机制
  • Method
    • invoke(user3,"张三3");
    • 存在重载;也需要写参数的类型
  • Field set(user4,"张三4");
  • Construct
    • newInstance();
    • 获取的时候需要,传递参数的class类型
  • 破坏私有关键字 setAccessible(true);
  • 性能分析:正常创建的new>检测关闭的反射>默认的反射
  • 反射获得注解,泛型......

15.3 单例模式的探究

15.4 Stream

15.5 ForkJoin 效率对比

posted @   tuyin  阅读(51)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示