Java笔记梳理

本文档详细介绍了Java编程的基础知识,包括语言概述、基础语法、面向对象编程、常用类库和API的使用,如集合、异常处理、IO流、多线程和GUI。此外,还涵盖了环境变量配置、类与对象、方法、数组、异常处理、多线程、GUI设计等关键概念,是Java初学者和进阶者的重要参考资料。
摘要由CSDN通过智能技术生成

ref: https://github.com/DuGuQiuBai/Java

DAY1-3

第一章 JAVA概述

计算机基础知识

计算机
计算机硬件
计算机软件
软件开发
计算机语言
人机交互方式
键盘功能键及快捷键介绍
常用的DOS命令

JAVA语言概述

Java语言发展史
Java语言平台版本
Java语言特点: 跨平台性(JVM)
JRE与JDK

  • JRE(java运行环境)

    JVM + 核心类库

  • JDK(java开发工具包)
    JRE + java开发工具(编译工具javac.exe,打包工具jar.exe)

JDK下载与安装

HelloWorld案例

开发工具介绍
HelloWorld

class HelloWorld {
	public static void main(String [] args) {
		System.out.println(“Hello World”);
	}
}

程序解析

  • javac 源文件名.java
  • java HelloWorld

运行与工作原理
在这里插入图片描述

常见错误

环境变量配置

path环境变量配置的作用
path环境变量配置方式
classpath环境变量配置方式

第二章 JAVA基础语法[上]

关键字

标识符

注释

//; /* */; /** */

常量、进制和进制转换

  • 字符串常量, 整数常量, 小数常量,字符常量, 布尔常量, 空常量
  • 二进制(0b…),八进制(0…),十进制(默认),十六进制(0x…)
  • 原码、反码和补码
    原码: 最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
    正数:原码,反码,补码相同
    负数:原码(最高位为1),反码(除符号位外,逐位取反),补码(反码+1)

变量

使用变量前需进行初始化

数据类型和类型转换

byte(1字节),short(2字节),int(4字节),long(8字节);
float(4字节),double(8字节);
char(2字节),boolean(1字节)

byte b1=3,b2=4,b;
b=b1+b2; 	//编译失败:因为b1和b2是变量,默认使用int类型进行存储
b=3+4;			//会检查和是否超出byte类型的范围。如果没有可以赋值。

运算符

算术运算符

  • +(正号),-(负号),+,-,*,/,%,(前)++,(后)++,(前)–,(后)–,+(字符串相加)

赋值运算符

  • = , +=, -=, *=, /=, %=

比较运算符

  • ==, !=, >, < , >=, <=, instanceof(检查是否是类的对象)

逻辑运算符

  • &, |, ^, !, &&, ||
  • 单&和单|时,无论左边真或假,右边都进行运算;双&在左边为假时,右边不参与运算,返回false;双|在左边为真时,右边不参与运算,返回true。
  • 一般建议使用&&, ||

位运算符(直接对二进制进行运算)

  • <<, >>, >>>(无符号右移), &, |, ^, ~(反码)

三目运算符

// z: max(x, y)
int x=3,y=4,z;
z = (x>y)?x:y;

语句

顺序结构;选择结构:if, switch;循环结构: for,while, do-while

DAY4-5

第三章Java基础语法[下]

方法

修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) {
			函数体;
			return 返回值;
    }

重载:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。

数组

定义:

  • 格式1:数据类型[] 数组名;
  • 格式2:数据类型 数组名[];

初始化:使用前必须先初始化

  • 动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。eg. int[] arr = new int[3];
  • 静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。eg. int[] arr = new int[]{1,2,3}; or int[] arr = {1,2,3};

异常:数组索引越界,空指针异常
二维数组

  • 格式1 eg. int[][] arr = new int[3][2];
  • 格式2 eg. int[][] arr = new int[3][];
    arr[0] = new int[2];
    arr[1] = new int[3]
    arr[2] = new int[1];
  • 格式3 eg. int[][] arr = {{1,2,3},{4,6},{6}};

