37 Java基础 总结 完结篇 知识串讲 Java语言初识 基础语法 流程控制 方法 数组 面向对象 内部类 异常 常用类 集合框架 IO流 多线程 网络编程 GUI 注解

总结

Java语言初识

  • 我能不能学会这个语言?
  • 注册博客:27+
  • MarkDown语法
  • 简单的Dos命令
  • 计算机语言发展
  • Java的诞生
    • 1995
      • Java SE
      • Java ME
        • Android
      • Java EE
    • 2006
      • Hadoop
  • JDK
    • 开发者工具包
      • 配置环境变量
  • JRE
    • 运行环境

HelloWorld

  • public class HelloWord(){
        public static void main(String[] args){
            System.out.println("hello,word");
        }
    }
    
  • javac Hell.java

    • 生成class
  • java Hello

  • 编译型

  • 解释型语言

  • IDEA

基础语法

  • 注释

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

    • 关键字
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bjhlk9t2-1646500212447)(E:\aChihiro\MD文件夹\开发区\存档文档\image-20220304220052352.png)]
  • 数据类型

    • 基本数据类型

      • 整数

        • byte 1字节
        • short 2字节
        • int(默认) 4字节
        • long 8字节
        • 进制转换
          • 0b 二进制
          • 0x 十六进制
          • 0 八进制
      • 小数(浮点数)

        • float 4字节
        • double(默认) 8字节
        • BigDecimal 金融计算
      • 字符

        • char 2字节

        • ascii编码

        • UTF-8

        • Unicode

        • \u0000

          • \n 换行

          • \b 退格

          • \r 回车

          • \t 制表

          • \'
            
          • \" 转义
            
          • \\
            
      • 布尔值

        • boolean 1位
        • if(a)
    • 引用数据类型

      • 接口
      • 数组
  • 类型转换

    • 自动类型转换
      • 低转高
    • 强制类型转换
      • 高转低 (高)低
  • 变量和常量

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

    • 算术运算符

      • + - * / % ++ --
        
    • 赋值运算法 =

    • 关系运算符

      • > < >= <= == != instanceof
        
    • 逻辑运算符

      • && || !
        
    • 位运算符

      • & | ^ ~ >> << >>>
        
    • 条件运算符

      • ? :
        
    • 扩展运算符

      • += -= *= /=
        
  • 包机制

    • 域名倒写
    • 防止命名冲突
    • package
    • import 导入包
  • JavaDoc

    • JDK帮助文档

    • javadoc 直接生成文档

      • @author 作者

      • @Version 版本

      • @Since 最早支持的java版本

      • @param 参数

      • @return 返回值

      • @throws 抛出的异常

      • public class HelloWorld{
            /**
            @author chihiro
            @param args 命名参数
            @Since 1.0
            @throws 没有异常抛出
            */
            public static void main(Stirng[] args){
                System.out.println("hello")
            }
        }
        
        cmd - 
            javac HelloWord.java
            javadoc -encoding UTF-8 -charset UTF -8 HelloWorld.java
        

流程控制

  • Scanner
    • 用户交互System.in
  • 顺序结构
    • 程序默认的结构,自上而下的执行
  • 选择结构
    • if 单选择结构
    • if-else 双选择结构
    • if-else if-else 多选择结构
    • switch
      • jdk7支持了String类型
      • case穿透现象
      • default
  • 循环结构
    • while
      • 尽量避免死循环
    • do…while
    • for
      • for(int i=0;i<100;i++)
    • 九九乘法表
    • 增强for循环
  • break & continue
    • break:跳出循环
    • continue:终止当次循环
    • 带标签的continue
    • return:结束方法的运行

方法

  • 什么是方法!
  • 方法的定义
    • 修饰符 返回值 方法名(参数名){return 返回值;}
  • 方法调用
    • 类名.方法
    • 对象.方法
  • 方法重载
    • 名字相同,参数列表不同
  • 命名行传参
    • 给main方法传递参数
  • 可变长参数
    • 必须放在最后一个参数
  • 递归
    • 自己调用自己,给自己一个出口
    • 面试常问
    • 力扣(leetCode) 刷题

数组

  • 数组的定义

    • new int[5]
    • {1,2,3,4,5}
    • 必须是同一个类型
  • 数组的使用

    • 通过下标拿到值
    • ArrayIndexOutOfBounds
    • 增强for循环遍历
  • 二维数组

    • int[][]
      
  • Arrays工具类

  • 排序算法

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

面向对象

  • 什么是面向对象

  • 类与对象

    • 类是对象的抽象:模板Class
    • 对象是类的具体
  • 构造方法

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

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

    • 属性私有,get、set
  • 继承

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

    • 父类的引用指向子类的对象 Person person = new Student();

    • instanceof 关键字,如果匹配,可以进行类型之间转换

  • 修饰符

    • public
    • protected
    • private
    • static
    • abstract
    • final
  • 接口

    • interface
    • 约束,只能定义方法名
    • 子类实现接口,必须重写其中的方法
    • 只有一个方法的接口,叫做函数式接口,可以使用lambda表达式简化:方返回值 方法名(参数列表);
    • 接口比抽象类更抽象
    • 一个类可以实现多个接口

内部类

  • 局部内部类
  • 静态内部类
  • 匿名内部类*

异常

  • Throwable

    • Exception
      • 运行时异常
        • 1/0
        • ClassNotFound 类找不到
        • NullPoint 空指针异常
        • UnKownType 未知类型
        • 下标越界异常
      • 检查型异常
    • Error
      • AWT错误
      • JVM错误
        • StackOverFlow 栈溢出
        • OutOfMemory 内存溢出
  • 五个关键字

    • try{}
    • catch(){}
      • 先小后大
    • finally{}
    • throw
      • 手动抛出异常
    • throws
      • 方法抛出异常
  • 自定义异常

    • 继承Exception即可

