java基础
文章平均质量分 63
java基础
yygr
这个作者很懒,什么都没留下…
展开
-
关于Java float和double精度范围大小
按道理最大值应该是(2^128)*(2-2^(-23))=2^129-2^105=6.81*10^38,但是一般书上说的都是3.40*10^38,那么问题又来了,为什么会大了2倍?排除掉所有出书的人抄来抄去的行为导致所有的书都错了这个因素,那么剩下的只能是上面某个地方出了问题。首先,回到上面那个我加粗的规格化上去(我个人觉得完全可以用一般情况来代替这个词),仔细想想,假如所有的数都是上面那种规格化表示的时候:第一:得到的数永远是(1.M)乘以一个数,指数部分是不会为0的,那么0怎么表示?转载 2023-03-29 18:09:18 · 862 阅读 · 0 评论 -
Java 8 要过时了?从JDK8飞升到JDK17,一次性给你讲明白
这么多新版本的 JDK,而且2022年还会推出 JDK 18 和 JDK 19,为什么 Spring 选择了 JDK 17呢。主要是因为他是一个 Oracle官宣可以免费商用的LTS版本,所谓 LTS,是 Long Term Support,也就是官方保证会长期支持的版本。上面这张图是 Oracle 官方给出的 Oracle JDK 支持的时间线。可以看得到,JDK 17 最多可以支持到 2029 年 9 月份。转载 2022-12-02 10:19:16 · 5289 阅读 · 3 评论 -
Java 16 新特性:instanceof增强
Tips:该功能经历了2个Preview版本(JDK 14中的JEP 305、JDK 15中的JEP 375),最终定稿于JDK 16中的JEP 394。这个Map中的Value值因为可能是不同的对象,所以定义的是Object。这个时候,当我们get出来的时候,就需要去判断和转换之后再去处理。先判断获取的value是否是String,再做强制类型转换,然后再对字符串进行操作。这是传统的写法,而在Java 16的增强之后,对于。这个关键词,主要用来判断某个对象是不是某个类的实例。转载 2022-12-01 17:25:41 · 332 阅读 · 0 评论 -
JDK长期支持版本【LTS】说明
一般长期支持的版本都比较稳定,或者官方会不断更新补丁包,推荐使用。至少直到2026年的9月,Java SE 11用户会收到更新。至少直到2030年的12月,Java SE 8用户会收到更新。17根据这些条款将得到更新,至少直到2024年9月。long-term support:长期支持版本。转载 2022-12-01 17:12:47 · 4987 阅读 · 0 评论 -
Java:Arrays.fill() 方法
public static void fill(int[] a, int val):给定一个数组,一个val值。Arrays类的fill() 方法是用来输入给定数组中元素值的。含义为为数组a进行赋值,使得其所有元素值都为val。转载 2022-10-07 17:13:59 · 302 阅读 · 0 评论 -
字符串散列函数示例
在设计历史数据表的时候发现,系统中对象的唯一标示符似乎只能是对象名称,虽然说也有一个唯一的ObjectID可以做标识符,不过在每一个对象中却没有单独存储自己的ID号。我们需要设计一个完全不冲突的哈希函数,即对任意的 key1!在我们的系统中,需要进行历史数据存储的点并不多,也就25K左右。当然了,我所测试的规模非常小,实际的需求也就这么点儿。算法详细的比较可以参考上文中提到的参考博客。在文中,作者深入分析了当前字符串哈希函数的情况,并给出了多个哈希函数的实现代码。要做到完全的不冲突,还是很有难度的。转载 2022-09-23 09:13:02 · 172 阅读 · 0 评论 -
JAVA数组的倒序排序
同时呢,Comparator接口提供了一个静态方法reverseOrder,提供自然顺序的逆序比较器,举个简单的例子,一般不会用这个方法对基本类型进行排序,因为第一个参数需要提供一个对象。Arrays工具类中没有提供直接的倒序排序方法,只有默认的sort,但是提供了重载方法。第二个参数提供一个比较器就可以按照自己定义的规则进行排序(内部比较器和外部比较器)转载 2022-09-09 09:02:58 · 4574 阅读 · 0 评论 -
java 序列化 加密_Java对象序列化加密解密
示例只是简单说明序列化反序列化过程中属性值是可以改变的。转载 2022-09-06 17:47:22 · 395 阅读 · 0 评论 -
静态变量能被序列化吗?
序列化我们的对象并不只是存在内存中,还需要传输网络,或者保存起来下次再加载出来用,所以需要Java序列化技术。Java序列化技术正是将对象转变成一串由二进制字节组成的数组,可以通过将二进制数据保存到磁盘或者传输网络,磁盘或者网络接收者可以在对象的属类的模板上来反序列化类的对象,达到对象持久化的目的。更多序列化请参考:《关于Java序列化你应该知道的一切》这篇文章。简单来说就是,被 transient 修饰的变量不能被序列化。具体来看下面的示例1/**...转载 2022-08-15 11:33:03 · 209 阅读 · 0 评论 -
Java中创建对象的方式
从面向过程到面向对象的转变,是由一句“万物皆对象”开始的。那么所说的这个对象是如何产生的?下面,我们就来看看,在Java中,对象是如何创建的。在Java中创建对象,通常有四种方式:1、new关键字;2、反射机制;3、clone()方法;4、反序列化。...转载 2022-08-15 11:23:15 · 413 阅读 · 0 评论 -
java判断字符串是否为数字的几种方式
代码4采用正则表达式的方式来判断一个字符串是否为数字,这种方式判断面比较全面,可以判断正负、整数小数(推荐)该方式只能校验不含负号“-”的数字,即输入一个负数-199,输出结果将是false;该方式只能校验不含负号“-”的数字,即输入一个负数-199,输出结果将是false;不难发现他是通过循环判断每一个字符,如果有一个字符不是数字,那么就返回false。\d+表示匹配1个或多个连续数字。"+"和"*"类似,"*"表示0个或多个。通过try....catch也可以实现字符串是否为数字的判断,...转载 2022-07-18 12:51:31 · 13399 阅读 · 0 评论 -
IDEA中提示JAVA字符串常量过长
第一步根据File->Settings->Build,Execution,Deployment->Compiler->JavaCompiler路径找到Usercompiler。问题描述在做一个非常长的JSON转对象的dubug时IntellijIDEA编译不通过,报"java常量字符串太长"第二步点击UseCompiler,选择Eclipse,点击确定保存即可。提示在做完相关的测试后,要记得将配置改为原先的Javac。...转载 2022-07-18 12:49:46 · 1376 阅读 · 0 评论 -
Java进制转换的几个方法
https://baijiahao.baidu.com/s?id=1660527700685618336&wfr=spider&for=pc无论是常规的10转2、8、16进制,还是2、8、16转10进制的方法都被封装在Integer对象中。例如:十进制转成十六进制:Integer.toHexString(int i)十进制转成八进制Integer.toOctalString(int i)十进制转成二进制Integer.toBinaryString(int i)十六进制转成十进制Integer.valueOf转载 2022-06-23 13:50:26 · 184 阅读 · 0 评论 -
获得String字符串中某个字符出现的次数
https://blog.csdn.net/weixin_45377770/article/details/109718463实现逻辑非常简单:1.首先记录下来字符串的总长度2.将想要判断的字符在字符串中替换为""3.用总长度减去替换后的长度结果就等于该字符出现的次数。...转载 2022-06-23 10:42:12 · 4488 阅读 · 0 评论 -
Java String.ReplaceAll捕获组用法(正则表达式捕获组及命名捕获组)
https://blog.csdn.net/suo082407128/article/details/107006609 使用替换字符串中和匹配的所有子串,为正则表达式,源码:源码从源码可以看出,两者都是使用的Matcher.replaceAll(String replacement)replaceAll的一般用法就不介绍了,直接说捕获组用法,示例代码捕获组是正则表达式中的概念,如上例中,一个括号()为一个捕获组,捕获组按左括号先后顺序编号, 为1号,为2号,整个正则表达式为0号捕获转载 2022-06-23 10:40:21 · 710 阅读 · 0 评论 -
java的几种保留小数位数的方法
https://blog.csdn.net/qq_48736958/article/details/115787037?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4-115787037-blog-121975948.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.转载 2022-06-10 12:25:44 · 3578 阅读 · 0 评论 -
java中scanner类的常见方法用法总结
https://blog.csdn.net/qq_51527417/article/details/124370079?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2-124370079-blog-124269530.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.转载 2022-06-02 16:47:56 · 2674 阅读 · 0 评论 -
Java——通过反射获取函数参数名称
https://lzhenxing.blog.csdn.net/article/details/71036970?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-71036970-blog-89932057.pc_relevant_default&depth_1-utm_source=distribute.pc_releva转载 2022-05-12 09:46:21 · 1461 阅读 · 0 评论 -
java 不加else_9个小技巧让你的Java if else看起来更优雅
https://blog.csdn.net/weixin_30619981/article/details/114091383前言if else 是我们写代码时,使用频率最高的关键词之一,然而有时过多的 if else 会让我们感到脑壳疼,例如下面这个伪代码:是不是很奔溃?虽然他是伪代码,并且看起来也很夸张,但在现实中,当我们无数次 review 别人代码时,都会发现类似的场景,那么我们本文就来详细聊聊,有没有什么方法可以让我们避免来写这么多的 if else 呢?我们..转载 2022-04-27 09:13:41 · 883 阅读 · 0 评论 -
【Java】内部类与外部类的互访使用小结
https://www.jianshu.com/p/99fbfc251aa0原博客链接:【Java】内部类与外部类的互访使用小结内部类又称为嵌套类。可以把内部类理解为外部类的一个普通成员。内部类访问外部类里面的可以自由访问外面的,规则和static一样。(访问非静态时必须先创建对象)具体如下:非静态内部类的非静态方法直接访问public class Outter { int i = 5; static String string = "Hello转载 2022-04-21 20:30:16 · 2546 阅读 · 0 评论 -
为什么内部类的private变量可被外部类直接访问?
https://www.zhihu.com/question/54730071问题:我的意思是外部类通过内部类对象访问内部类私有变量,是怎么做到的?回答:题主以后请直接把例子的代码以文本形式放到问题描述中。截图的话等于迫使别人再打一次字…虽然截图已经比手机拍照要好了orz题主问的代码是像这样的:public class Outer { private int outProp = 8; class Inner { private int inP转载 2022-04-21 20:27:02 · 1152 阅读 · 0 评论 -
一个案例搞懂原码、反码、补码,不懂得请看过来
https://baijiahao.baidu.com/s?id=1674791878881242895&wfr=spider&for=pc1. 预备知识认识二进制,十六进制。会二进制与十进制的相互转化运算由计算机的硬件决定,任何存储于计算机中的数据,其本质都是以二进制码存储。根据冯~诺依曼提出的经典计算机体系结构框架。一台计算机由运算器,控制器,存储器,输入和输出设备组成。其中运算器,只有加法运算器,没有减法运算器(据说一开始是有的,后来由于减法器硬件开销太大,被废了 )所转载 2022-03-31 19:28:09 · 2291 阅读 · 0 评论 -
面试官又整新活,居然问我for循环用i++和++i哪个效率高?
https://baijiahao.baidu.com/s?id=1717359135238248854&wfr=spider&for=pc前几天,一个小伙伴告诉我,他在面试的时候被面试官问了这么一个问题:在for循环中,到底应该用 i++ 还是 ++i ?听到这,我感觉这面试官确实有点不按套路出牌了,放着好好的八股文不问,净整些幺蛾子的东西。在临走的时候,小伙伴问面试官这道题的答案是什么,面试官没有明确告诉答案,只是说让从程序执行的效率角度自己思考一下。转载 2022-03-31 10:34:02 · 90 阅读 · 0 评论 -
finally和return的执行顺序
finally和return的执行顺序_coder_rad的博客-CSDN博客_finally return执行顺序今天看到一段代码,try中有return语句,后面还有一个finally,不知道执行过程是什么样的。于是来试验了一下。11.try和catch中有return时,finally里面的语句会被执行吗我们可以来分别看看 (1)执行try中的return时public class tryDemo { public static int show() { ...转载 2022-03-16 10:32:41 · 388 阅读 · 0 评论 -
不受检查异常和检查异常的区别
成都汇智动力-Java异常发生的原因,不受检查异常和检查异常的区别异常发生的原因有很多,通常包含以下几大类:用户输入了非法数据。 要打开的文件不存在。 网络通信时连接中断,或者JVM内存溢出。这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的。要理解Java异常处理是如何工作的,你需要掌握以下三种类型的异常:检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生.转载 2022-03-16 10:30:26 · 242 阅读 · 0 评论 -
JAVA逻辑运算符示例详解:与、或、非、异或
https://blog.csdn.net/m0_37220730/article/details/104242582JAVA逻辑运算符示例详解:与、或、非、异或 对比表 与 逻辑与 短路与 或 逻辑或 短路或 非 逻辑非 异或转载 2022-03-15 16:52:20 · 1122 阅读 · 0 评论 -
Checked异常和Runtime异常
Checked异常和Runtime异常 - 爱你一万年123 - 博客园一 Checked异常和Runtime异常介绍Java的异常被分为两大类:Checked异常和Runtime异常(运行时异常)。所有RuntimeException类及其子类的实例被称为Runtime异常;不是RuntimeException类及其子类的异常实例则被称为Checked异常。 Java认为Checked异常都是可以被处理(修复)的异常,所以Java程序必须显示处理Checked异常。如果程序没有处理Check转载 2022-03-13 08:40:54 · 1280 阅读 · 0 评论 -
Java中substring内存泄露问题
Java中substring内存泄露问题_itmyhome的专栏-CSDN博客在Java中,String是最常用的数据类型,String有一个substring方法用来截取字符串,或许我们没注意到该方法可能会引起内存泄露问题(出现于Java6中)。方法介绍:在Java中提供了两个截取子字符串的方法:substring(int beginIndex)substring(int beginIndex, int endIndex)12问题重现:public class Test转载 2022-03-09 21:02:03 · 455 阅读 · 0 评论 -
Java 可变对象和不可变对象
(转)Java 可变对象和不可变对象_这个很科学的博客-CSDN博客_java不可变对象一、简单定义 不可变对象(Immutable Objects)即对象一旦被创建它的状态(对象的数据,也即对象属性值)就不能改变,反之即为可变对象(Mutable Objects)。 不可变对象的类即为不可变类(Immutable Class)。Java平台类库中包含许多不可变类,如String、基本类型的包装类、BigInteger和BigDecimal等。二、优缺点 不可变对象有很多优点:转载 2022-03-07 21:07:44 · 1458 阅读 · 0 评论 -
JVM中的对象深入分析 - 对象的实例数据与对齐填充
JVM中的对象探秘(三)- 对象的实例数据与对齐填充_q13145241q的博客-CSDN博客_java对象对齐填充引言上一篇文章我们讲解了JVM对象内存布局的第一部分对象头,今天我们继续来讲讲剩下的两部分实例数据(Instance Data) 、对齐填充(Padding)。实例数据与对齐填充这两部分我们放在一起将,先来看一下概念(深入理解JAVA虚拟机第2.3.2节):实例数据(Instance Data):实例数据部分是对象真正存储的有效信息,也既是我们在程序代码里面所定.转载 2022-03-07 16:28:06 · 300 阅读 · 0 评论 -
理解Java的反射与内省及其区别
理解Java的反射与内省及其区别 - 俊华的博客 - 博客园java的内省机制和反射机制什么区别内省操作只针对JavaBean,只有符合JavaBean规则的类的成员才可以采用内省API进行操作。。。。而反射则不同,一个类的所有成员都可以进行反射操作。内省和反射的操作也有很大不同,内省是先得到属性描述器PropertyDecriptor后再进行各种操作,反射则是先得到类的字节码Class后再进行各种操作的。反射(reflection)(实现可扩展性智能化)相对而言,反射比内省更容转载 2022-03-06 08:07:59 · 853 阅读 · 0 评论 -
java中什么是bridge method(桥接方法)
https://blog.csdn.net/mhmyqn/article/details/47342577在看spring-mvc的源码的时候,看到在解析handler方法时,有关于获取桥接方法代码,不明白什么是桥接方法,经过查找资料,终于理解了什么是桥接方法。什么是桥接方法桥接方法是 JDK 1.5 引入泛型后,为了使Java的泛型方法生成的字节码和 1.5 版本前的字节码相兼容,由编译器自动生成的方法。我们可以通过Method.isBridge()方法来判断一个方法是否是桥接方法,在转载 2022-03-04 13:20:27 · 272 阅读 · 0 评论 -
Java 泛型,你了解类型擦除吗?
https://blog.csdn.net/briblue/article/details/76736356Java 泛型,你了解类型擦除吗?_frank 的专栏-CSDN博客_java泛型擦除泛型,一个孤独的守门者。大家可能会有疑问,我为什么叫做泛型是一个守门者。这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇。泛型是 Java 中一个很小巧的概念,但同时也是一个很容易让人迷惑的知识点,它让人迷惑的地方在于它的许多表现有点违反直觉。文章开始的地方,先转载 2022-03-04 11:08:13 · 137 阅读 · 0 评论 -
java中为final变量赋值的几种方式
https://blog.csdn.net/qq_34626859/article/details/89157740java中为final变量赋值的几种方式前言使用final修饰变量,很多人第一时间想到的就是不可变。然后以为变量必须得在声明的时候就为其赋初始值,其实不然,本文将详细讲解java中使用final修改的变量的赋值问题。被final修饰的变量的几种赋值方式1、被final修饰的变量有三种赋值方式。 2、被final static修饰的变量有两种赋值方式。储备知识:在转载 2022-02-28 17:21:20 · 2434 阅读 · 0 评论 -
关于String常量池和String对象的测试和总结
基本操作1.String s = “a”;堆中:创建String(“a”)对象常量池(StringTable): "a"字面量引用 -> 堆中String(“a”)对象2.String s = “a” + “a”;堆中:String(“aa”)对象常量池: "aa"字面量 -> 堆中String(“aa”)对象注意:“a” + "a"编译时被合为"aa"字面量,也就是没有存在"a"字面量,所以"a"没有加入常量池3.String s = new String(“a”);堆中:原创 2022-02-27 19:47:50 · 503 阅读 · 0 评论 -
关于Java的一些小总结-内部类、外部类
https://blog.csdn.net/drugfree/article/details/79980724内部类: 内部类一般来说共分为4种:常规内部类、静态内部类、局部内部类、匿名内部类一.常规内部类:常规内部类没有用static修饰且定义在在外部类类体中。1.常规内部类中的方法可以直接使用外部类的实例变量和实例方法。2.在常规内部类中可以直接用内部类创建对象运行结果如下:...转载 2022-02-22 11:26:36 · 904 阅读 · 0 评论 -
Java自动装箱与自动拆箱(包装类)
https://blog.csdn.net/weixin_40556448/article/details/92060659一、基本介绍包装类的作用: Java 语言中,一切都是对象,但是有例外:8 个基本数据类型不是对象,因此在很多时候非常不方便。 为此, Java提供为 8 个基本类型提供了对应的包装类: byte ------- Byte short ------ Short ...转载 2022-02-22 08:52:51 · 751 阅读 · 0 评论 -
浮点数为什么不精确?
https://blog.csdn.net/renwotao2009/article/details/51637163浮点数为什么不精确?其实这句话本身就不精确, 相对精确一点的说法是: 我们码农在程序里写的10进制小数,计算机内部无法用二进制的小数来精确的表达。什么是二进制的小数? 就是形如 101.11 数字,注意,这是二进制的,数字只能是0和1。101.11 就等于 1 * 2^2 +0 2^1 + 12^0 + 12^-1 + 12^-2 = 4+0+1+1/2+1/4 = 5.75下面的转载 2022-02-21 13:56:08 · 1034 阅读 · 0 评论 -
利用内部类实现多重继承
https://blog.csdn.net/weixin_44234912/article/details/108798787多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道 Java 为了保证数据安全,只允许单继承。有些时候我们会认为如果系统中需要使用多重继承,那往往都是糟糕的设想,这时开发人员往往需要思考的不是怎么使用多重继承,而是他的设计是否存在问题。但是,有时候开发人员确实需要实现多重继承,而且现实生活中真正地存在这样的情况,例如遗传,我们既继承了父亲的行为和特征,也转载 2022-02-17 20:05:45 · 695 阅读 · 0 评论 -
Java之注解Annotation实现原理
https://www.cnblogs.com/whoislcj/p/5671622.html什么是注解?对于很多初次接触的开发者来说应该都有这个疑问?Annontation是Java5开始引入的新特征,中文名称叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。为程序的元素(类、方法、成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,并且供指定的工具或框架使用。Annontation像一种修饰符一样,应用转载 2022-02-17 15:50:45 · 527 阅读 · 2 评论