Java
文章平均质量分 72
逆风Lee
这个作者很懒,什么都没留下…
展开
-
Java基础八:为什么要重写 hashcode 和 equals 方法?
我在面试Java初级开发的时候,经常会问:你有没有重写过hashcode方法?不少候选人直接说没写过。我就想,或许真的没写过,于是就再通过一个问题确认:你在用HashMap的时候,键(Key)部分,有没有放过自定义对象?而这个时候,候选人说放过,于是两个问题的回答就自相矛盾了。最近问下来,这个问题普遍回答不大好,于是在本文里,就干脆从hash表讲起,讲述HashMap的存数据规则,由此大家就自然清楚上述问题的答案了。1. 通过Hash算法来了解HashMap对象的高效性我们先复习数据结构里的一个知识点转载 2021-04-24 21:58:49 · 521 阅读 · 0 评论 -
StringBuffer和StringBuilder的区别
String、StringBuffer、StringBuilder区别StringBuffer、StringBuilder和String一样,也用来代表字符串。String类是不可变类,任何对String的改变都 会引发新的String对象的生成;StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象。既然可变和不可变都有了,为何还有一个StringBuilder呢?相信初期的你,在进行append时,一般都会选择StringBuffer吧!先说一下集合的故事,HashTab转载 2021-04-06 15:21:14 · 167 阅读 · 0 评论 -
Math类的方法总结
1、Math.hypot(double x, double y)计算直角三角形的斜边长,x和y分别表示两个直角边的长度。可以用于计算两个点直接的距离,已知(x1,y1)和(x2,y2)两个点,要获取这两个点的距离:double distance = Math.hypot(x2 - x1,y2 - y1)...原创 2021-02-07 10:53:11 · 215 阅读 · 0 评论 -
java并发之原子性、可见性、有序性
https://www.cnblogs.com/guanghe/p/9206635.html转载 2020-11-25 21:30:22 · 82 阅读 · 0 评论 -
java单例的双重检查锁模式为什么要使用volatile关键字
https://www.cnblogs.com/zhuifeng523/p/11360012.html转载 2020-11-18 17:57:03 · 130 阅读 · 0 评论 -
java中的CountDownLatch
1.背景:countDownLatch是在java1.5被引入,跟它一起被引入的工具类还有CyclicBarrier、Semaphore、concurrentHashMap和BlockingQueue。存在于java.util.cucurrent包下。2.概念countDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待的线程就转载 2020-11-18 17:13:00 · 449 阅读 · 0 评论 -
Java异常一:ConcurrentModificationException
Java ConcurrentModificationException异常原因和解决方法在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以下这个异常出现的原因以及解决办法。一.ConcurrentModificationException异常出现的原因先看下面这段代码:public class Test { public static vo转载 2020-10-21 14:48:03 · 131 阅读 · 0 评论 -
java中的锁:不可重入锁和可重入锁
Synchronized与ReentrantLock区别总结https://blog.csdn.net/zxd8080666/article/details/83214089不可重入锁和可重入锁不可重入锁:就是一个线获取到某个方法锁以后,在释放锁之前,方法的某部分无法执行public class Count{ Lock lock = new Lock(); public ...转载 2019-07-09 11:18:31 · 651 阅读 · 0 评论 -
Java四种引用包括强引用,软引用,弱引用,虚引用。
Java四种引用包括强引用,软引用,弱引用,虚引用。强引用:只要引用存在,垃圾回收器永远不会回收Object obj = new Object();//可直接通过obj取得对应的对象 如obj.equels(new Object());而这样 obj对象对后面new Object的一个强引用,只有当obj这个引用被释放之后,对象才会被释放掉,这也是我们经常所用到的编码形式。软引用:...转载 2019-07-07 21:58:21 · 144 阅读 · 0 评论 -
RuntimeException和Exception区别
1.java将所有的错误封装为一个对象,其根本父类为Throwable, Throwable有两个子类:Error和Exception。2.Error是Throwable 的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件。虽然 ThreadDeath 错误是一个“正规”的条件,但它也是 Error 的子类,因为大多数应用程序都不应该试图捕获它。在执行该方...转载 2019-05-09 16:44:32 · 51728 阅读 · 2 评论 -
泛型中的PECS原则,?super T和? extends T的区别
PECS请记住PECS原则:生产者(Producer)使用extends,消费者(Consumer)使用super。生产者使用extends如果你需要一个列表提供T类型的元素(即你想从列表中读取T类型的元素),你需要把这个列表声明成<? extends T>,比如List<? extends Integer>,因此你不能往该列表中添加任何元素。消费者使用super...转载 2019-05-06 16:26:24 · 470 阅读 · 0 评论 -
Java修饰符:public,protected,private,不加修饰符。有什么区别呢?
如下表所示,Y表示能访问(可见性),N表示不能访问,例如第一行的第3个Y,表示类的变量/方法如果是用public修饰,它的子类能访问这个变量/方法修饰符类内部同个包(package)子类其他范围publicYYYYprotectedYYYN无修饰符YYY或者N(见说明)NprivateYNNN说明:需要特别说明“...转载 2019-03-09 13:00:16 · 8876 阅读 · 3 评论 -
Java基础六:Java中Volatile关键字详解
一、基本概念先补充一下概念:Java 内存模型中的可见性、原子性和有序性。可见性:可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制。可见性,是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的。也就是一个线程修改的结...转载 2018-11-07 11:10:20 · 141 阅读 · 0 评论 -
Java配置问题一:has value '1.8', but '1.7' is required.
打开开始菜单,搜索regedit,打开注册表 打开”HKEY_LOCAL_MACHINE” 点击”SOFTWARE” 点击”JavaSoft” 点击”Java Runtime Environment” 选中”CurrentVersion” ,右键点击更改,改成”1.7”原创 2017-07-12 10:23:09 · 1932 阅读 · 0 评论 -
JAVA中虚方法、抽象方法、实例方法、静态方法的辨别
转载自:http://blog.csdn.net/nvnnv/article/details/51000417#t0抽象方法抽象方法是用abstract修饰的方法,只能声明不能实现,抽象方法必须被声明在抽象类里(反过来,抽象类里不一定要有抽象方法),抽象方法的的作用就是强制子类实现该抽象方法(如果子类不是抽象类的话)。实例方法可以用对象引用调用的方法都可以称作实例方法,实例方法必须在对象实例化之后,转载 2017-06-13 11:05:33 · 944 阅读 · 0 评论 -
一个简单的问题:==与equals的区别
Java的==和equals的区别很容易混淆 1. 语义上:==指的是内存引用一样。equals是指的是逻辑相等。逻辑相等具体的意思由编写者决定。 2. 默认情况下(继承自Object类),equals和==是一样的,除非被覆写(override)了。 public boolean equals(Object obj) { return (this == obj); }转载 2017-07-31 11:27:28 · 294 阅读 · 0 评论 -
Java基础二:Java在内存分配
一般Java在内存分配时会涉及到以下区域: ◆寄存器:我们在程序中无法控制 ◆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中(new 出来的对象) ◆堆:存放用new产生的数据 ◆静态域:存放在对象中用static定义的静态成员 ◆常量池:存放常量 ◆非RAM存储:硬盘等永久存储空间Java内存分配中的栈 在函数中定义的...转载 2017-08-11 11:38:10 · 217 阅读 · 0 评论 -
java基础三:Arraylist和LinkList区别
ArrayList和LinkedList的区别只有有以下几点: 1. ArrayList是基于动态数组的数据结构,LinkedList是基于双向链表的数据结构。 2. 对于随机访问get和set,ArrayList要优于LinkedList,因为LinkedList要移动指针。 3. 对于新增和删除操作add和remove,LinkedList比较有优势,因为ArrayList要移动数据。下面转载 2017-12-08 21:18:44 · 303 阅读 · 0 评论 -
Java基础四:String操作总结
1.判断string中包含另外一个字符或字符串: contains方法可以判断,例String string = "abcd";string.contains("aa")//可以判断string中是否包含"aa" ……原创 2017-09-07 11:12:26 · 229 阅读 · 0 评论 -
Java基础二
1.重载函数的区别即区别是否是重载函数方法名相同,参数类型不同,或者参数个数不同,或者参数顺序不同,为重载,返回值不算原创 2018-02-26 17:18:08 · 168 阅读 · 0 评论 -
Java基础四:避免使用finalize()方法
finalize()是在java.lang.Object里定义的,也就是说每一个对象都有这么个方法。这个方法在gc启动,该对象被回收的时候被调用。其实gc可以回收大部分的对象(凡是new出来的对象,gc都能搞定,一般情况下我们不会用new以外的方式去创建对象),所以一般是不需要程序员去实现finalize的。 1、概述 1、终结方法(finalizer)通常是不可预测的,也是很危险的,...转载 2018-02-27 09:42:29 · 6685 阅读 · 0 评论 -
Java基础五:浅clone和深clone
一、概念java里的clone分为: A: 浅复制(浅克隆): 浅复制仅仅复制所考虑的对象,还有复制对象里面的引用,而不复制它所引用的对象。 B: 深复制(深克隆):深复制把要复制的对象所引用的对象和数组都复制了一遍。 Java中对象的克隆,为了获取对象的一份拷贝,我们可以利用Object类的clone()方法。必须要遵循下面三点 1.在派生类中覆盖基类的clone()方法,并转载 2017-09-13 21:34:16 · 361 阅读 · 0 评论 -
Java基础六:Java的面向对象思想
面向对象的概念面向对象是Java的基本特征,深刻的理解面向对象的思想是设计良好Java项目的前提。 面向对象是软件开发过程中的一种思维方式,将功能属性等封装进一个对象,强调的是具有这种功能属性的对象,而不是关注过程。面向对象的特征封装 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征...原创 2018-03-03 22:32:34 · 169 阅读 · 0 评论 -
Linux(Centos7)安装tomcat并且部署Java Web项目
https://blog.csdn.net/gebitan505/article/details/54599598转载 2018-10-04 18:56:12 · 440 阅读 · 0 评论 -
Java基础一
基础也很重要! 两个int类型变量相除,结果赋值给一个float类型的变量,需要把其中一个int变量转换成float类型,结果才会正确:int a = 1;int b = 2;float c = a/b这时候c为0,需要c = (float) a/b,结果才会等于0.5;原创 2017-03-20 16:52:27 · 91 阅读 · 0 评论