DAY6-7

第四章面向对象[上]

面向对象思想

封装(encapsulation)
继承(inheritance)
多态(polymorphism)

类与对象及其使用

类:是一组相关的属性(成员变量)和行为(成员方法)的集合
对象:是该类事物的具体体现

  • 如何使用
    创建对象:
    1 类名 对象名 = new 类名();
    2 对象名.成员变量
    3 对象名.成员方法

对象的内存图

成员变量和局部变量的区别

  • 在类中的位置不同
    成员变量 类中方法外
    局部变量 方法内或者方法声明上
  • 在内存中的位置不同
    成员变量 堆内存
    局部变量 栈内存
  • 生命周期不同
    成员变量 随着对象的存在而存在,随着对象的消失而消失
    局部变量 随着方法的调用而存在,随着方法的调用完毕而消失
  • 初始化值不同
    成员变量 有默认的初始化值
    局部变量 没有默认的初始化值,必须先定义,赋值,才能使用。

匿名对象

封装(private)

  • private最常见的应用:
    把成员变量用private修饰
    提供对应的getXxx()/setXxx()方法
  • 被private修饰的成员只在本类中才能访问
  • private仅仅是封装的一种体现,类和方法其实也是封装体

this关键字

this:代表所在类的对象引用
方法被哪个对象调用,this就代表那个对象
局部变量隐藏成员变量时,使用this

构造方法

    • 成员变量
    • 构造方法
      • 无参构造方法
      • 带参构造方法
    • 成员方法
      • getXxx()
      • setXxx()
  • 给成员变量赋值的方式
    • 无参构造方法+setXxx()
    • 带参构造方法

static关键字

  • 可以修饰成员变量和成员方法
  • static关键字特点
    随着类的加载而加载
    优先于对象存在
    被类的所有对象共享(判断是否使用静态关键字)
  • static关键字注意事项
    在静态方法中没有this关键字
    静态方法只能访问静态的成员变量和静态的成员方法

制作帮助文档

制作帮助文档(API)
javadoc -d 目录 -author -version ArrayTool.java

DAY8-10

第五章面向对象[下]

继承

  • 通过extends关键字可以实现类与类的继承
    class 子类名 extends 父类名 {}

  • 单独的这个类称为父类,基类或者超类;这多个类可以称为子类或者派生类。

  • 子类只能继承父类所有非私有的成员(成员方法和成员变量)

  • 子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法

  • super:代表父类存储空间的标识 (可以理解为父类引用)

  • 静态随着类的加载而加载。

  • 执行流程:静态代码块 – 构造代码块 – 构造方法

  • 只要有子父关系,肯定先初始化父亲的数据,然后初始化子类的数据。

  • 方法重写:父类中私有方法不能被重写

  • 方法重写overload 和 方法重载override区别

  • final关键字
    修饰类,类不能被继承
    修饰变量,变量就变成了常量,只能被赋值一次
    修饰方法,方法不能被重写

多态

成员访问特点
成员变量:编译看左边,运行看左边
成员方法:编译看左边,运行看右边
静态方法:编译看左边,运行看左边

抽象类

一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。
abstract class 类名 {}
public abstract void eat();
抽象类不能实例化,由具体的子类实例化。
抽象类的子类,要么是抽象类,要么重写抽象类中的所有抽象方法

接口

interface 接口名 {}
class 类名 implements 接口名 {}
接口不能实例化,具体的子类实例化。
接口的子类,要么是抽象类,要么重写接口中的所有抽象方法

抽象类和接口的区别

  • 成员区别
    抽象类 变量,常量;有抽象方法;抽象方法,非抽象方法
    接口 常量;抽象方法
  • 关系区别
    类与类 继承,单继承
    类与接口 实现,单实现,多实现
    接口与接口 继承,单继承,多继承
  • 设计理念区别
    抽象类 被继承体现的是:”is a”的关系。共性功能
    接口 被实现体现的是:”like a”的关系。扩展功能

