JavaSE
文章平均质量分 88
认真生活的灰太狼
谢谢大家支持,一起加油!
展开
-
20天深度复习JavaSE的详细笔记(二十)——XML、解析、设计模式等
需求:利用Dom4J的知识,将Contact.xml文件中的联系人数据封装成List集合,其中每个元素是实体类Contact。XML是可扩展标记语言(eXtensible Markup Language)的缩写,它是是一种数据表示格式,可以描述非常复杂的数据结构,常用于传输和存储数据。问题:由于XML文件可以自定义标签,导致XML文件可以随意定义,程序在解析的时候可能出现问题,这时就需要文档约束了。需求:利用DTD文档约束,约束一个XML文件的编写。1.XML的数据的作用是什么,最终需要怎么处理?原创 2022-09-17 23:58:44 · 438 阅读 · 0 评论 -
20天深度复习JavaSE的详细笔记(十九)——单元测试、反射、注解
单元测试就是针对最小的功能单元编写测试代码,Java程序最小的功能单元是方法,因此,单元测试就是针对Java方法的测试,进而检查方法的正确性2.目前测试方法是怎么进行的,存在什么问题只有一个main方法,如果一个方法的测试失败了,其他方法测试会受到影响无法得到测试的结果报告,需要程序员自己去观察测试是否成功无法实现自动化测试3.Junit单元测试框架JUnit是使用Java语言实现的单元测试框架,它是开源的,Java开发者都应当学习并使用JUnit编写单元测试。原创 2022-09-17 10:19:40 · 481 阅读 · 0 评论 -
20天深度复习JavaSE的详细笔记(十八)——网络编程
网络编程可以让程序与网络上的其他设备中的程序进行数据交互常见的网络通信模式有如下两种:Client-Server(CS),Browser/Server(BS)IP地址:设备在网络中的地址,是唯一的标识端口:应用程序在设备中唯一的标识协议:数据在网络中传输的规则,常见的协议有UDP协议和TCP协议IP(Internet Protocol):全称"互联网协议地址",是分配给上网设备的唯一标志,用来定位网络上的设备的1.常见的IP分类为:IPv4和IPv6IPv4:32bit(4字节)原创 2022-09-16 23:56:55 · 893 阅读 · 0 评论 -
20天深度复习JavaSE的详细笔记(十七)——多线程
线程是一个程序内部的一条执行路径我们之前启动程序执行后,main方法的执行其实就是一条单独的执行路径程序中如果只有一条执行路径,那么这个程序就是单线程的程序多线程是指从软硬件上实现多条执行流程的技术线程池就是一个可以复用线程的技术不使用线程池的问题如果用户没发起一个请求,后台就创建一个新线程来处理,下次新任务来了又要创建新线程,而创建新线程的开销是很大的(其一,它是一个对象它要占内存,其二,它还要竞争CPU来执行自己),这样会严重影响系统的性能。原创 2022-09-16 10:48:01 · 262 阅读 · 0 评论 -
20天深度复习JavaSE的详细笔记(十六)——File、递归、IO流
目前我们是在内存存储数据的,在程序运行中进行处理,修改,运算等操作,这样的存储方式不能长久保存数据想要长久保存数据我们可以将数据存储到文件中,磁盘中数据的形式就是文件,文件是数据的载体关于File,IO流,我们需要学会什么File类创建对象:注意点:2.2.2创建文件,删除文件功能File类创建文件的功能File类删除文件的功能2.2.3File类的遍历功能方法名称说明public String[] list()获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回原创 2022-09-15 10:40:21 · 724 阅读 · 0 评论 -
20天深度复习JavaSE的详细笔记(十五)——日志框架
Logback是有log4j创始人设计的另一个开源日志组件,性能比log4j要好官方网站:https://logback.qos.ch/index.htmlLogback是基于slf4j的日志规范实现的框架Logback主要分为三个技术模块logback-core:该模块为其他两个模块奠定了基础,必须有核心模块,它是log4j的一个改良版本,同时它完整实现了slf4j APIlogback-access:该模块与Tomcat和Jetty等容器集成,以提供HTTP访问日志功能。原创 2022-09-15 01:00:48 · 487 阅读 · 0 评论 -
20天深度复习JavaSE的详细笔记(十四)——不可变集合、Stream、异常
异常是程序在"编译"或者"运行"的过程中可能出现的问题语法错误不算在异常体系中,这是自己水平不行为什么要学习异常:异常一旦出现了,如果没有提前处理,程序就会退出JVM虚拟机而终止研究异常并且避免异常,然后提前处理异常,体现的是程序的安全性健壮性异常体系:Error:系统级别问题,JVM退出等,代码无法控制.这种系统级别的问题我们没办法控制Exception:java.lang包下,称为异常类,它表示了程序本身可以处理的问题。原创 2022-09-13 23:49:53 · 586 阅读 · 0 评论 -
20天深度复习JavaSE的详细笔记(十三)——集合(Set、Collections、Map、集合嵌套)
Map集合是一种双列集合,每个元素包含两个数据Map集合的每个元素的格式:key=value(键值对元素),故Map集合也被称为"键值对集合"Map集合的键无序,不重复(后面重复的键对应的元素会覆盖前面重复的整个元素)Map集合的值不做要求,可以重复Map集合的键值对都可以为null//输出{null=null} } }Collection集合和Map集合格式:Collection集合的格式:[元素1,元素2,元素3,…]原创 2022-09-13 23:42:18 · 885 阅读 · 0 评论 -
20天深度复习JavaSE的详细笔记(十二)——集合(Collection、数据结构、List、泛型深入)
泛型是JDK5中引入的特性,可以在编译阶段约束操作的数据类型并进行检查泛型格式:;注意:泛型只能支持引用数据类型集合体系的全部接口和实现类都是支持泛型的使用的2.泛型的好处:统一数据类型把运行时期的问题提前到了编译期间,避免了强制类型转换可能出现的异常,因为编译阶段类型就能确定下来了}上述代码会报ClassCastException异常。原创 2022-09-11 00:59:39 · 816 阅读 · 0 评论 -
20天深度复习JavaSE的详细笔记(十一)——包装类、正则表达式、Lambda、算法
是数组操作工具类专门用于操作数组元素的(我们已经说过很多次了,工具类构造器私有化不能创建对象,工具类的方法都是静态方法,Arrays类也不例外)关于上述案例的第31行的return Double.compare(o2.getHeight(), o1.getHeight());1.Lambda表达式是JDK8开始后的一种新语法形式,是为了简化匿名内部类的代码写法。4.Lambda表达式的省略写法(进一步在Lambda表达式的基础上进行简化)2.Lambda表达式只能简化函数式接口的匿名内部类的写法形式。原创 2022-09-08 00:09:10 · 543 阅读 · 0 评论 -
20天深度复习JavaSE的详细笔记(十)——面向对象进阶(多态、内部类、常用API)
1.内部类就是定义在一个类里面的类当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务,那么整个内部的完整结构可以选择使用内部类来设计内部类通常可以直接访问外部类的成员,包括私有成员内部类相比外部类提供了更好的封装性,内部类本身就可以用privateprotected等修饰,封装性可以做更多控制外部类的上一层单元是包,对于外部类来说,只有两个作用域同包或者任何位置,因此只需要两种控制权限静态内部类[了解]...原创 2022-07-29 22:06:30 · 793 阅读 · 2 评论 -
20天深度复习JavaSE的详细笔记(九)——面向对象进阶(包、权限修饰符、final、常量、枚举、抽象类、接口)
权限修饰符是用来控制一个成员能够被访问的范围,可以修饰成员变量,方法,构造器,内部类,不同权限修饰符修饰的成员能够被访问的范围将受到限制.权限修饰符四种作用范围由小到大:private->缺省->protected->public3.final关键字final关键字是最终的意思,可以修饰类,方法,变量修饰类时表明该类是最终类,不能被继承修饰方法时表明该方法时最终方法,不能被重写修饰变量时表明该变量第一次赋值后,不能再次被赋值(能且仅能被赋值一次)变量有几种:final修饰变量的注意:枚举是原创 2022-07-12 22:51:14 · 494 阅读 · 0 评论 -
25天掌握java基础(八)——static、单例、代码块、继承
static是什么:成员变量可以分为2类:静态成员变量的内存机制:静态成员变量会随着类的加载在内存中加载一次,加载完成后会在堆内存中开辟一块区域存放该类的静态变量,然后将加载后的静态成员变量放到开辟的这块区域中成员方法可以分为2类:静态成员方法的内存机制及运行原理:1.类加载时会将静态成员方法(如main和getMax)加载到方法区2.将方法区的main方法提到栈内存运行3.main方法运行过程中遇到了一行代码是调用getMax方法,那么就将方法区的getMax方法提到栈内存运行实例成员方法的内存机制及运行原创 2022-07-07 23:02:44 · 278 阅读 · 0 评论 -
25天掌握java基础(七)——常用API(String_ArrayList)
String其实常被称为不可变字符串类型,它的对象在创建后不能被更改从上述代码可以看出字符串变量name指向的字符串对象变了,那为何还说字符串不可变呢:首先记着以""方式给出的字符串对象,在字符串常量池中存储1.以""方式创建的"传智"字符串对象存储在字符串常量池,并将地址交给name(为什么变量name存储的地址但是输出时可以输入字符串呢,这个在继承会讲到,现在先直到有这种现象就可以了)2.以"“方式创建的"教育"字符串对象存储在字符串常量池,然后name指向的"传智"字符串对象与刚刚存储的"教育"字符原创 2022-07-06 22:22:30 · 170 阅读 · 0 评论 -
25天掌握java基础(六)——面向对象基础
注意事项:3.垃圾回收当堆内存中的对象没有被任何变量引用(指向)时,就会被判定为内存中的"垃圾"此时在堆内存中创建的该Student对象为垃圾对象,但是我们不用手动清理,因为java存在自动垃圾回收器,会定期进行清理构造器的作用:定义在类中,可以用于初始化一个类的对象,并返回对象的地址(也就是说每个类都必须最少有一个构造器,默认是无参构造器)构造器分为两种:构造器的注意事项:上述三个输出语句输出的地址一模一样1.this在有参构造器中的用法:上述这种语法没错,但这种写法会被人嫌弃,因为n没有起到见原创 2022-07-05 19:51:44 · 147 阅读 · 0 评论 -
25天掌握java基础(五)——方法
1.基本类型的参数传递在传输实参给方法的形参的时候,并不是传输实参变量本身,而是传输实参变量中存储的值,这就是值传递2.引用类型的参数传递也是值传递,但是要区分和基本类型参数传递的区别(基本类型传递的是存储的数据值,引用类型传递的是存储的地址值)3.方法的重载方法重载:同一个类中,多个方法的名称相同,形参列表不同,这就是方法重载使用方法重载的好处:对于相似功能的业务场景:可读性好,方法名称相同提示是同一类型的功能,通过形参不同实现功能差异化的选择,这是一种专业的代码设计方法重载的识别技巧:retur原创 2022-07-03 22:14:30 · 94 阅读 · 0 评论 -
25天掌握java基础(四)——数组、Debug
1.静态初始化数组数组变量名中存储的是数组在内存中的地址,数组是引用类型输出结果是[D@1540e19d,[代表指向的是数组,D代表存储的数据是double类型2.动态初始化数组数据类型[] 数组名 = new 数据类型[长度];数组内没有初始化的数据访问时为默认值元素默认值规则:注意字符数组的元素默认值是0第二个输出乱码是因为这是一个字符数组,存放的数据是字符类型,所以输出时会输出一个0对应的字符(0对应的字符是不可打印字符,所以乱码,可打印字符32~127),需要强制类型转换才能输出01.java原创 2022-07-01 20:47:41 · 354 阅读 · 0 评论 -
25天掌握java基础(三)——程序流程控制、Random类
程序默认流程存在多个case分支的功能代码是一样时,可以用穿透性把流程集中到同一处理,这样可以简化代码3.循环结构3.1for循环3.2while循环while循环和for循环功能上是完全一样的,for能解决的while也能解决,反之亦然知道循环几次使用for;不知道循环几次建议使用while3.3do-while循环3.4死循环,循环嵌套,break,continue场景:假如你有老婆,你老婆罚你说3天,每天5句我爱你,但是说到第二天的第3句就心软了,以后都不用说了!......原创 2022-06-30 22:35:53 · 587 阅读 · 0 评论 -
25天掌握java基础(二)——数据类型、API介绍、键盘录入
类型范围小的变量,可以直接赋值给类型范围大的变量(布尔型不能和其他数据类型进行转换)byte->short->int->long->float->doublechar->int->long->float->double1.2表达式的自动类型转换在表达式中,小范围的变量会自动转换成当前较大范围的类型再运算byte、short、char->int->long->float->double注意事项:1.3强制类型转换可以通过强制类型转换将类型范围大的变量或数据赋值给类型范围小的变量强制类型转换注意事项:+原创 2022-06-28 22:06:00 · 419 阅读 · 0 评论 -
25天掌握java基础(一)——Java概述、IDEA、Java基础语法
怎么验证jdk是否安装成功了(需配置环境变量,具体看):需要看bin目录下的java.exe和javac.exe能否运行注意,java.exe和javac.exe是命令行程序而不是图形界面化程序所以,如果直接双击打开会一闪而过,那么运行该程序就需要用到命令行窗口,在命令行分别输入java -version和javac -version验证安装是否成功并检查安装版本是否正确1.创建HelloWorld.java文件并编写源代码2.在命令行编译该源文件打开命令行窗口后先切换到源文件的父目录下在命令行窗口中输入原创 2022-06-26 21:26:00 · 1816 阅读 · 0 评论