常用类

  • Object类
    • hashcode()
    • toString()
    • clone()
    • getClass()
    • notify()
    • wait()
    • equals()
  • Math类
    • 常见的数学运算
  • Random类
    • 循环遍历随机数
      • UUID
  • file类
    • 创建文件
    • 查看文件
    • 修改文件
    • 删除文件
  • 包装类
    • 自动装箱和拆箱
  • Date类
    • Date
    • SimpleDateFormat
      • yyyy-MM-dd HH:mm:ss
    • Calender(建议使用)
  • String类
    • 不可变性 final
    • 操作量较少使用
  • StringBuffer
    • 可变长
      • append()
      • 多线程数据流较大使用
        • 效率低,安全
  • StringBuilder
    • 可变长
    • 单线程数据量较大使用
      • 效率高,不安全
  • String str = “a” + 1+2 ==> a12
  • String str = ‘a’ + 1 ==> b
  • String str = 1+2 +“a” ==>3a

集合框架

  • Collection

    • List(有序可重复)
      • ArrayList(常用)
        • add 添加
        • remove 删除
        • contains 包含
        • size 大小
      • LinkedList
        • 链表
        • getFirst()
        • getLast()
        • removeFirst()
        • addFirst()
      • Vector
      • Stack
    • Set(无序不可重复)
      • HashSet(常用)
      • TreeSet
    • Lterator:迭代器
  • Map

    • HashMap(重点,面试高频问点)
      • JDK1.7:数组+链表
      • JDK1.8:数组+链表+红黑树
    • TreeMap
  • Collections 工具类

  • 泛型 <> 约束,避免类型转换之间的问题

IO流

  • 字节流
    • 输出:OutputStream
    • 输入:InputStream
  • 字符流
    • 读入:Reader
    • 写出:Wirter
  • 节点流
    • CharArrayReader
    • CharArrayWriter
    • CharArrayInputStream
    • CharArrayOutPutStream
    • StringReader
    • StringWrit
    • pipe(管道流)
      • PipedOutputStream
    • File
  • 处理流
    • buffer
      • bufferInputStream
      • bufferOutputStream
      • bufferReader
      • bufferWriter
    • 序列化
      • 反序列化
        • Serializable
          • transient:透明的
    • data
      • DataInputStream
      • DataOutputStream
    • Object流
    • 转换流
      • InputStreamReader
      • OutputStreamWriter
    • Filter
      • FilterInputStream
      • FilterOutputStream
      • FilterReader
      • FilterWriter
    • print
      • PringWriter
      • PringStream

多线程

  • 进程和线程

  • run()

  • Start()

  • 线程创建的方式

    • Thread
      • start0:本地方法,Java无权调用,交给底层的C处理
        • private native void start0();
    • Runnable
      • 函数式接口
        • lambda
    • Callable
      • 可以有返回值
  • 静态代理

    • new Thread(Runnable).start();
  • Lambda表达式

    • 函数式编程
    • 避免内部类定义过多,导致代码不便阅读
    • new Thread(()->{ Systme.out.println(); }).start();
    • 手动推导一遍lambda表达式
  • 线程的状态

    • 新建状态
    • 就虚
    • 运行
    • 阻塞
    • 死亡
  • 常用的方法

    • sleep
    • join
    • yield:礼让
    • isLive:存活
    • start
    • setPriority:优先级
    • interrupt():中断线程
  • 线程同步

    • 多个对象操作同一个资源,并发

    • 前提:队列 + 锁

    • Synchronized

      • 同步方法(弊端:锁太多了,读的代码没有必要锁)
      • 同步代码块(常用!)
      • 第一个 进来拿到锁,后面就要排队了,直到这个人释放锁,后面人拿到锁才能进去
      • 死锁:两个人都抱着对方的锁
        • 互斥:一个资源只能被一个进程使用,不能被两个进程使用
        • 请求与保持:一个进程已经被卡住了,不能再对资源抱住不放
        • 不剥夺条件:进程已经获得这个资源,在没有使用完之前,不能强行拿走
        • 循环等待:很多个线程形成了一个环状的,我要你,你要我的情况
        • 死锁只要破坏以上其中一个条件,死锁就解开了
    • Lock(优先级高)

      • ReentrantLock
        • lock
        • trylock
        • unlock
  • 线程通信

    • 缓存区:消息队列
    • 标志位:红绿灯
    • wait(); 等待某些时间
    • notifyAll(); 唤醒所有的
  • 线程池(Pool)

    • 池化技术
    • 池的大小
    • 最大连接数
    • 保持时间

网络编程

  • IP
  • 端口
  • Socket编程
  • TCP
    • 三次握手
    • 四次挥手
    • 面向连接
  • UDP
    • 无连接
    • Packet
  • URL
  • 初识Tomcat
  • 聊天通信
  • 文件上传

GUI

  • AWT

    • Frame
    • 监听事件
      • 鼠标
      • 键盘
      • 窗口
      • 文本框
      • 动作事件
  • Swing

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

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

注解和反射

  • 注解
    • 原注解
    • 内置注解
    • 自定义注解
    • 反射读取注解
  • 反射
    • Class
      • newInstance();
    • 类加载机制
    • Filed
      • set(user,“千寻简”);
    • Method
      • invoke(user,“千寻简”);
      • 存在重载,也需要写参数的类型
    • Construct
      • newInstance();
      • 获取的时候需要,传递参数的class类型
    • 破坏私有关键字
      • setAccessible(true);
    • 性能分析
      • 注册 > 检车关闭的反射 > 默认的反射
    • 反射获得注解,泛型…
  • 单例模式的探究
  • Stream
  • ForkJoin
    • 效率对比
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千寻简

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值