包和导包

package, import, class 有没有顺序关系?有
package(唯一) -> import(多个) -> class(多个)

权限修饰符

				public 	protected 	默认 private
同一类中				✔️		✔️		✔️		✔️
同一包子类,其他类		✔️		✔️		✔️		
不同包子类			✔️		✔️
不同包其他类			✔️

内部类

把类定义在其他类的内部
内部类的访问特点:
内部类可以直接访问外部类的成员,包括私有。
外部类要访问内部类的成员,必须创建对象。

DAY11-14

第七章常用类

Object类/Scanner类

  • 子类构造方法默认访问父类的无参构造方法
  • object类的成员方法
    public int hashCode()
    public final Class getClass()
    public String toString()
    public boolean equals(Object obj)
    protected void finalize()
    protected Object clone()
  • == 和equals()的区别?
    ==
    基本类型:比较的是基本类型的值是否相同
    引用类型:比较的是引用类型的地址值是否相同
    equals()
    只能比较引用类型,默认比较的是对象的地址值是否相同。
    但是,可能被重写,一定要根据实际的情况来看。
  • Scanner类的成员方法
    hasNextXxx() 判断是否还有下一个输入项,其中Xxx可以是Int,Double等。如果需要判断是否包含下一个字符串,则可以省略Xxx
    nextXxx() 获取下一个输入项。
    eg. public int nextInt(); public String nextLine()

String类/StringBuffer类/StringBuilder类

  • 构造方法:
    public String():创建String对象
    public String(byte[] bytes):把字节数组转成字符串。
    public String(byte[] bytes,int index,int length):把字节数组中的一部分转成字符串
    public String(char[] value):把字符数组转成字符串
    public String(char[] value,int index,int count):把字符数组的一部分转成字符串
    public String(String original):把字符串转成字符串
  • A:判断功能
    boolean equals(Object obj):比较字符串的内容是否相同,严格区分大小写
    boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,不考虑大小写
    boolean contains(String str):判断是否包含指定的小串
    boolean startsWith(String str):判断是否以指定的字符串开头
    boolean endsWith(String str):判断是否以指定的字符串结尾
    boolean isEmpty():判断字符串的内容是否为空
  • B:获取功能
    int length():返回字符串的长度。字符的个数。
    char charAt(int index):返回字符串中指定位置的字符。
    int indexOf(int ch):返回指定字符在字符串中第一次出现的位置
    97,‘a’
    int indexOf(String str):返回指定字符串在字符串中第一次出现的位置
    int indexOf(int ch,int fromIndex):返回指定字符从指定位置开始在字符串中第一次出现的位置
    int indexOf(String str,int fromIndex):返回指定字符串从指定位置开始在字符串中第一次出现的位置
    String substring(int start):返回从指定位置开始到末尾的子串
    String substring(int start,int end):返回从指定位置开始到指定位置结束的子串
  • C:转换功能
    byte[] getBytes():把字符串转换为字节数组
    char[] toCharArray():把字符串转换为字符数组
    static String valueOf(char[] chs):把字符数组转成字符串
    static String valueOf(int i):把int类型的数据转成字符串
    把任意类型转换为字符串的方法。
    String toLowerCase():把字符串转小写
    String toUpperCase():把字符串转大写
    String concat(String str):字符串的连接
  • D:其他功能
    • a:替换功能
      String replace(char old,char new)
      String replace(String old,String new)
    • b:去除字符串两空格
      String trim()
    • c:按字典顺序比较两个字符串
      int compareTo(String str)
      int compareToIgnoreCase(String str)

数组高级和Arrays类

排序(冒泡排序,选择排序),查找(基本查找,二分查找)

