![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java 基础学习
文章平均质量分 67
听完Java网课后,整理一遍笔记,把字数较多的笔记划分成一个一个的小问题,然后在上面补充内容。
Acc222222
这个作者很懒,什么都没留下…
展开
-
Java笔记整理 —— 类加载和反射API
类加载静态加载与动态加载静态加载:编译时加载需要的类,如果没有定义该类则报错,依赖性太强。动态加载:运行时加载需要的类,如果运行时不用该类,即使不存在该类也不会报错,降低了依赖性。 public static void main(String[] args) throws ... { //new Dog() 是静态加载,因此必须编写Dog类 Dog dog = new Dog(); //Person类是动态加载,因此没有编写Person类编译器也不原创 2022-01-07 15:34:36 · 589 阅读 · 0 评论 -
Java笔记整理 —— 反射、Class类
通过外部文件配置,在不修改源码情况下,来控制程序,也符合设计模式的ocp原则(不修改源码,且能扩容功能),这样的需求在框架里特别多。反射机制反射机制可以完成的功能反射相关类程序加载的三个阶段Class类对象在堆中,其对应生成的对象也在堆中。反射优化反射的优点与缺点优化方法xxx.setAccessible(true); //在反射调用方法时,取消访问检查Class类基本介绍public class Class01 ...原创 2022-01-07 15:34:16 · 504 阅读 · 1 评论 -
Java笔记整理 —— 其它流和Properties
标准输入输出流public final static InputStream in = null;public final static PrintStream out = null;System.in 编译类型:InputStream,运行类型:BufferedInputStream。表示的是标准输入 键盘System.out 编译类型:PrintStream,运行类型:PrintStream。 表示的是标准输入 显示器转换流默认情况下,读取文件是按照UTF-8编码,如果文.原创 2022-01-05 21:54:50 · 320 阅读 · 0 评论 -
Java笔记整理 —— Buffered和Object IO流
Buffered和Object IO流都属于包装流。BufferedReader和BufferedWriter注:1. readLine方法读取一行,读取完毕返回null。 2. BufferedReader的关闭只需要关闭包装流,节点流在包装流关闭后会自动关闭。注:new FileWriter(filePath,true); //表示以追加的方式写入new FileWriter(filePath); // 表示以覆盖的方式写入Bu...原创 2022-01-05 21:52:54 · 331 阅读 · 0 评论 -
Java笔记整理 —— File IO流
FileInputSteam和FileOutputStream原创 2022-01-05 21:31:11 · 220 阅读 · 0 评论 -
Java笔记整理 —— 文件、IO流原理与类图、节点流和包装流
IO流原理和类图原创 2022-01-05 21:18:52 · 232 阅读 · 0 评论 -
Java笔记整理 —— Synchronized、锁
Synchronized线程同步机制简介可以理解为某人进厕所后把门关上(上锁),然后出来的时候剩下的人才能进去。售票问题的解决class AA implements Runnable{ public static int TicketNums = 100; //共享票数 private boolean loop = true; public synchronized void sell(){ //把售票设为一个同步方法,这样每次只有一个线程访问 .原创 2022-01-05 20:37:16 · 245 阅读 · 0 评论 -
Java笔记整理 —— 线程基础知识
线程基础知识原创 2022-01-05 20:36:47 · 183 阅读 · 0 评论 -
Java笔记整理 —— 泛型
泛型原创 2022-01-05 20:03:21 · 110 阅读 · 0 评论 -
Java笔记整理 —— Collections
Collections方法(均为静态) public static void main(String[] args) { List a = new LinkedList(); a.add("Tom"); a.add("king"); a.add("milan"); Collections.reverse(a); System.out.println(a); //[milan, king,.原创 2022-01-04 21:06:15 · 279 阅读 · 0 评论 -
Java笔记整理 —— HashTable、TreeSet(TreeMap)
HashTable扩容底层有数组 Hashtable$Entry[],初始化大小为 11。临界值 threshold 为8 = 11 * 0.75。调用put方法里的addEntry(hash, key, value, index); 当满足if (count >= threshold) 扩容(rehash)int newCapacity = (oldCapacity << 1) + 1; //新容量计算方法threshold = (int)Math.mi...原创 2022-01-04 21:04:59 · 484 阅读 · 0 评论 -
Java笔记整理 —— HashMap集合
Map集合都是双列集合,存放 K-V接口特点注:1. Set本来也是 Key - Value 结构,但是它的Value一直都是PRESENT,因此可以看作Key。 2. 虽然key不允许重复,但是如果重复添加会导致覆盖。 3. 用 put 方法输入,用 get 方法指定key返回value。内部创建EntrySet k-v 最后是 HashMap$Node node = newNode(hash,key,value,null)。注意 k-...原创 2022-01-04 20:55:50 · 255 阅读 · 0 评论 -
Java笔记整理 —— Set接口
Set接口基本介绍 注:取出的顺序是固定的,不会变。遍历方法:迭代器,增强for,不能用for循环因为没有索引,也没有get方法。 用HashSet演示。HashSet底层是HashMap 使用 Hash + equals 方法 public HashSet() { map = new HashMap<>(); //创建一个HashMap }HashSet的add方法大概思路: 1. 先获取元素的哈希值(h...原创 2022-01-04 19:51:04 · 227 阅读 · 0 评论 -
Java笔记整理 —— ArrayList、Vector、LinkedList
List集合常用方法注意这是List集合独有的方法,并且一旦涉及到范围(比如subList方法),总是左闭右开的。List不能单独声明,需要用到List的实现子类。 List a = new ArrayList(); List b = new LinkedList(); List c = new Vector();注意事项1. ArrayList 可以加入多个null。2. ArrayList 是由数组来实现数据存储的。3.原创 2022-01-04 19:48:56 · 304 阅读 · 0 评论 -
Java笔记整理 —— Collection集合
CollectionCollection接口由两个重要的子接口 List和Set,实现子类都是单列集合。集合体系图Collection常用方法(用ArrayList演示)Collection常用方法对于Collection以及下属子类都可以用。1. add: 添加单个元素 ArrayList a = new ArrayList(); a.add(10); //注意放入的是Integer类,其余同理 a.add(true); .原创 2022-01-04 19:47:10 · 347 阅读 · 0 评论 -
Java笔记整理 —— 大数类、日期类
大数1. BigInteger适合保存比较大的整形2. BigDecinal适合保存精度更高的浮点型。大数不能用符号加减乘除,而需要调用方法,这里只拿BigDecinal进行演示: BigDecimal a = new BigDecimal("1.23213131391123131"); BigDecimal b = new BigDecimal("2.22222"); System.out.println(a.add(b)); //加原创 2022-01-04 19:44:01 · 262 阅读 · 0 评论 -
Java笔记整理 —— Math类、Arrays类、System类
Math类常用方法1. abs 绝对值System.out.println(Math.abs(-11)); //输出112. pow 求幂System.out.println(Math.pow(2,3)); //2的三次方3. ceil 向上取整 floor 向下取整 round 四舍五入(实际上是 floor(n + 0.5))System.out.println(Math.ceil(1.1));System.out.println(Math.floor(...原创 2022-01-04 19:38:07 · 342 阅读 · 0 评论 -
Java笔记整理 —— StringBuffer与StringBuilder
StringBuffer基本介绍StringBuffer的父类有value属性用于存放字符串,这个value不是final的。String与StringBufferStringBuffer里的value属性只有在内存不够需要另外开辟空间时,才会更改指向。构造器对于第四种方法,数组大小为 指定的字符串长度 + 16 。String与StringBuffer相互转换String转StringBuffer:// 第一种方式:直接调用构造器 S.原创 2022-01-04 19:35:36 · 258 阅读 · 0 评论 -
Java笔记整理 —— String类
String类串行化:可以在网络传输。基本信息1. String 对象用于保存字符串,也就是一组字符序列。2. 字符串常量就是双引号括起的字符序列,比如 "jack"。3. 字符串的字符使用Unicode字符编码,一个字符(不区分字母还是汉字)占两个字节。4. String 类有很多构造器。String s5 = new String(byte[] b);5. String是final类,不能被其他的类继承。6. String 有属性 private fina.原创 2022-01-04 19:34:01 · 1188 阅读 · 3 评论 -
Java笔记整理 —— 包装类
包装类(封装类型)针对八种基本定义相应的引用类型——包装类。有了类的特点,就可以调用类中的方法。装箱与拆箱 在JDK5之前,进行的是手动的装箱与拆箱。所谓装箱,就是进行 int -> Integer 的转换,而拆箱就是 Integer -> int 之间的转换(其它基本元素类似)。 int n1 = 100; Integer integer = new Integer(n1); Integer integer1 ...原创 2022-01-03 23:10:02 · 375 阅读 · 1 评论 -
Java笔记整理 —— 异常
如果没有使用异常处理机制,当抛出异常后,程序就退出了,下面的代码就不再执行。这样就导致一个不算致命的问题就会引起整个系统的崩溃,这使得程序的健壮性很差。因此,Java的设计者提供了一个异常处理机制 来解决这个问题。 如果程序员认为一段代码可能出现异常/问题,可以使用 try-catch 异常处理机制来解决,将该代码块选中 -> 快捷键 ctrl + alt + t -> 选中 try-catch。这样即使出现异常,程序也会继续执行。异常基本概念 ...原创 2022-01-03 23:05:44 · 204 阅读 · 0 评论 -
Java笔记整理 —— 注解
注解 注解(Annotation)也被称为元数据(Metadata),用于修饰解释 包、类、方法、属性、构造器、局部变量等数据信息。 和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息。 在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。而JavaEE中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替Java EE旧版中所遗留的繁冗代码和XML配置等。@Override 限定某个方法是重写父类方法,该注解...原创 2022-01-03 23:01:43 · 268 阅读 · 0 评论 -
Java笔记整理 —— 枚举
枚举自定义枚举类1. 构造器私有化,防止直接new。2. 本类内部创建一组固定的对象。3. 对外暴露对象(通过为对象添加 public final static 修饰符)。4. 可以提供get方法,但是不要提供set方法(防止属性被修改)。public class Season { private String name; private Season(String name){ //构造器私有化 this.name = name; }原创 2022-01-03 22:59:06 · 170 阅读 · 0 评论 -
Java笔记整理 —— 内部类
内部类(难点、重点)基本介绍 一个类的内部又完整的嵌套了另一个类结构。被嵌套的类称为内部类,嵌套内部类的类称为外部类,是我们类的第五大成员(五大成员:属性、方法、构造器、代码块、内部类)内部类的最大特点就是可以直接访问私有属性,并且可以体现类与类之间的包含关系。class Outer{ // 外部类 class Inner{ // 内部类 }}class Other{ // 外部其它类}内部类的分类...原创 2022-01-03 22:39:22 · 320 阅读 · 0 评论 -
Java笔记整理 —— 接口
接口基本介绍 接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,再根据具体情况把这些方法写出来。interface 接口名{ //属性 //方法(1.抽象方法 2.默认实现方法 3.静态方法)} class 类名 implements 接口名{ //自己的属性 //自己的方法 //必须实现的接口抽象方法}注:1. 在Jdk7.0 之前,接口里的所有方法都没有方法体,即都是抽象方法(abstract可省略)。2. Jd..原创 2022-01-03 22:36:28 · 249 阅读 · 0 评论 -
Java笔记整理 —— final、抽象类
finalfinal可以修饰类、属性、方法和局部变量。使用1. 当不希望类被继承时,可以用final修饰。2. 当不希望父类的某个方法被子类 重写 时,可以用final关键字修饰。3. 当不希望类的某个属性的值被修改,可以用final修饰。4. 当不希望某个局部变量被修饰,可以使用final修饰。 public void test(){ final int a = 10; a= 20; //报错 }注意事项1..原创 2022-01-03 22:35:17 · 811 阅读 · 0 评论 -
Java笔记整理 —— 断点调试
断点调试(debug)简介1. 断点调试是指在程序的某一行设置一个断点,调试时,程序运行到这一行就会停住,然后可以一步一步往下调试,调试过程中可以看各个变量当前的值,出错的话,调试到出错的代码行即显示错误,停下。进行分析从而找到这个Bug。2. 断点调试是程序员必须掌握的技能。3. 断点调试也能帮助我们查看Java底层源代码的执行过程,提高程序员的Java水平。注:在断点调试的过程中,是运行状态,是以对象的运行状态来执行的。快捷键F7(跳入方法内) F8(逐行执行代码)...原创 2022-01-03 22:31:00 · 625 阅读 · 0 评论 -
Java笔记整理 —— Object类、instanceof比较操作符
Object类== 运算符1. == 运算符既可以判断基本类型,又可以判断引用类型。2. 如果判断基本类型,那么判断的是 值是否相等。int i = 10;double d = 10.0;System.out.println(i==d)//true3. 如果判断引用类型,判断的是地址是否相等,即判定是不是同一个对象,如果希望判断内容是否相同,则需要重写。public class Test { public static void main(String[] args)原创 2022-01-03 22:30:44 · 832 阅读 · 0 评论 -
Java笔记整理 —— 单例设计模式
单例设计模式设计模式 设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式就像是经典的棋谱,不同的棋局,我们用不同的棋谱,免去我们自己再思考和摸索。单例设计模式 采取一定方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。 单例模式有两种方式:1. 饿汉式 2. 懒汉式饿汉式1. 构造器私有化——防止直接new出来一个对象。2. 类的内部创建一个静态对象。3...原创 2022-01-03 22:30:29 · 252 阅读 · 0 评论 -
Java笔记整理 —— 代码块
代码块基本介绍 代码块又称为初始化块,属于类中的成员(即类的一部分),类似于方法,将逻辑语句封装在方法体中,用{}包围起来。 但和方法不同,没有方法名,没有返回值,没有参数,只有方法体,而且不用通过对象或类显式调用,而是加载类时或创建对象时隐式调用。基本语法(static){...};1. static关键字和分号(;)可写可不写。2. 代码块分为两类,使用static修饰的叫做静态代码块,没有static修饰的叫做普通代码块/非静态代码块。3. 逻辑语句可以...原创 2022-01-02 20:06:29 · 368 阅读 · 0 评论 -
Java笔记整理 —— 静态变量、静态方法、main方法
静态变量简介 静态变量也叫类变量或静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。public static int a;类变量内存布局根据版本的不同,static变量的存储位置可能在堆中也可能在静态域。下面是两个相关的博客:Java static变量保存在哪?_晚晴小筑-CSDN博客_java static变量存储在哪里java中的静态变量和Class对象究竟存放在哪个...原创 2022-01-02 20:00:48 · 1308 阅读 · 0 评论 -
Java笔记整理 —— 动态绑定机制
Java的动态绑定机制1. 当调用对象方法的时候(不管是直接调用还是方法里调用),该方法会和该对象的内存地址(运行类型)绑定,根据运行类型进行调用,如果没有该方法,就启用继承机制。2. 当在方法中使用对象属性时,没有动态绑定机制,调用哪个类的方法,就用哪个类的属性,如果没有就启用继承机制。用一个例子解释清楚public class Computer { public int i = 10; public int sum(){ return getI() +原创 2022-01-02 17:57:54 · 104 阅读 · 0 评论 -
Java笔记整理 —— 多态、向上转型、向下转型
多态 对于解决某些问题,比如 假设需要创建一个方法给宠物喂食,那么用传统方法来说,给猫喂鱼,狗喂骨头等等,需要每一个都写一个方法,这样导致代码的复用性不高,而且不利于代码的维护,因此需要多态。 多态指 方法或对象具有多种形态。是面向对象的第三大特征,多态是建立在封装和继承基础之上的。方法的多态重写和重载就体现了多态。 // 方法重载体现了多态——在同类中方法有多种形态 public int sum(int num1,int num2){ ...原创 2022-01-02 17:42:55 · 364 阅读 · 2 评论 -
Java笔记整理 —— super关键字、方法重写/覆盖
super关键字基本介绍super代表父类的引用,用于访问父类的属性、方法、构造器。基本语法1. 访问父类的属性,但不能访问父类的private属性:super.属性名;2. 访问父类的方法,但不能访问父类的private方法:super.方法名(参数列表);3. 访问父类的构造器(前面介绍过):super(参数列表); 只能放在构造器的第一句,只能出现一句细节/好处1. super调用父类构造器,可以使分工明确。父类属性由父类初始化,子类的属性由子类初始化。2. 当子.原创 2022-01-02 17:35:17 · 397 阅读 · 0 评论 -
Java笔记整理 —— 继承
继承基本介绍 继承可以解决代码复用,让我们的编程更加靠近人类思维。当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过extends来声明继承父类即可。示意图基本语法class 子类 extends 父类{}1. 子类会自动拥有父类定义的属性和方法(当然受访问修饰符的限制)。2. 父类又叫超类,基类。3. 子类又叫派生类。4. 假设A继承B,B继承C,那么C也算A的..原创 2022-01-02 17:30:05 · 419 阅读 · 0 评论 -
Java笔记整理 —— 封装
封装简介封装就是把抽象出的数据(属性)和对数据的操作(方法)封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(方法),才能对数据进行操作。好处 1. 隐藏实现细节,使用者只需要调用即可。类似的,电视机也是一种封装,用户想要开机等操作,只需要在遥控器上按一下就可以了,不用知道电视机内部进行的复杂操作。2. 可以对要进行赋值的数据进行检验,保证安全合理。int age = 12000; //这就是没有封装的坏处,没有对赋值的数据进行检验封装步骤...原创 2022-01-02 17:27:15 · 217 阅读 · 0 评论 -
Java笔记整理 —— 面向对象编程、包、访问修饰符
运用数据抽象的思想编写代码(定义和使用数据类型,将数据类型的值封装在对象中)的方式称为面向对象编程。 数据类型指的是一组值和一组对值的操作的集合。对象是能够存储任意该数据类型的值的实体,或数据类型的实例。对象的三个主要特性 行为:可以对对象完成哪些操作,或者可以对对象应用哪些方法。同一个类的所有对象实例,由于支持相同的行为而具有家族式的相似性。 状态:描述当前状况的信息。对象状态的改变必须通过调用方法实现。 标识:每个对...原创 2022-01-02 17:15:58 · 215 阅读 · 0 评论 -
Java笔记整理 —— IDEA相关
IDEA安装 安装链接:JetBrains: Essential tools for software developers and teams根据系统下载安装包,修改安装路径,然后什么也不用选,安装好就可以了。更改字体 FILE——Settings——Editor——font——23新建项目1. 为了在合适的文件夹下新建文件,我们首先要找到文件夹(以JavaProject为例)可以在Module JDK处找到我们JDK的安装目录(找到根目录即可,不需要b...原创 2022-01-02 17:04:53 · 351 阅读 · 0 评论 -
Java笔记整理 —— 构造方法、对象创造流程、this指针
构造方法简介 构造方法又叫构造器。是类的一种特殊的方法,它的主要作用是完成对新对象的初始化,它有以下特点:1. 方法名和类名相同。 2. 没有返回值。 3. 在创建对象时,系统会自动调用该类的构造器完成对象的初始化。使用细节1. 一个类可以定义多个不同的构造器,即构造器重载,系统根据参数不同调用不同的构造器。2. 构造器名与类名相同,且没有返回值。3. 构造器是完成对象的初始化,并不是构造对象。4. 不能自己主动调用构造器,在创建对象时系统自动调用。5. 如果没有定义...原创 2022-01-02 17:01:48 · 216 阅读 · 0 评论 -
Java笔记整理 —— 方法调用机制与递归调用机制
方法调用机制Person p1 = new Person();int res = p1.getSum(10,20);System.out.println("值="+res);public int getSum(int num1,int num2){ int res = num1 + num2; return res;}1. 当程序执行到方法时,会在栈里单独开辟一个空间(这也是为什么swap无法使用的原因)。2. 当方法执行完毕,或者执行到return语句时,就会返原创 2021-11-29 14:39:58 · 231 阅读 · 0 评论