javaSE
文章平均质量分 90
阿亮_1024
一生所梦,过上优雅从容的中产阶级生活
展开
-
java stream处理 fastJSON反序列化的JSONObject对象
前言java如此庞大的生态之下,json工具类有很多,我常用的是阿里巴巴的fastJson。在最开始使用的时候,我反序列化,用的是这个方法public static <T> T parseObject(String text, Class<T> clazz)需要传两个参数,第一个是json字符串,第二个是需要序列化成的对象的class,这样的好处是能直接转成对象,然后操作对象,对象也能复用。但是有有个缺点:需要预先把对象创建出来,如果json层次很深,那就需要定义很多的类,举原创 2021-11-15 11:27:58 · 2244 阅读 · 0 评论 -
idea这么牛,居然能判断当前环境线程是否安全????
‘StringBuffer stringBuffer’ may be declared as ‘StringBuilder’ less… (Ctrl+F1)Inspection info: Reports any variables declared as java.lang.StringBuffer which may be more efficiently declared as java.lang.StringBuilder. java.lang.StringBuilder is a non-th.原创 2021-08-22 15:41:24 · 2015 阅读 · 2 评论 -
重载和重写详解
前言我经常喜欢搞清楚一些细节性的东西,如果放在生活中,就是杠精,但是在代码中,就不是了,跑偏了。今天要说的是重载和重写,其实重载和重写是两个完全不同的概念,只是在中文中,这两个名词有点像,所以经常被拿来进行比较。重载或是重写要满足一些条件才能成立,但是这些条件,如果死记硬背,不太好记,而且很容易记混。但是如果我们搞清楚他们之间的他们的本质,或者是为了解决什么问题,那么就不会搞混了,再结合顺口溜,就很容易记住。重载重载相对简单一些,先说重载原理重载是为了解决什么问题呢?其实重载是为了解决同一个类原创 2021-06-27 23:13:23 · 5109 阅读 · 2 评论 -
java异常深入理解与提升(含面试题)
前言作为一个java开发者,异常肯定是天天都在使用的,但是很多时候我们对异常的了解、认知都只是停留在表面。好像现在不会多线程、高并发、微服务、性能调优、容器……这些高逼格的东西,都不好意思说自己是java开发,诚然,这些东西是很重要,但是基础、本质的东西一样重要。今天我就“详细、深入”的学习一下java中的异常,包括体系结构、异常处理、自己使用、异常本质、细节等等,吃透这些东西,能让我们更好的理解、学习java,当然,异常相关的面试题也将不在话下。当然,受限于个人水平、认知、经验等等因素,如果发现错误,还原创 2021-03-26 11:16:40 · 996 阅读 · 0 评论 -
为什么hashCode和equals方法要一起重写?
声明一下,我是针对哈希表在存这个这个类型的元素分析的默认实现首先要明确,hashCode和equals这两个方法Object中的默认实现hashCode方法 @HotSpotIntrinsicCandidate public native int hashCode();Object中,hashCode方法是被native修饰的,说明底层调用了c或c++的内容。其实做的事情是:根据对象实际的物理内存地址,通过某种算法得出一个数值。equals方法 public bo原创 2020-07-23 22:34:39 · 533 阅读 · 0 评论 -
使用java代码增加一点博客访问量
声明:\color{red}{声明:}声明:本人写这个小程序和写这篇博客的目的是用于学习研究,并且\color{red}{本人写这个小程序和写这篇博客的目的是用于学习研究,并且}本人写这个小程序和写这篇博客的目的是用于学习研究,并且只是在测试的时候用了一下,并没大规模的为自己或别人增加\color{red}{只是在测试的时候用了一下,并没大规模的为自己或别人增加}只是在测试的时候用了一下,并没大规模的为自己或别人增加访问量。请读者也以学习为目的,不要作用在其它不法的方面\color{red}{访问量。原创 2020-08-05 19:56:43 · 1247 阅读 · 1 评论 -
用java做一个简易的小爬虫(可以爬美女图片哦)
前言爬虫一直python的强项,其它语言也能做,只是没有python那么方便快捷,今天正好学到java中了一些和网络相关的知识,就做了一个小爬虫。主要功能是:爬取百度图片中的图片,一键下载。效果图为了吸引大家继续看下去,先上效果图功能就是这样,根据输入的关键字不同,自动下载不同的图片,当然,这些图片都是从百度图片中爬取出来的。思路随便输入一个关键字,百度图片就会展示出很多图片我们都知道,网络中的每个资源,都是有唯一确定的位置的。所以展示出来的每张图片,也都有一个唯一路径。在图原创 2020-08-04 08:33:50 · 4687 阅读 · 16 评论 -
java多线程之——生产者和消费者(详解及提高)
前情引入做一些简单的认识和告知一些前置知识简单介绍生产者和消费者是一种特殊的业务需求的抽象,这种业务就是:需求和供给达到平衡关系,生产一个,就消费一个,或者是生产一部分,就消费一部分。利用多线程,可以对这种业务需求进行简单的模拟和实现,主要是利用Object中的wait方法和notify方法。注意,不能同时生产和消费,因为在多线程下,对共享的数据进行了修改,必须使用同步机制,不然会出现数据安全问题。预备知识首先对java中的多线程,有一定的认识。再者呢,就是Object中的wait方法和no原创 2020-07-30 11:26:33 · 1361 阅读 · 2 评论 -
ArrayList的扩容机制,扩容为原容量的1.5倍这种说法严谨吗?
起因最开始学ArrayList的时候,老师也带着我们翻过一下源码,但是那时初学,看了也不知道个啥。只是记了死结论:会进行数组的复制,扩容为原来的1.5倍今天再次温习ArrayList,然后翻到了源码(jdk11),如下: private int newCapacity(int minCapacity) { // overflow-conscious code int oldCapacity = elementData.length; int new原创 2020-07-24 17:39:01 · 7403 阅读 · 10 评论 -
java继承关系中,父类private修饰的内容真的不能被继承吗?NO
前情引入关于java的继承,初学的时候,一直认为父类中private修饰的东西时无法被子类继承。后来随着学习的深入,见得多了一些,看到一些文章博客的另一种观点:其实父类中的东西,除了构造方法之外,其它的全都是可以被继承的,包括私有的。但是由于private修饰的东西,只能在本类中可见。所以即便子类继承了,也是不可见的。我一开始听着很玄乎,什么?我继承了我父亲的遗产,但是我自己却无法使用?这是什么逻辑。反正继承了private修饰的内容,也是看不见的,那和没继承也没啥区别,而且也没法验证子类是不是真的继承原创 2020-07-18 16:56:40 · 17930 阅读 · 37 评论 -
多态中访问变量、实例方法、静态方法的区别
先上结论在多态中,变量和静态方法都是与类相挂钩的,和具体的对象是哪个无关。而实例方法的访问可以通过一条口诀来记忆:编译看左边,运行看右边。结论验证1. 访问变量和静态方法之所以将它们俩归在一起总结,是因为结论很类似,但实际上,静态内容和实例内容差别是很大的。比如 Parent p = new Child(); 如果是通过引用p去方法静态方法或者变量,那么访问的一定是父类中的内容,无论子类中是否存在与父类同名的静态方法或变量。public class Parent{ // 成员变量 publ原创 2020-07-14 23:47:11 · 893 阅读 · 0 评论 -
java中如果int类型超出了它的范围
背景引入今天老师上课的时候,写了一个循环语句,看起来就是普通的循环,不信看代码: int count = 0; while(true) { count ++; if (count<20) { System.out.println("hello world"); } }小伙伴们,你们不妨先推测一下,如果运行,控制台的原创 2020-07-11 15:49:41 · 9473 阅读 · 6 评论 -
课后甜点之a = a+1和a += 1的区别
对于a = a + 1和a += 1,相信大家都用过,效果上,都是差不多的,都可以对a进行加一操作。但是也是有区别的,不信可以运行一下下面的代码 byte a = 1; a = a + 1;//报错,编译无法通过 a += 1;//正常,编译可以通过,并且程序正常运行因为java中有个机制byte、short或char在做算数运算的时候,会先自动上升为int类型,然后再做运算,所以第二行得到的结果是一个int的数据,但是却要将它赋值个一个byte类型的变原创 2020-07-09 16:49:59 · 1275 阅读 · 0 评论 -
关于java类中代码的执行顺序
关于类中代码执行顺序一、首先声明静态内容包括静态代码块和静态变量,它们的执行顺序处在同一级别,谁写在前面谁先执行。实例内容包括实例代码块1和实例变量(不包括构造方法),它们的执行顺序处在同一级别,谁写在前面谁先执行。二、结论执行顺序为:父类静态内容子类静态内容父类实例内容父类构造函数子类实例内容子类构造方法注意:只有存在创建对象,构造方法和实例代码块才会执行,如果只是将类加载进内存,那么只会执行静态内容。三、代码测试1.代码class Father{ stat原创 2020-06-26 14:39:47 · 568 阅读 · 0 评论 -
关于java中编译器自动进行的强制类型转换
关于类型转换一般规律:小类型向大类型可以自动类型转换,而大类型向小类型转换,需要手动的强制类型转换。注意:1.类型的大小不是按字节大小区分的,而是按照它的范围来定的,比如 long long1 = 300F;//报错,编译无法通过 float float1 = 300L;//编译可以通过,并且可以正常运行long占八个字节,float占四个字节,但实际上float表示的范围要比long更大,(这主要是底层采用存储方式不同造成的)所以long类型的常量可以赋值给fl原创 2020-07-08 22:58:12 · 598 阅读 · 3 评论