基本类型包装类(Integer,Character)

正则表达式(Pattern,Matcher)

Math类/Random类/System类

BigInteger类/BigDecimal类

Date类/DateFormat类/Calendar类

DAY15-18

第八章API-集合

集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。

Collection

  • Collection接口成员方法
    • 添加功能
      add(Object obj)
      addAll(Collection c)
    • 移除功能
      remove(Object obj)
      removeAll(Collection c)
      clear()
    • 判断功能
      contains(Object obj)
      containsAll(Collection c)
      isEmpty()
    • 获取功能
      iterator()
      size()
    • 交集功能
      retainAll(Collection c)
    • 转数组功能
      toArray()
      Object[] toArray() 把集合转成数组,可以实现集合的遍历
      Iterator iterator() 迭代器,集合的专用遍历方式
  • Iterator: 依赖于集合而存在
  • Iterator 接口成员方法:boolean hasNext();E next()
List
  • 有序的 collection(也称为序列),列表通常允许重复的元素。
  • List接口成员方法
    add(int index,Object obj)
    remove(int index)
    get(int index)
    set(int index,Object obj)
    listIterator()
    List集合的特有遍历功能:通过size()和get()方法结合即可
  • ListIterator 接口的成员方法:boolean hasPrevious();E previous()
  • 常见数据结构:
    栈,队列,数组,链表,树,哈希表
  • ArrayList底层数据结构是数组,查询快,增删慢;线程不安全,效率高
  • Vector底层数据结构是数组,查询快,增删慢;线程安全,效率低
    • Vector类特有功能
      public void addElement(E obj)
      public E elementAt(int index)
      public Enumeration elements()
  • LinkedList底层数据结构是链表,查询慢,增删快;线程不安全,效率高
    • LinkedList类特有功能
      public void addFirst(E e)及addLast(E e)
      public E getFirst()及getLast()
      public E removeFirst()及public E removeLast()

泛型

是一种把明确数据类型的工作推迟到创建对象或者调用方法的时候采取明确的特殊的数据类型。
<数据类型>

增强for

for(元素的数据类型 变量名 : 数组或者Collection集合对象) {
使用变量名即可
}

静态导入

导入到了方法的级别,方法必须是静态的

可变参数

修饰符 返回值类型 方法名(形式参数数据类型… 变量) {}

Set

无序,唯一

  • HashSet集合的底层数据结构是哈希表
    首先判断对象的哈希值是否相同hashCode()
    ->如果不同,就直接添加到集合;如果相同,就继续执行equals()进行比较
    ->如果返回false,就直接添加到集合;如果返回true,说明元素重复,不添加。
  • LinkedHashSet底层数据结构是哈希表和链表。哈希表保证元素的唯一性,链表保证元素的有序。(存储顺序和取出顺序一致)
  • TreeSet底层数据结构是红黑树,平衡二叉树。
Map
  • Map和Collection的区别?
    Map双列集合,由键值对组成;键唯一,值可以重复;数据结构针对键有效;
    Collection单列集合,有单个元素组成;Set唯一,List可重复;数据结构针对元素有效。
  • Map接口成员方法
    • 添加功能
      put
    • 移除功能
      remove
      clear
    • 判断功能
      containsKey,containsValue
      isEmpty
    • 获取功能
      size
      get
      keySet
      values
      entrySet
  • HashMap
  • LinkedHashMap
    键有序,唯一
  • TreeMap

Collections

  • Collection和Collections的区别
    Collection是单例集合的顶层接口,定义了单例集合的共性功能;
    Collections是针对集合进行操作的工具类
  • Collections常见功能:排序,二分查找,最大值,反转,随机置换

DAY19-22

第九章API-IO

异常

  • Throwable
    • Error
    • Exception
      • RuntimeException
      • 非RuntimeException(编译时异常)
  • 处理方案
    try…catch…finally
    throws
  • throws和throw的区别?
    throws:方法声明上,后面跟的是类名,用逗号隔开,可以跟多个。表示可能有异常
    throw: 方法体中,后面跟的是对象名,只能跟一个。表示有一个异常产生

