Java笔记梳理_java知识点

Java笔记梳理_java知识点本文档详细介绍了 Java 编程的基础知识 包括语言概述 基础语法 面向对象编程 常用类库和 API 的使用 如集合 异常处理 IO 流 多线程和 GUI

文章目录

DAY1-3

第一章 JAVA概述

计算机基础知识

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

JAVA语言概述

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

  • JRE(java运行环境)

    JVM + 核心类库

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

JDK下载与安装

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关键字
    静态方法只能访问静态的成员变量和静态的成员方法

制作帮助文档

DAY8-10

第五章面向对象[下]

继承

  • 通过extends关键字可以实现类与类的继承
    class 子类名 extends 父类名 {}
  • 单独的这个类称为父类,基类或者超类;这多个类可以称为子类或者派生类。
  • 子类只能继承父类所有非私有的成员(成员方法和成员变量)
  • 子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法
  • super:代表父类存储空间的标识 (可以理解为父类引用)
  • 静态随着类的加载而加载。
  • 执行流程:静态代码块 – 构造代码块 – 构造方法
  • 只要有子父关系,肯定先初始化父亲的数据,然后初始化子类的数据。
  • 方法重写:父类中私有方法不能被重写
  • 方法重写overload 和 方法重载override区别
  • final关键字
    修饰类,类不能被继承
    修饰变量,变量就变成了常量,只能被赋值一次
    修饰方法,方法不能被重写

多态

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

抽象类

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

接口

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

抽象类和接口的区别

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

包和导包

权限修饰符

 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工具使用

编程小号
上一篇 2024-12-07 17:18
下一篇 2024-12-07 17:14

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://sigusoft.com/bj/4714.html