- 博客(74)
- 收藏
- 关注
原创 【Java注解】
注解通过@interface关键字来定义。// 定义注解的属性(元素)public 属性类型 属性名() default 默认值;注解元素的类型可以是基本类型、String、枚举、注解类型或这些类型的数组。注解可以用来修饰包、类、接口、方法、字段、构造器、局部变量等。定义自定义注解public @interface 注解名称{public 属性类型 属性名() default 默认值;// 定义了一个名为value的元素,它是String类型,有默认值"Hello"
2024-09-22 10:04:48
948
原创 【反射知识点详解】
Java中的反射(Reflection)是一个非常强大的机制,它允许程序在运行时检查或修改类的行为。这种能力主要通过包中的类和接口来实现。通过反射,Java程序可以动态地创建对象、调用方法、访问字段,以及获取类的各种信息(如构造器、方法、字段等)。
2024-09-08 12:26:15
1102
原创 【JUnit单元测试框架】
Junit是一个广泛使用的Java单元测试框架,由第三方公司开源出来,旨在为Java开发者提供一种灵活且强大的方式来编写和运行测试代码。许多现代开发工具(如IDEA)已经集成了Junit框架,使得测试代码的编写和执行变得更加便捷。
2024-09-04 23:04:20
739
原创 【Java中的网络编程——超详细】
定义与目的网络编程的主要目的是实现不同计算机之间的数据交互和通信。通过编写代码,开发者可以创建网络连接,发送和接收数据包,实现网络通信的各种功能。这些功能包括但不限于网页浏览、邮件传输、文件传输、远程登录等。基本原理网络编程的基本原理是利用计算机网络的通信协议,将数据分成小的数据包进行传输。这些数据包通过网络中的节点和路由器进行传输和中转,最终到达目标计算机。在传输过程中,数据包会按照网络协议的规定进行封装和解封装,以确保数据的完整性和可靠性。
2024-09-04 20:13:16
1221
原创 【线程池】
线程池是一个可以复用线程的技术。简单来说,线程池是一种基于池化技术的思想来管理线程的技术,旨在减少线程的创建和销毁次数,提高系统的响应速度和吞吐量。它预先创建了一定数量的线程,并将这些线程放入到一个池中(即线程池),当需要执行新的任务时,不是直接创建新的线程,而是从线程池中取出一个空闲的线程来执行该任务,执行完毕后线程并不被销毁,而是放回线程池中供后续任务再次使用。
2024-08-28 22:47:32
642
原创 线程安全问题
在Java中,线程安全是一个非常重要的概念,特别是在多线程编程环境中。线程安全意味着在并发执行的情况下,多个线程同时访问同一个对象或数据时,能够保持数据的一致性和完整性,不会出现数据错乱或不一致的状态。线程安全问题通常发生在多个线程同时访问并修改共享数据时。由于线程的执行顺序和速度是不确定的(即所谓的“竞态条件”),这可能导致数据被意外地修改或破坏。以下是一个经典的线程不安全的代码示例,这段代码在Java语言中创建了一个简单的计数器类,该类提供了一个增加计数的方法。在多线程环境中,这个方法不是线程安全的。
2024-08-28 17:48:59
1134
原创 如何在程序中创建出多条线程
多线程是编程中的一个重要概念,它允许程序同时执行多个任务,每个任务可以看作是一个线程。在Java中,多线程尤为常见且强大,它通过允许程序在并发环境下运行,提高了程序的执行效率和响应速度。
2024-08-25 18:00:54
999
1
原创 【XML详解】
Dom4j在解析XML文件时,采用了DOM的思想,但相比于传统的DOM解析器,Dom4j提供了更简洁、更高效的API。这个Document对象代表了整个XML文档的根节点。标签代表一个用户,并包含用户的。是根标签,它包含了两个。
2024-08-25 10:20:52
4384
2
原创 【特殊文件---properties】
在properties中,一行就是一个键值对(key=value),简单的理解就是一行可以保存一个变量,键和值之间用=号隔开。这允许你以字符为单位写入数据,这对于需要特定字符编码的属性文件特别有用。通过字符输入流读取属性文件中的键值对数据。这适用于需要处理非二进制属性文件(如使用特定字符编码的文件)的情况。记住,不用打双引号(“”)打了的话读取的时候会读取到(“”)除非你自己需要双引号。对象中的键值对写入到指定的输出流中,通常是文件输出流(不要有重复的键,要不然后面的值会覆盖前面的值。
2024-08-20 22:30:16
1433
原创 Apache Commons-IO 库
Apache Commons-IO是Apache开源基金组织提供的一组有关IO(Input/Output)操作的小框架。这个库的主要目的是为了提高IO流的开发效率,减少在进行文件读写、目录遍历等操作时编写的样板代码量。通过使用Commons-IO库,开发者可以更加简洁、高效地完成这些任务。
2024-08-20 19:54:15
1290
原创 一篇文章带你了解字符编码
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是一种基于拉丁字母的字符编码系统,它主要用于电子通信中字符的显示、存储和传输。ASCII是计算机中最常用的字符编码标准之一,特别是在处理英文文本时。定义ASCII是1963年由美国国家标准局(ANSI)制定的字符编码标准,它最初包含了128个字符,用于表示英文字母、数字、标点符号、控制字符等。这些字符被分配了从0到127的数字编号,称为ASCII码。特点单字节编码:ASCI
2024-08-20 11:21:11
2108
原创 一篇文章带你简单了解递归算法
等到第10天的时候。递归方法通常用于解决那些可以分解为相似但规模更小的子问题的问题,如树的遍历、排序算法(如归并排序、快速排序)、图的搜索(如深度优先搜索DFS)、数学中的阶乘、斐波那契数列等。:在递归方法中,除了基准情形外,还包含一个或多个递归调用,这些调用将问题分解为更小的子问题。:这是递归的终止条件,它定义了在什么情况下递归调用应该停止,并返回一个值(可能是直接的结果,也可能是进一步计算所需的中间值)。现在我们需要找到天数与桃子数量之间的关系,根据题意:每天都是吃前天剩余桃子数量的一半,又多吃一个。
2024-08-19 22:21:17
1169
原创 Java中的File
方法用于获取当前目录下所有的“一级文件名称”,并将这些名称作为字符串数组返回。如果目录为空,则返回一个长度为0的数组。类本身并不直接处理文件的读写操作,它仅仅是一个路径名(文件名或目录名)的封装。类可以被用来创建、删除文件,重命名文件,查询文件属性,以及遍历目录树等。但是,值得注意的是,对象,而不是字符串名称。这允许你进一步操作这些文件或文件夹,如读取、写入、删除等。方法用于获取当前目录下所有“一级文件对象”到一个文件对象数组中去返回。包下的一个重要类,它代表了文件和目录路径名的抽象表示形式。
2024-08-19 17:47:45
874
原创 一篇文章来你学完Java中的集合(超详细)
存储的是引用:Java集合存储的是对象的引用,而不是对象本身。操作的是引用:对集合的操作(如添加、获取、更新、删除)实际上是在操作这些引用。影响垃圾回收:集合中存储的引用会影响对象的垃圾回收过程,因为只要引用存在,对象就不会被回收。ListJava中的Set集合主要用于存储不重复的元素。Set接口继承自Collection接口,但它不保证维护任何特定的顺序(除非该集合是某个特定类型的,比如,它按照元素被插入的顺序来遍历元素)。Set接口的实现类主要有HashSetTreeSet等。
2024-08-05 23:39:18
3874
4
原创 Java中可变参数
可变参数是Java中一个非常有用的特性,它提供了灵活的方法参数传递方式。然而,使用时需要注意重载和类型擦除可能带来的问题。正确使用可变参数可以简化代码并提高方法的可用性。
2024-08-05 23:23:02
248
原创 Java开发中处理异常的方式
在前面我们简单提到了代码层面上的异常处理。有两种方式,第一种方式呢一旦出现异常呢你可以往外抛,那大家都不管,都往外抛。那么还有一种方式呢就是捕获这个异常。那么这两种方式是代码层面上的处理啊,在开发中我们到底应该如何去处理异常。在Java开发中,异常处理确实主要包括两种方式,:一种是捕获异常后记录日志并响应给用户合适的信息,另一种是捕获异常后尝试进行修复或恢复操作。下面我将详细解释这两种方式,并提供相应的代码示例。
2024-08-01 23:16:44
919
原创 Java中的自定义异常
JAVA无法为这个世界上全部的问题都提供异常类来代表。如果企业自己的某种问题,想通过异常来表示,以便用异常来管理该问题,那就需要自己来定义异常类。自定义运行时异常(Custom Runtime Exception)在Java编程中扮演着重要的角色,尤其是在处理那些不需要强制调用者进行异常处理的错误情况时。这些异常通常继承自类或其子类,并且由于它们是“非受检的”,因此不需要在方法签名中显式声明抛出。1. 继承自自定义运行时异常首先必须继承自类或其任何子类。这样做的原因是。
2024-08-01 18:47:16
476
原创 Java中的异常
在Java中,异常(Exception)是程序执行期间发生的事件,它打断了正常的指令流。这些事件通常是程序中的错误或问题,比如试图除以零、访问不存在的文件、网络问题等。Java提供了一种结构化的、统一的方式来处理这类问题,即异常处理机制。
2024-07-31 22:13:35
917
原创 Java中对对象排序
在Java中,对对象进行排序通常可以通过两种方式实现:一种是使用Comparable接口,另一种是使用Comparator接口。这两种方式各有特点,适用于不同的场景。
2024-07-29 18:45:16
1044
原创 Java中的Arrays类
Java中的Arrays类是一个工具类,它提供了用于操作数组的各种静态方法。这个类不能被实例化,因为它包含的都是静态方法。下面,我将详细介绍几个Arrays类中常用的方法,并通过代码示例来展示它们的使用。
2024-07-29 11:54:26
281
原创 Java中的System
Java 中的System类是一个包含几个有用类字段和方法的 final 类。它提供对标准输入、输出和错误输出流的访问,以及对系统属性和环境变量的访问,还有一些用于操作数组的方法。以下是System类的详细说明和代码示例。
2024-07-27 23:39:33
396
原创 一篇文章带你学完Java所有的时间与日期类
线程安全性:新类都是不可变的,因此它们是线程安全的。不可变性:一旦创建,新类的对象就不能被修改,这有助于防止意外的修改和并发问题。更清晰的API设计:新类提供了更直观、更易于理解的API,使得日期时间的处理更加简单和方便。更好的国际化支持:新类支持时区处理,并且遵循ISO 8601标准,使得日期时间的表示更加国际化。更精确的时间表示Instant类提供了纳秒级的时间精度,比旧的类更加精确。
2024-07-27 23:32:11
3369
1
原创 Java中的BigDecimal
BigDecimal是 Java 中用于高精度计算的类,它主要用于处理非常大或非常精确的浮点数,特别是那些需要精确小数点的场景,比如金融计算。由于 float和 double类型在进行运算时可能会产生精度丢失的问题,BigDecimal提供了一种解决方案。
2024-07-26 21:02:23
320
原创 Java中的包装类
在Java中,有八种基本数据类型(byte, short, int, long, float, double, boolean, char)和它们对应的八种包装类(Byte, Short, Integer, Long, Float, Double, Boolean, Character)。从Java 5(也称为Java 1.5)开始,引入了自动装箱(Autoboxing)和拆箱(Unboxing)机制,这使得基本数据类型和它们的包装类之间的转换更加简便。要将基本类型转换为字符串,可以使用包装类提供的。
2024-07-26 12:09:26
943
原创 Java中的泛型
泛型类就是在类定义时通过一个或多个类型参数(type parameters)来指定类、接口、方法中可以使用的具体类型。类型参数在声明时,通常使用大写字母,并在尖括号<>中给出。this.t = t;return t;在这个例子中,Box是一个泛型类,它有一个类型参数T。这意味着Box类可以存储任何类型的对象,但是一旦创建了Box的实例并指定了具体的类型(如),那么这个实例就只能存储那个类型的对象了。泛型(Generics)是一种参数化类型,它允许在定义类、接口或方法时指定一个或多个类型参数。
2024-07-25 19:35:05
884
原创 Java中的枚举
枚举的定义类似于类,但是使用enum关键字来声明。枚举中可以直接定义常量(枚举项),也可以包含字段、方法、构造函数等。在上面的例子中,Day是一个枚举类型,它包含了7个枚举项,分别代表一周的七天。
2024-07-25 18:57:44
427
原创 Java中的匿名内部类
匿名内部类是没有类名的内部类。当你想要创建一个类的实例,但这个类只需要实现一个接口或继承一个类(且不需要额外的成员变量或方法),你就可以使用匿名内部类。它直接在创建对象的地方定义类的内容。
2024-07-16 23:08:18
623
1
原创 Java中的静态内部类
静态内部类是通过在内部类前加上static关键字来定义的。静态内部类不依赖于外部类的实例,也就是说,你可以不创建外部类的实例而直接创建静态内部类的实例。
2024-07-16 22:53:19
229
原创 Java中的成员内部类
成员内部类定义在外部类的任何方法之外,通常作为外部类的一个成员存在。它不能包含静态成员(除了静态常量),因为成员内部类实例总是依赖于外部类实例。//成员内部类int age=38;
2024-07-16 22:34:33
429
原创 Java中的接口(2)
在Java中,接口(Interface)是一种引用类型,是一种抽象的类型,用于指定一组方法规范,但不提供这些方法的实现。接口是一种形式上的契约,任何实现接口的类都必须遵循接口中定义的方法签名,但具体实现细节则由实现接口的类来提供。
2024-07-11 23:46:50
304
原创 Java中用于对对象的数组或列表进行排序
的浮点数类型的公共字段(或有一个公共的getter方法,但在这个lambda表达式中我们直接访问了字段),并且这个字段或getter方法是用来获取。从键盘录入5个学生的数据,保存到容器对象ar中,然后按照成绩score从高到低排序之后输出。是一个私有字段,并且没有提供公共的getter方法,那么这段代码将无法编译通过。方法遍历列表时,它会使用这个比较器来确定列表中每个元素的顺序,并最终得到一个按。类的一个静态方法,用于对指定列表中的元素进行排序。),用于定义列表中元素的排序顺序。属性降序排列的列表。
2024-06-29 16:04:46
570
原创 一篇文章带你学会“二分算法”
二分算法(也称为二分法或折半查找)是一种在有序数组中查找特定元素的搜索算法。其基本原理是通过不断缩小查找范围来逼近目标值。
2024-06-22 11:05:28
1439
3
原创 构造方法可以调用本类中重载的构造方法和它的父类的构造方法
如果没有显式地调用父类的构造方法,编译器会默认调用父类的无参数构造方法(如果存在的话)。如果父类没有无参数的构造方法,并且子类也没有显式地调用父类的其他构造方法,那么编译时会出现错误。如果父类没有无参数的构造方法,并且子类也没有显式地调用父类的其他构造方法,那么子类在编译时会报错,因为它找不到默认的父类构造方法来调用。,也就是说,它是构造方法中的第一个语句。(即没有调用父类的构造方法),那么编译器会隐式调用父类的无参数构造方法(如果存在)。在构造方法中的使用是互斥的,也就是说,一个构造方法中不能同时调用。
2024-06-22 10:08:38
334
1
原创 java中的Random
Random是 Java 中的一个内置类,它位于java.util包中,主要用于生成伪随机数。伪随机数是指通过一定算法生成的、看似随机的数,但实际上这些数是由确定的算法生成的,因此不是真正的随机数。然而,由于这些数在统计上具有随机性,所以它们在很多应用中足够好地模拟了真正的随机数。以下是关于Random。
2024-06-20 22:48:50
825
原创 一段代码让你了解Java中的抽象
在面向对象编程中,一个基类的数组(或集合)可以存储其子类对象的引用,这是因为子类继承了基类的所有公共和非final保护属性和方法(取决于具体的继承规则和访问修饰符)。因此,当你创建一个基类的数组时,你实际上是在声明一个可以存储该基类或其任何子类对象的引用的容器。中定义的,那么就会调用基类中的实现;如果方法是在子类中重写的(override),那么就会调用子类中的实现(这就是多态性的一个表现)。计算几何对象的面积之和)编写一个方法,该方法用于计算数组中所有几何对象的面积之和。的子类,它们可以被视为特殊的。
2024-06-20 22:41:09
257
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人