File

  • File的构造方法
File file = new File("d:\\demo\\a.txt");

File file = new File("d:\\demo","a.txt");

File file = new File("d:\\demo");
File file2 = new File(file,"a.txt");
  • File的成员方法
    • 创建功能
      CreateNewFile()
      mkdir()
      mkdirs()
    • 删除功能
      delete()
    • 重命名功能
      renameTo()
    • 判断功能
      isDirectory()
      isFile()
      exists()
      isHidden()
      canWrite()
      canRead()
    • 基本获取功能
      get三个
      lastModifiedTime
      length
    • 高级获取功能
      String[] filename = file.list()
      File[] fileArray = file.listFiles()
    • 文件名称过滤器

递归

字节流

  • 字节流写数据: OutputStream
    • FileOutputStream
    • 创建字节输出流对象 - > 调用写数据功能 - > 释放资源
    FileOutputStream fos = new FileOutputStream("fos.txt");
    fos.write("helloworld".getBytes());
    fos.close();	
    
  • 字节流读取数据:InputStream
    • FileInputStream
    • 创建字节输入流对象 - > 调用读数据功能 - > 释放资源
    FileInputStream fis = new FileInputStream("fis.txt");
    
    		//方式1:一次读取一个字节
    		int by = 0;
    		while((by=fis.read())!=-1) {
    			System.out.print((char)by);
    		}
    		
    
    		//方法2:一次读取一个字节数组,效率更高
    		byte[] bys = new byte[1024];
    		int len = 0;
    		while((len=fis.read(bys))!=-1) {
    			System.out.print(new String(bys,0,len));
    		}
    
    		fis.close();
    
  • 字节缓冲流
    BufferedInputStream
    BufferedOutputStream

转换流

  • 转换流本身是一个字符流:字符流 = 字节流 + 编码表
  • 编码表:字符和对应数据组成的一张表
  • 常见编码表:ASCII,UTF-8
  • FileWriter
  • FileReader

字符流

  • OutputStreamWriter字符输出流
    public void write(int c)
    public void write(char[] cbuf)
    public void write(char[] cbuf,int off,int len)
    public void write(String str)
    public void write(String str,int off,int len)
  • InputStreamReader字符输入流
    public int read()
    public int read(char[] cbuf)
  • 字符缓冲流
    BufferedWriter - void newLine()
    BufferedReader - String readLine()

其他流

  • 操作基本数据类型的流
    DataInputStream
    DataOutputStream
  • 内存操作流
    操作字节数组
    ByteArrayInputStream
    ByteArrayOutputStream
    操作字符数组
    CharArrayReader
    CharArrayWrite
    操作字符串
    StringReader
    StringWriter
  • 打印流
  • 标准输入输出流
    System.in的类型是InputStream.
    System.out的类型是PrintStream是OutputStream的子类FilterOutputStream 的子类.
  • 随机访问流
    RandomAccessFile类不属于流,是Object类的子类。但它融合了InputStream和OutputStream的功能。支持对随机访问文件的读取和写入
  • 合并流
    SequenceInputStream类可以将多个输入流串流在一起,合并为一个输入流,因此,该流也被称为合并流
  • 序列化流
    序列化流ObjectOutputStream
    反序列化流ObjectInputStream
  • Properties集合

DAY 23-24

第十章API-多线程

多线程概述

多线程实现方案

线程调度和线程控制

线程生命周期

线程同步

死锁

线程间通信

定时器的使用

DAY 25

第十一章API-GUI

GUI概述

awt和swing包概述

GUI继承体系图

GUI案例

布局管理器

事件监听机制和适配器模式

常见的组件事件

NetBeans工具介绍

NetBeans工具使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值