Java
文章平均质量分 80
Java 相关
文丑颜不良啊
平平无奇的Java开发小白
展开
-
四则运算Java版
四则运算 Java 版原创 2022-11-18 19:34:20 · 2932 阅读 · 2 评论 -
Java 中的 IO 流
Java IO、BIO、NIO、AIO、Files 的常用方法原创 2022-07-26 18:25:36 · 183 阅读 · 0 评论 -
Java 异常(Exception)简介及异常处理方式
Java 异常(Exception)简介、Java 内置异常类、Java 处理异常的方式原创 2022-05-30 09:52:26 · 2962 阅读 · 0 评论 -
雪花算法(SnowFlake)
雪花算法、SnowFlake原创 2022-04-24 18:10:40 · 113282 阅读 · 21 评论 -
BigDecimal 使用总结
BigDecimal 使用总结原创 2022-04-24 14:37:21 · 2121 阅读 · 2 评论 -
Java学习之旅(四六):抽象类与接口
抽象类、接口、抽象类与接口的区别原创 2022-03-27 17:30:52 · 870 阅读 · 0 评论 -
Java 8 Stream 操作集合
Stream 是 Java 8 的新特性之一,它可以对集合进行非常复杂的查找、过滤、筛选等操作。Stream 也称为“流”,本文参考掘金大佬的文章:Java 8 Stream 从入门到进阶——像SQL一样玩转集合 - 掘金 通过流的定义、特征、创建过程和使用这四方面的内容,来详细了解一下 Stream 的强大。流的定义Java 8 引入的“流”的概念可以帮助我们更方便快捷的处理集合,不再依赖于循环遍历去处理集合,这也是 Stream 的强大之处的体现。那么,什么是“流”呢?官方解释是:A St.原创 2022-03-19 19:25:32 · 1392 阅读 · 1 评论 -
toString()、String.valueOf()、(String) 强转的区别
在实际开发中,少不了使用这三种方法对某一个类型的数据进行转 String 的操作,那么什么情况下使用哪种方法更快捷,以及这些方法使用时的一些注意事项都有哪些呢?这篇文章参考自《掘金》上大佬的头条三面:toString()、String.valueOf、(String)强转,有啥区别? - 掘金 ,来叙述一下这三种方法的使用场景。废话少说,直接上代码!一、基本类型转换1.toString()基本类型是没有 toString() 方法的2.String.valueOf()基本类型转.原创 2022-03-14 23:08:12 · 5821 阅读 · 1 评论 -
Java学习之旅(四五):多态
利用多态可以使程序具有良好的扩展性,并可以对所有类对象进行通用的处理。之前我们知道子类对象可以作为父类的对象实例使用,这种做法称为“向上转型”。假如我们现在需要绘制一个平行四边形,这是我们其实就可以在平行四边形类中定义一个 draw() 方法。public class Parallelogram { public void draw(Parallelogram parallelogram) { // do something(); System.out.pri原创 2021-09-12 20:38:15 · 140 阅读 · 0 评论 -
Java学习之旅(四四):方法的重载
我们知道构造方法的名称是由类名决定的,所以构造方法只有一个名称。如果希望以不同的方式来实例化对象,就需要使用多个构造方法来完成。由于这些构造方法都需要根据类名来进行命名,为了让方法名相同而形参不同的构造方法同时存在,必须用到方法重载。虽然方法重载起源于构造方法,但它也可以应用到其他方法中。方法的重载其实就是在同一个类中允许存在一个以上的同名方法,只要这些方法的参数个数或类型不同即可。例:方法名为 add() 的重载方法如下:public class OverLoadTest { publ原创 2021-09-05 21:28:11 · 195 阅读 · 1 评论 -
SonarLint 默认扫描规则
在平时写代码的时候,为了代码规范和减少 bug 的数量,使用 SonarLint 插件进行代码检查无疑是一个很好的方法。Sonar 是一个用于代码质量管理的开源平台,用来管理源代码的质量,通过插件的形式支持包括 Java、C++、C语言等多种编程语言的代码质量管理与检测。Sonar 从以下七个维度来进行代码质量的检测:不遵循代码标准:Sonar 可以通过 PMD、CheckStyle、Findbugs 等代码规则检测工具来规范代码的编写 潜在的缺陷:Sonar 可以通过 PMD、CheckStyl原创 2021-05-20 09:36:59 · 9614 阅读 · 0 评论 -
Java学习之旅(四三):使用 instanceof 操作符判断对象类型
当在程序中执行向下转型操作时,如果父类对象不是子类对象的实例,就会发生 ClassCastException 异常,所以在执行向下转型操作之前要养成一个良好的习惯,就是判断父类对象是否为子类对象的实例。这个判断通常使用 instanceof 操作符来完成,可以使用该操作符判断是否一个类实现了某个接口,也可以判断一个实例对象是否属于一个类。instanceof 是 Java 语言的关键字,在 Java 语言中,关键字都为小写。使用 instanceof 操作符的表达式返回值为布尔类型。如果返回值为 true,原创 2021-05-05 20:11:10 · 814 阅读 · 0 评论 -
Java学习之旅(四二):对象类型的转换
对象类型的转换在 Java 编程中会经常遇到,主要包括向上转型和向下转型操作。1.向上转型简单来讲的话就比如,因为平行四边形是特殊的四边形,也就是说平行四边形是四边形的一种,那么就可以将平行四边形对象看作是一个四边形对象。又例如,鸡是家禽的一种,而家禽又是动物中的一类,那么就可以将鸡对象看作是一个动物对象。所以,将子类对象看作是父类对象的行为,我们称为“向上转型”。由于向上转型是从一个较具体的类型到较抽象类型的一个转换,所以它总是安全的。// 四边形类public class Quadran原创 2021-05-05 19:26:39 · 202 阅读 · 0 评论 -
Java学习之旅(四一):Object 类
Object 类是比较特殊的类,它是所有类的父类,是 Java 类层中最高层的类。用户每创建一个类时,除非已经指定要从其他类继承,否则默认就是从 java.lang.Object 类继承而来的。Java 中每个类都源于 java.lang.Object 类,如 String、Integer 等类都是继承于 Object 类;除此之外,自定义的类也都继承于 Object 类。由于所有类都是 Object 类,所以在定义类时可省略 extends Object 关键字。在 Object 类中主要包括 clone原创 2021-05-05 18:45:57 · 73 阅读 · 0 评论 -
Java学习之旅(四十):类的继承
继承在面向对象开发思想中是一个非常重要的概念,它使整个程序架构具有一定的弹性。在程序中复用一些已经定义完善的类不仅可以减少软件开发周期,也可以提高软件的可维护性和可扩展性。继承的基本思想是基于某个父类进行扩展,得到一个新的子类。子类可以继承父类原有的属性和方法,也可以增加原来父类所不具备的属性和方法,或者直接重写父类中的某些方法。例如,平行四边形是特殊的四边形,可以说平行四边形继承了四边形类。这时,平行四边形类将所有四边形具有的属性和方法都保留了下来,并基于四边形类扩展出了一些新的平行四边形类特有的属性和方原创 2021-05-04 21:44:53 · 214 阅读 · 2 评论 -
List 去重
在日常工作中,需要对 List 进行去重的场景很多。对于我这样一个菜鸟来说,可能能想到的最简单粗暴的方法就是双层循环去重,但是在看到这篇文章之后,果断收藏了。https://mp.weixin.qq.com/s/N1MRYswi8v1Lh6pdDz8upQ来源于微信公众号“Java爱好者”,在此表示感谢。若有侵权,请联系删除~既然刚才说到了简单粗暴的方法,那么我们就先来看看这种暴力方法:1.双层循环import java.util.*;public class ListDemo {原创 2021-01-29 15:05:04 · 351 阅读 · 0 评论 -
Java学习之旅(三九):大数字运算
在 Java 中提供了大数字的操作类,即 java.math.BigInteger 类与 java.math.BigDecimal 类。这两个类用于高精度计算,其中 BigInteger 类是针对大整数的处理类,而 BigDecimal 类则是针对大小数的处理类。BigIntegerBigInteger 类型的数字范围较 Integer 类型的数字范围要大得多。Integer 是 int 的包装类,所以它的最大值其实和 int 一样,为 ,如果要计算更大的数字,使用 Integer 数据类型就无法实原创 2020-12-19 19:48:26 · 249 阅读 · 1 评论 -
Java学习之旅(三八):随机数
在实际的开发中,随机数的使用其实是非常普遍的。Java 中主要提供了两种生成随机数的方式,分别为调用 Math 类的 random() 方法生成随机数和调用 Random 类生成各种数据类型的随机数。Math.random() 方法在 Math 类中存在一个 random() 方法,用于产生随机数。这个方法默认生成大于等于 0.0 且小于 1.0 的 double 型随机数,即 0 <= Math.random() < 1.0。虽然 Math.random() 方法只可以产生 0~1 之原创 2020-12-19 17:50:30 · 179 阅读 · 0 评论 -
StringBuffer 和 StringBuilder
当需要对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不会产生新的未使用的对象。在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改的话,推荐使用 StringBuffer。StringBuilder 类和 StringBuffer 类之间的最大不同在于原创 2020-12-16 18:36:05 · 390 阅读 · 0 评论 -
delete、truncate、drop 的区别
delete 语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作truncate table 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快当表被 truncate 后,这个表和索引所占用的空间会恢复到初始大小delete 操作不会减少表或索引所占用的空间drop语句将表所占用的空间全释放掉truncate 只能针对于表dele原创 2020-12-16 15:58:39 · 265 阅读 · 0 评论 -
Java学习之旅(三七):数学运算
在 Java 语言中提供了一个执行数学基本运算的 Math 类,该类包括常用的数学运算方法,如三角函数方法、指数函数方法、对数函数方法、平方根函数方法等一些常用的数学函数,除此之外还提供了一些常用的数学常量,如 PI、E 等。Math 类在 Math 类中提供了众多数学函数方法,主要包括三角函数方法、指数函数方法、取整函数方法、取最大值、取最小值以及平均值函数方法。这些方法都被定义为 static 形式,所以在程序中应用时其实是比较渐变的,可直接使用 Math.方法() 去调用。至于常量,也可使用此原创 2020-12-13 18:50:09 · 210 阅读 · 0 评论 -
Java学习之旅(三六):数字格式化
数字格式化在解决实际问题时应用非常普遍,如表示某超市的商品价格,需要保留两位有效数字等。数字格式化操作主要针对的是浮点型数据,包括 double 型和 float 型数据。在 Java 中使用 java.text.DecimalFormat 格式化数字。在 Java 中没有格式化的数据遵循以下规则:如果数据绝对值大于 0.001 并且小于 10000000,使用常规小数形式表示; 如果数据绝对值小于 0.001 或者大于 10000000,使用科学计数法表示由于上述输出格式不能满足解决实际问题的要求原创 2020-12-13 12:50:37 · 183 阅读 · 0 评论 -
Java 8 新特性之 Optional 类
Java 8 提供的 Optional 类是一个可以为 null 的容器对象。如果值存在则 isPresent() 方法会返回 true,调用 get() 方法会返回该对象。同时,Optional 又是个容器,它可以保存类型 T的值,或者仅仅保存 null。Optional 提供了很多有用的方法,为我们进行空值检测提供了很大的便利,所以说,Optional 类的引入很好的解决了空指针异常的问题。Optional 类提供的方法 方法 描述 static <T> Optional&l原创 2020-12-11 14:56:34 · 200 阅读 · 0 评论 -
Java 8 之 Stream 详细示例
该实例来源于:https://www.runoob.com/java/java8-streams.html在此表示感谢,如有感到冒犯,请联系删除!!import java.util.*;import java.util.stream.Collectors;public class StreamTest { public static void main(String[] args) { System.out.println("--- 使用 Java 7 ---");原创 2020-12-11 11:28:48 · 155 阅读 · 0 评论 -
Java 8 之 Stream 相关
Stream 概述Java 8 版本是一个非常成功的版本,此版本中新增的 Stream 和 Lambda,为我们平时对集合(Collection)的操作提供了非常大的便利。Stream是将要处理的元素集合看成一种流,在流的过程中,借助 Stream API 提供的方法对流中的元素进行相应的操作,这些操作包括但不限于如筛选、排序、聚合等。Stream 的几个特性:stream 不存储数据,而是按照特定的规则对数据进行计算,一般会输出结果; stream 不会改变数据源,通常情况下会产生一个新的集原创 2020-12-10 17:58:08 · 181 阅读 · 0 评论 -
Java学习之旅(三五):抽象类 Number
抽象类 Number 是 BigDecimal、BigInteger、Byte、Double、Float、Integer、Long 和 Short 类的父类,Number 的子类必须提供将表示的数值转换为 byte、double、float、int、long 和 short 的方法。Number 类方法 方法 返回值 说明 byteValue() byte 以 byte 形式返回指定的数值 intValue() int 以 int 形式返回指定的数值 s原创 2020-12-06 20:09:40 · 350 阅读 · 0 评论 -
Java学习之旅(三四):包装类之 Double
Double 和 Float 包装类是对 double、float 基本类型的封装,它们都是 Number 类的子类,又都是对小数进行操作,所以常用方法基本相同。Double 类在对象中包装一个基本类型为 double 的值,每个 Double 类的对象都包含一个 double 类型的字段。此外,该类还提供多个方法,可以将 double 转换为 String,也可以将 String 转换为 double。构造方法//基于 Double 参数创建 Double 类对象Double(double v原创 2020-12-06 20:02:01 · 2212 阅读 · 0 评论 -
Java学习之旅(三三):包装类之 Character
Character 类在对象中包装一个基本类型为 char 的值。一个 Character 类型的对象包含类型为 char 的单个字段。该类提供了几种方法,以确定字符的类别(小写字母、数字等),并将字符从大写转换成小写,反之亦然。构造方法Character 类的构造方法的语法为:Character(char value);Character value = new Character('char');该类的构造函数必须是一个 char 类型的数据。通过该构造函数创建的 Character原创 2020-12-06 19:38:12 · 520 阅读 · 0 评论 -
Java学习之旅(三二):包装类之 Byte
Byte 类型将基本类型为 byte 的值包装在一个对象中。一个 Byte 类型的对象只包含一个类型为 byte 的字段。此外,该类还为 byte 和 String 的相互转换提供了许多方法,并提供了处理 byte 时非常有用的其他一些常量和方法。构造方法Byte(byte value);byte mybyte = 45;Byte value = new Byte(mybyte);通过这种方法创建的 Byte 对象,可表示指定的 byte 值。Byte(String str);By原创 2020-12-06 19:17:07 · 388 阅读 · 0 评论 -
Java学习之旅(三一):包装类之 Boolean
Boolean 类型将基本类型为 boolean 的值包装在一个对象中。一个 Boolean 类型的对象只包含一个类型为 boolean 的字段。此外,该类还为 boolean 和 String 的相互转换提供了许多方法,并提供了处理 boolean 时非常有用的其他一些常量和方法。构造方法Boolean(boolean value);Boolean value = new Boolean(ture);该方法创建一个表示 value 参数的 Boolean 对象。Boolean(Str原创 2020-12-06 18:13:33 · 1023 阅读 · 0 评论 -
Java学习之旅(三十):包装类之 Integer
java.lang 包中的 Integer 类、Long 类和 Short 类,可将基本类型 int、long 和 short 封装成一个类。这些类都是 Number 的子类,区别就是封装了不同的数据类型。以 Integer 类为例,Integer 类在对象中包装了一个基本类型 int 的值。该类的对象包含一个 int 类型的字段。此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,同时还提供了其他一些处理 int 类型时非常有用的常量和方法。构造方法Integer 提供原创 2020-12-06 17:49:45 · 863 阅读 · 0 评论 -
Java 之 HashMap
HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。HashMap 实现了 Map 接口,根据键的 HashCode 值来存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。HashMap 是无序的,即它不会记录插入的顺序。HashMap 继承于 AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。HashMap 中的 key 与 value 可以是相同类型的,也可以是不同类型的,如 St...原创 2020-12-05 17:48:09 · 191 阅读 · 0 评论 -
Java学习之旅(二九):对象
Java 是一门面向对象的程序设计语言,对象是由类抽象出来的,所有的问题都通过对象来处理。对象可以操作类的属性和方法解决相应的问题,所以了解对象的创建、操作和销毁是十分必要的。对象的创建我们可以认为对象是在一类事物中抽象出某一个特例,可以通过这个特例来处理这类事物出现的问题。在 Java 语言中通过 new 操作符来创建对象。每实例化一个对象就会自动调用一次构造方法,实质上这个过程就是创建对象的过程。准确地说,可以在 Java 语言中使用 new 操作符调用构造方法创建对象。语法为:Test原创 2020-11-29 19:30:45 · 213 阅读 · 0 评论 -
Java学习之旅(二八):静态变量、静态常量、静态方法和类的主方法
由 static 修饰的变量、常量和方法称为静态变量、常量和方法。有时候,在处理问题的时候会需要两个类在同一个内存区域中共享一个数据。例如,在球类中使用 PI 这个常量,可能除了本类需要这个常量之外,在另外一个圆类中也需要使用这个常量。这时我们其实没有必要再两个类中同时创建 PI 常量,因为这样系统会将这两个不在同一个类中定义的常量分配到不同的内存空间中,为了解决这个问题,可以将这个常量设置为静态的。PI 常量在内存中被共享的布局如下所示:PI 常量在内存中被共享的情况被声明为 stat.原创 2020-11-29 13:29:18 · 388 阅读 · 0 评论 -
Java学习之旅(二七):类的构造方法
在类中,除了成员方法之外,还存在一种特殊类型的方法,那就是构造方法。构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的。每当类实例化一个对象时,类都会自动调用构造方法。构造方法的特点为:构造方法没有返回值;构造方法的名称要与类名相同。在定义构造方法时,构造方法没有返回值,但是这与普通的没有返回值的方法并不同,普通的没有返回值的方法使用 public void method() 这种形式定义,但构造方法并不需要使用 void 关键字来进行修饰。构造方法的定义语法格式为:public bo原创 2020-11-22 19:16:47 · 406 阅读 · 0 评论 -
Java学习之旅(二六):类
我们已经知道类使封装对象的属性和行为的载体,而在 Java 语言中,对象的属性是以成员变量的形式存在的,对象的方法则是以成员方法的形式存在的。成员变量在 Java 中,对象的属性也称为成员变量。我们可以先定义一个图书类,来帮助我们更好的了解成员变量,其中在图书类中,成员变量对应于类对象的属性,在 Book 类中设置一个成员变量 name,对应于图书名称。public class Book { private String name; public String getNa原创 2020-11-22 14:35:03 · 212 阅读 · 0 评论 -
Java学习之旅(二五):面向对象
面向对象概述面向对象思想是人类最自然的一种思考方式,它将所有预处理的问题抽象为对象,同时了解这些对象具有哪些相应的属性以及展示这些对象的行为,以解决这些对象面临的一些实际问题。程序开发中引入了面向对象设计的概念,其实质上就是对现实世界中的对象进行建模操作。1.对象在 Java 中,可谓万物皆对象。对象是事物存在的实体,如人、书桌、计算机、高楼大厦等。人类解决问题的方式总是将复杂的事物简单化,于是就会思考这些对象都是由哪些部分组成的。通常都会将对象划分为两部分,即静态部分与动态部分。静态部分,顾名原创 2020-11-15 20:42:10 · 256 阅读 · 0 评论 -
Java学习之旅(二四):数组排序算法
冒泡排序在程序设计中,经常需要将一组数列进行排序,这样更加方便统计与查询。程序常用的排序方法有冒泡排序、选择排序和快速排序等。冒泡排序是最常用的数组排序算法之一,它排序数组元素的过程总是将小数往前放、大数往后放,类似水中气泡上升的动作,所以称为冒泡排序。1.基本思想冒泡排序的基本思想是对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把大的元素移动到后面,也就是将比较的两个元素交换位置,这样较小的元素就像气泡一样从底部上升到顶部。2.算法示例冒泡算法由双层循环实现,原创 2020-11-08 22:50:05 · 132 阅读 · 0 评论 -
Java学习之旅(二三):数组的基本操作
遍历数组遍历数组就是获取数组中的每个元素。通常遍历数组都是使用 for 循环来实现。除此之外,还可以使用 foreach 循环来实现遍历的功能。例:用 foreach 循环遍历一维数组public class test { public static void main(String[] args) { int a[] = {1,2,3,4,5}; System.out.print("数组中的元素有:"); for (int x :原创 2020-11-08 18:11:50 · 180 阅读 · 0 评论 -
Java学习之旅(二二):数组之二维数组
如果一维数组中的每个元素仍然是一个数组,那么这个数组就是一个二维数组。二维数组常用于表示表,表中的信息以行和列的形式组织,第一个下标代表元素所在的行,第二个下标代表元素所在的列。二维数组的创建二维数组可以看作是特殊的一维数组,因此,二维数组的创建同样有两种方式。1.先声明,再用 new 运算符进行内存分配声明二维数组的语法如下:数组元素的类型 数组名字[][];int array[][];数组元素的类型[][] 数组名字;int[][] array;同一维数组一样,二维数组在原创 2020-11-08 15:45:19 · 225 阅读 · 0 评论