Java巩固
文章平均质量分 72
这是对Java更进一步的知识点汇总,加深理解
给自己一杯热咖啡,让自己静下心来~
狗二蛋的幸福生活
我亦无他,唯手熟尔
展开
-
关于JDK1.8新特性中List.stream().filter()的坑点
之前原来的程序因为被同事新加了功能有些改动,结果测试告诉我原来的功能出现了Bug,找半天没找出来,后来发现问题出现在了stream.filter中。原创 2023-06-25 10:10:56 · 1988 阅读 · 1 评论 -
0.Java介绍(Java语言特点,什么是JDK、JRE、JVM,Java开发注意事项和细节说明,Java转义字符)
0.1.Java语言特点:跨平台性#mermaid-svg-mJcbH2oEdlCbmMBw .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-mJcbH2oEdlCbmMBw .label text{fill:#333}#mermaid-svg-mJcbH2oEdlCbmMBw .node rect,#merm原创 2021-10-31 10:56:30 · 7175 阅读 · 0 评论 -
1.Java之数据类型(Java数据类型各个字节,浮点数使用陷阱,字符编码表,基本数据类型转换细节,基本数据类型和String类型的转换)
1.1.概述每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(字节)。#mermaid-svg-WVVWQh38Ls0sv3WU .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-WVVWQh38Ls0sv3WU .label text{fill:#333}#mermaid-svg-WVVWQ原创 2021-10-31 11:14:36 · 137 阅读 · 0 评论 -
2.Java之算术运算符(double运算注意点,%-取模细讲,i++和++i的区别细讲)
2.1.double运算注意点System.out.println(10 / 4);java输出是2,即默认结果是int类型System.out.println(10.0 / 4);java输出是2.5,即默认结果为double类型所以在给double赋值时,要尤为注意:double d = 10 / 4;//输出结果为 10 / 4 = 2,2 => 2.0/*正确写法*/double d = 10.0 / 4;2.2.%-取模详讲%的本质是:...原创 2021-10-31 16:53:48 · 1387 阅读 · 0 评论 -
3.Java之逻辑运算符(&&和&基本规则,||和|基本规则,复合赋值运算符细节)
3.1.&&和&基本规则&& 短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高。& 逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低。开发中,经常使用短路与 &&,效率高3.2.|| 和 | 基本规则|| 短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高。| 逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低。开发中,经常原创 2021-10-31 21:14:41 · 392 阅读 · 0 评论 -
4.Java之进制与位运算(进制知识补充,原码、反码、补码超简短使用方法,>>、<< 和 >>> 运算规则)
4.1.进制知识补充二进制:以 0b 或 0B开头int n1 = 0b1010;十六进制:以 0x 或 0X 开头表示int n2 = 0x101014.2.原码、反码、补码使用方法二进制的最高位是符号位:0表示正数,1表示负数。正数的原码,反码,补码都一样负数的反码 = 它的原码符号位不变,其它位取反负数的补码 = 它的反码 + 1,负数的反码 = 负数的补码 - 10 的反码、补码都是0java没有无符号数,换言之,java中的数都是有符号的在计算机运算的时候原创 2021-11-01 20:10:25 · 116 阅读 · 0 评论 -
5.Java之数组原理(一维数组内存机制、值传递/值拷贝和引用传递/地址拷贝的区别、二维数组内存机制)
5.1.一维数组内存机制及注意点值传递/值拷贝 和 引用传递/地址拷贝 的区别:值传递/值拷贝:拷贝的是值,但是开辟的内存是不同的引用传递/地址拷贝:开辟了一个公共内存空间,而这个公共内存空间的地址被拷贝了,但实际都是指向该内存空间两个数组共用同一个内存空间,所以会互相关联new 出新的数组,两个数组分别占用不同内存,所以不会互相关联5.2.二维数组内存机制简而言之,就是二维数组变量名,存放的是一维数组空间地址,该一维数组内部原本存放值的空间改为存放另外一个一维数组空间地址,组合原创 2021-11-02 20:44:23 · 193 阅读 · 0 评论 -
6.Java之类方法与属性(jvm的内存对象存在形式,类的属性注意事项和细节,jvm的内存分析对象代码执行流程,类和对象的内存分配机制, jvm的内存方法的调用机制分析)
6.1.jvm的内存对象存在形式6.2.类的属性注意事项和细节属性的定义:访问修饰符 属性类型 属性名;访问修饰符:控制属性的访问范围属性的定义类型可以为任意类型,包含基本类型和引用类型属性如果不赋值,有默认值int 0short 0byte 0long 0float 0.0double 0.0char \u0000boolean falseString null6.3.jvm的内存分析对象代码执行流程与数组类似,是地址传递6.4.类和对象的内存分配机原创 2021-11-04 21:07:02 · 128 阅读 · 0 评论 -
7.Java之递归原理详解(递归调用原理,递归重要规则,深度理解递归与回溯,递归与回溯的区别)
7.1.递归调用原理所谓递归,即不断的自己调用自己的方法,每次在调用的时候,都开辟了一个独立的空间压入栈中,开始执行这个栈空间的代码(谁在栈顶谁先执行),而当代码执行完或者有返回的时候,这个空间便会销毁(出栈),而下面的空间就会开始执行后面的代码(在栈顶了,开始执行),直到也销毁,这个步骤称之为回溯7.2.递归重要规则执行一个方法时,就创建一个新的受保护的独立空间(栈空间)方法的局部变量是独立的,不会相互影响(即每次调用自己的方法开出新的空间,里面的局部变量独立)如果方法中使用的是引用类型原创 2021-11-05 20:13:58 · 1624 阅读 · 0 评论 -
8.Java之可变参数和作用域(可变参数概念,可变参数注意事项和使用细节,成员变量和局部变量,作用域的注意事项和细节使用)
8.1.可变参数基本概念Java允许将同一个类中多个同名同功能但参数个数不同的方法,封装成一个方法。基本语法访问修饰符 返回类型 方法名 (数据类型… 形参名) {…}例如/* 1.int... 表示接受的是可变参数,类型是int,即可以接受多个int 2.使用可变参数时,可以当做数组来使用 即 nums 可以当做数组 3.遍历nums求和即可*/public int sum(int... nums){ int res = 0; for(int i = 0; i < n原创 2021-11-07 13:55:31 · 371 阅读 · 0 评论 -
9.Java之访问修饰符(public、protected、默认、private四种访问修饰符的基本介绍,四种访问修饰符的访问范围,访问修饰符的使用注意事项)
9.1.基本介绍java提供四种访问控制修饰符号,用于控制方法和属性(成员变量)的访问权限(范围)公开级别:用public修饰,对外公开受保护级别:用protected修饰,对子类和同一个包中的类公开默认级别:没有修饰符号,向同一个包的类公开私有级别:用private修饰,只有类本身可以访问,不对外公开9.2.四种访问修饰符的访问范围访问级别访问控制修饰符本类同包子类(继承父类)不同包公开public✔✔✔✔受保护protected✔✔✔原创 2021-11-09 21:53:31 · 477 阅读 · 0 评论 -
10.Java之继承(继承的细节问题,继承的内存布局,访问对象属性和方法的继承机制,super的详细介绍及使用,super和this的比较)
10.1.继承的细节问题:子类继承了所有的属性和方法,非私有的属性和方法可以在子类直接访问,但是私有属性和方法不能在子类直接访问,要通过父类提供公共的方法去访问子类必须调用父类的构造器,完成父类的初始化当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用 super 去指定使用父类的哪个构造器完成对父类的初始化工作,否则,编译不会通过。父类的有参构造器存在情况下,若没声明无参构造器(默认构造器),则无参构造器会被原创 2021-11-12 16:04:37 · 337 阅读 · 0 评论 -
11.Java之多态(重写和重载的比较,什么是多态,多态的向上转型,多态的向下转型,Java的动态绑定机制)
11.1.重写和重载的比较名称发生范围方法名形参列表返回类型修饰符重载 (overload)本类必须一样类型,个数或者顺序至少有一个不同无要求无要求重写 (override)父子类必须一样相同子类重写的方法,返回类型和父类返回的类型一致,或者是其子类子类的方法不能缩小父类方法的访问范围11.2.多态的基本介绍方法或对象具有多种形态。是面向对象的第三大特征,多态是建立在封装和继承基础之上的。多态的前提是 两个对象(类)存在继承关系11.3.原创 2021-11-14 20:03:25 · 306 阅读 · 0 评论 -
12.Java之Object类详解(== 和 equals 的对比,hashCode 方法,toString 方法,finalize 方法)
12.1. == 和 equals 的对比== 是一个比较运算符既可以判断基本类型,也可以判断引用类型(判断引用的地址是否相同)如果判断基本类型,判断的是值是否相等。例如:int i = 10;double d = 10.0;如果判断引用类型,判断的是地址是否相等,即判定是不是同一个对象equals 是一个方法是Object 类中的方法,只能判断引用类型默认判断的是地址是否相等,子类中往往重写该方法,用于判断内容是否相等。例如:Integer,String12.2. hash原创 2021-11-15 20:33:56 · 174 阅读 · 0 评论 -
13.Java之类变量和类方法(main方法的深入理解)
13.1.类变量概念:类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。定义语法:访问修饰符 static 数据类型 变量名;[推荐]static 访问修饰符 数据类型 变量名;访问:类名 . 类变量名 [推荐]对象名 . 类变量名静态变量的访问修饰符的访问权限和范围 与 普通属性是一样的注意事项当我们需要让某个类的所有对象都共享一个变量时,就可以考虑使用类变原创 2021-11-16 15:26:18 · 445 阅读 · 0 评论 -
14.Java之代码块(静态代码块,普通代码块,代码块的调用顺序,代码块与构造器之间的调用顺序,代码块与构造器在继承关系中的调用顺序)
14.1.介绍相当于另外一种形式的构造器(对构造器的补充机制),可以做初始化的操作场景:如果多个构造器中都有重复的语句,可以抽取到初始化块中,提高代码的重用性原创 2021-11-17 15:26:53 · 513 阅读 · 0 评论 -
15.Java之单例设计模式(什么是单例模式,单例模式步骤,饿汉式,懒汉式,饿汉式与懒汉式区别)
15.1.单例模式的介绍单例即单个的实例所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法单例模式有两种方式:饿汉式 和 懒汉式15.2.单例模式步骤:构造器私有化 ----- 防止外部直接 new 一个对象,造成创建多个对象类的内部创建对象向外暴露一个静态的公共方法15.3.饿汉式public class GirlFriend { private String name; //在类的内部直接创原创 2021-11-19 09:48:54 · 87 阅读 · 0 评论 -
16.Java之final关键字(final的基本介绍,final使用注意事项和细节讨论)
16.1.基本介绍final 意思为最后的、最终的。可以用来修饰类、方法、属性和局部变量。被使用的需求场景:当不希望类被继承时,可以用final修饰当不希望父类的某个方法被子类覆盖/重写时,可以用final关键字修饰当不希望类的某个属性的值被修改,可以用final修饰当不希望某个局部变量被修改,可以使用final修饰16.2.final 使用注意事项和细节讨论final 修饰的属性又叫常量,一般用 XX_XX_XX 来命名final 修饰的属性在定义时,必须赋初值,并且以后不能再原创 2021-11-19 22:18:07 · 226 阅读 · 0 评论 -
17.Java之抽象类(什么是abstract,抽象类使用的注意事项和细节讨论,抽象类的设计模式例子)
17.1.抽象类的基本介绍当父类的一些方法不能确定时,可以用 abstract 关键字来修饰该方法,这个方法就是抽象方法,用 abstract 来修饰该类就是抽象类用 abstract 关键字来修饰一个类时,这个类就叫抽象类访问修饰符 abstract class 类名 {…}用 abstract 关键字来修饰一个方法时,这个方法就是抽象方法访问修饰符 abstract 返回类型 方法名(参数列表);抽象类的价值更多作用是在于设计,是设计者设计好后,让子类继承并实现抽象类()17.2.抽象原创 2021-11-21 13:29:44 · 372 阅读 · 0 评论 -
18.Java之接口(什么是interface,接口的注意事项和细节,实现接口与继承类的比较,接口与抽象类的比较)
18.1.基本介绍接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,在根据具体情况把这些方法写出来。18.2.语法(public 或者 默认) interface 接口名 {属性方法}1.在 jdk7.0 前,接口里的所有方法都没有方法体,即都是抽象方法2.在 jdk8.0 后,接口可以有静态方法,默认方法,也就是接口中可以有方法的具体实现class 类名 implements 接口 {自己属性;自己方法;必须实现的接口的抽象方法}18.3.接口的注意事项和细原创 2021-11-21 18:06:58 · 428 阅读 · 0 评论 -
19.Java之内部类(内部类的基本介绍,内部类的分类,局部内部类的使用,匿名内部类的使用,成员内部类的使用,静态内部类的使用)
19.1.基本介绍一个类的内部又完整的嵌套了另一个类的结构。被嵌套的类称为内部类,嵌套其他类的类称为外部类,是类的第五大成员。类的五大成员:属性、方法、构造器、代码块、内部类内部类最大的特点:就是可以直接访问私有属性,并且可以体现类与类之间的包含关系19.2.基本语法class Outer{ //外部类 class Inner{ //内部类 }}class Other{ //外部其它类}19.3.内部类的分类定义在外部类局部位置上(比如方法内):局部内部类(有类名)原创 2021-11-23 13:44:29 · 223 阅读 · 0 评论 -
20.Java之枚举(什么是enum,枚举的二种实现方式,自定义类实现枚举,enum关键字实现枚举,enum常用方法)
20.1.基本介绍枚举对应英文(enumeration,简写 enum)枚举是一组常量的集合可以这么理解:枚举属于一种特殊的类,里面只包含一组有限的特定的对象20.2.枚举的二种实现方式自定义类实现枚举使用 enum 关键字实现枚举20.3.自定义类实现枚举不需要提供setXxx方法,因为枚举对象值通常为只读对枚举对象/属性使用 final + static 共同修饰,实现底层优化枚举对象名通常使用全部大写,常量的命名规范枚举对象根据需要,也可以有多个属性public c原创 2021-11-23 21:24:30 · 688 阅读 · 0 评论 -
21.Java之注解Annotation(什么是注解,@Override、@Deprecated、@SuppressWarnings,元注解的基本介绍,元注解的种类)
21.1.注解的理解注解(Annotation)也被称为元数据(Metadata),用于修饰解释包、类、方法、属性、构造器、局部变量等数据信息和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。在JavaEE中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替java EE旧版本中所遗留的繁冗代码和XML配置等使用 Annotation 时要在其前面增加 @ 符号,并把该Annot原创 2021-11-25 21:59:21 · 438 阅读 · 0 评论 -
22.Java之异常处理(异常介绍,异常体系图一览,运行时异常,编译异常,try-catch方式处理异常,throws异常处理,自定义异常,throws 和 throw 的区别)
22.1.异常介绍Java语言中,将程序执行中发生的不正常情况称为 “异常” (开发过程中的语法错误和逻辑错误不是异常)执行过程中所发生的异常事件分为两大类:Error:Java虚拟机无法解决的严重问题。例如:JVM系统内部错误、资源耗尽等严重情况。比如:StackOverflowError [栈溢出] 和 OOM(out of memory) [内存不足] ,Error 是严重错误,程序会崩溃Exception:其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。例原创 2021-11-29 15:55:27 · 253 阅读 · 0 评论 -
23.Java之包装类(包装类的分类,装箱,拆箱)
23.1.包装类的分类针对八种基本数据类型相应的引用类型-包装类有了类的特点,就可以调用类中的方法基本数据类型包装类booleanBooleancharCharacterbyteByteshortShortintIntegerlongLongfloatFloatdoubleDouble23.2.包装类和基本数据的转换装箱:基本数据类型 -> 包装类型拆箱:包装类型 -> 基本数据类型jdk5原创 2021-12-02 22:11:13 · 434 阅读 · 0 评论 -
24.Java之String类(String类的细节,创建String对象的两种方式,实例理解,String.intern方法,字符串的特性,String类的常见方法)
24.1.String类的细节字符串的字符使用 Unicode字符编码,一个字符(不区分字母还是汉字)占两个字节String类常用构造器String s1 = new String();String s2 = new String(String original); 常量String s3 = new String(char[] a);String s4 = new String(char[] a,int startIndex,int count);String 是 final 类,不能被其原创 2021-12-06 15:58:17 · 294 阅读 · 0 评论 -
25.Java之StringBuffer类和StringBuilder类(基本介绍,String、StringBuffer和StringBuilder的比较)
25.1.StringBuffer基本介绍java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删,很多方法与String相同,但StringBuffer是可变长度的,是一个容器。#mermaid-svg-g8ohjb5ZiJ9qnPpp .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid原创 2021-12-06 21:58:03 · 249 阅读 · 0 评论 -
26.Java之Arrays类(sort排序,binarySearch查找,copyOf数组元素的复制,equals比较两个数组元素内容是否完全一致,asList()将一组值转换成 list
26.1.Arrays类常见方法Arrays里面包含了一系列静态方法,用于管理或操作数组(比如排序和搜索)toString() 返回数组的字符串形式Arrays.toString(arr)sort() 排序(自然排序和定制排序)Integer arr[] = {1,-1,8,0,89};// 自然排序-从小到大Arrays.sort(arr);// 定制排序-排序规则,多应用于类数组按某属性排序Arrays.sort(arr, new Comparator<Integer&原创 2021-12-30 22:50:54 · 653 阅读 · 0 评论 -
27.Java之BigInteger和BigDecimal(加、减、乘、除运算)
27.1 BigInteger 和 BigDecima 介绍BigInteger 适合保存比较大的整型BigDecimal 适合保存精度更高的浮点型(小数)27.2 BigInteger 应用BigInteger bigInteger1 = new BigInteger("2315456456456561515121212121115");BigInteger bigInteger2 = new BigInteger("1524154515415641564564564161515615615原创 2021-12-30 23:39:01 · 2493 阅读 · 0 评论 -
28.Java之日期类(Date类,SimpleDateFormat类, Calendar 类,LocalDateTime类,DateTimeFormatter 类)
28.1.一代目1. Date 类:精确到毫秒,代表特定的瞬间java.util包把1970年1月1日当做了时间原点,以毫秒值为单位2. SimpleDateFormat 类:格式和解析日期类SimpleDateFormat 格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化JDK8版本字母日期或时间元素示例y年1970;07Y周年[当这周跨年时,这周算下一年]2009;09M年中的月份Ju原创 2021-12-31 19:50:50 · 422 阅读 · 0 评论 -
29.Java之集合Collection(单列集合和双列集合,Collection 接口实现类的特点,Collection 接口常用方法,Collection接口遍历元素Iterator迭代器)
29.1.Collection 和 MapJava的集合类很多,主要分为两大类 重要CollectionMap29.2.单列集合 和 双列集合集合主要分为两组,单列集合(集合中的元素是单个值存放)和双列集合(集合中的元素是以键值对的形式存放)Collection 接口有两个重要的子接口 List Set ,他们的实现子类都是单列集合Map 接口的实现子类是双列集合,存放 Key-value29.3.Collection 接口实现类的特点Collection实现子类可以存放多个元素原创 2022-01-04 15:09:37 · 389 阅读 · 0 评论 -
30.Java之List集合类(List 接口常用方法、ArrayList 类、Vector 类、LinkedList 类)
30.1.List 接口基本介绍List 接口是 Collection 接口的子接口List 集合类中元素有序(即 添加顺序 和 取出顺序 一致,不是指元素值大小排列顺序)、且可重复List 集合中的每个元素都有其对应的顺序索引,即支持索引List 容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素30.2.List 接口常用方法List 集合里添加了一些根据索引来操作集合的方法void add(int index, Object ele):在 ind原创 2022-01-06 15:06:27 · 383 阅读 · 0 评论 -
31.Java之Set集合类(Set 接口基本介绍,HashSet,HashSet 底层机制说明,LinkedHashSet)
31.1 Set 接口基本介绍无序(添加和取出的顺序不一致),没有索引不允许重复元素,所以最多包含一个 null31.2 Set 接口的常用方法和 List 接口一样,Set 接口也是Collection 的子接口,因此,常用方法和Collection接口一样31.3 Set 接口的遍历方式可以使用迭代器增强 for不能使用 索引的方式来获取31.4 HashSetHashSet 实现了 Set 接口HashSet 实际上是 HashMappublic HashSet()原创 2022-01-20 23:20:51 · 507 阅读 · 0 评论 -
32.Java之集合Map(Map集合介绍,Map 接口和常用方法,Map 遍历方式)
32.1 Map集合介绍Map 与 Collection 并列存在,用于保存具有映射关系的数据:Key-ValueJDK8Map 中的 Key 和 value 可以是任何引用类型的数据,会封装到 HashMap$Node 对象中Map 中的 Key 不允许重复Map 中的 value 可以重复Map 的 Key 可以为 null,value 也可以为 null,注意 Key 为 null,只能有一个,value 为 null,可以多个常用 String 类作为 Map 的 KeyKey原创 2022-01-26 14:52:45 · 506 阅读 · 0 评论 -
33.Java之Map接口实现类(HashMap、HashTable、Properties、TreeSet 和 TreeMap基本介绍,HashMap 底层机制)
Map 接口的常用实现类:HashMap、Hashtable 和 Properties33.1 HashMap 基本介绍是 Map 接口使用频率最高的实现类是以 Key-value 的方式来存储数据(HashMap$Node类型)Key 不能重复,但是值可以重复,允许使用 Null 键和 Null 值如果添加相同的 Key,则会覆盖原来的 Key-value,等同于修改(Key不会替换,value会替换)与 HashSet 一样,不保证映射的顺序(即添加顺序与输出顺序不一样),因为底层是以原创 2022-01-26 20:02:32 · 722 阅读 · 0 评论 -
34.Java之集合类总结(集合类的选择,Collections工具类介绍,Collections工具类常用方法)
34.1 集合类的选择在开发中,选择什么集合实现类,主要取决于 业务操作特点,然后根据集合实现类特性进行选择先判断存储的类型(一组对象[单列]或一组键值对[双列])一组对象[单列]:Collection接口允许重复:List增删多:LinkedList(底层维护了一个双向链表)改查多:ArrayList(底层维护 Object 类型的可变数组)不允许重复:Set无序:HashSet [底层是 HashMap,维护了一个哈希表,即 数组+链表+红黑树]排序:TreeSet插入和取出顺原创 2022-01-26 22:50:47 · 376 阅读 · 0 评论 -
35.Java之泛型(泛型介绍,泛型的语法,泛型使用的注意事项和细节,自定义泛型类,自定义泛型接口,自定义泛型方法,泛型的继承和通配符)
35.1 使用泛型的意义使用传统集合的问题分析不能对加入到集合 ArrayList 中的数据类型进行约束(不安全)遍历的时候,需要进行类型转换,如果集合中的数据量较大,对效率有影响泛型的好处编译时,检查添加元素的类型,提高了安全性减少了类型转换的次数,提高效率不使用泛型Dog -> 加入 -> Object -> 取出 -> Dog // 放入到 ArrayList 会先转成 Object,在取出时,还需要转换成 Dog使用泛型Dog ->原创 2022-01-30 23:16:27 · 1053 阅读 · 0 评论 -
36.Java之绘图坐标体系(坐标体系-介绍,坐标体系-像素,Java绘图技术,Graphics类)
36.1 坐标体系-介绍36.2 坐标体系-像素计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的。像素是一个密度单位,与长度单位无法比较36.3 Java绘图技术Component 类提供了两个和绘图相关最重要的方法:paint(Graphics g) 绘制组件的外观repaint() 刷新组件的外观当组件第一次在屏幕上显示的时候,程序会自动的调用 paint() 方法来绘制组件在以下情况paint()将会被调用:窗口最小化,再最大化窗口的大小发生变化repaint 方法原创 2022-02-05 17:52:02 · 3283 阅读 · 0 评论 -
37.Java之线程(单线程、多线程、并发、并行、继承 Thread 类、实现Runnable接口、线程的常用方法、线程的生命周期、线程的同步机制、互斥锁、线程的死锁与释放锁)
37.1 程序(program)是为完成特定任务、用某种语言编写的一组指令集合简单而言:就是自己写的代码37.2 进程进程是指运行中的程序,比如启动迅雷时,就启动了一个进程,操作系统就会为该进程分配内存空间。进程是程序的一次执行过程,或是正在运行的一个程序。是动态过程:有它自身的产生、存在和消亡的过程37.3 线程线程由进程创建的,是进程的一个实体一个进程可以拥有多个线程单线程:同一个时刻,只允许执行一个线程多线程:同一个时刻,可以执行多个线程并发:同一个时刻,多个任务交替执行原创 2022-02-09 21:31:00 · 772 阅读 · 0 评论 -
38.Java之IO流(常用的文件操作、IO流原理、流的分类、字节流实例、字符流实例、节点流和处理流、序列化和反序列化、对象流、标准输入输出流、转换流-字节转字符、Properties类配置文件)
38.1 文件流文件在程序中是以流的形式来操作的#mermaid-svg-gW0pdpAYJKsNy5NL .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-gW0pdpAYJKsNy5NL .label text{fill:#333}#mermaid-svg-gW0pdpAYJKsNy5NL .node re原创 2022-02-17 19:44:02 · 348 阅读 · 0 评论