Java基础知识
文章平均质量分 68
通过这几篇博客,可以了解一些java的基础知识
社会你鑫哥
这个作者很懒,什么都没留下…
展开
-
HashMap底层实现原理
HashMap的出现 在线性表(数组,链表等),树中,关键字与其它的存放位置不存在对应的关系,在查找关键字的时候需要逐个比对,虽然出现了二分查找等各种提高效率的的查找算法,但这些并不够,我们需要查找关键时候不需进行比对,一次找到,因此把关键字和其对应的存储位置间建立对应的关系,由此哈希表应运而生。 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。...原创 2018-03-27 18:48:37 · 294 阅读 · 0 评论 -
HashSet的底层实现
这篇文章的来源是这样的: 有一次面试,面试官问我HashSet的底层实现,可以使用HashMap来实现吗? 我没有看过啊,感觉瞬间懵逼!!! 后来一看:其实底层就是用HashMap实现的。HashSet底层是采用HashMap实现的。HashSet 的实现比较简单,HashSet 的绝 大部分方法都是通过调用 HashMap 的方法来实现的,因此 Hash...原创 2018-05-21 21:10:09 · 639 阅读 · 0 评论 -
Arrays.sort()的底层实现
Java Arrays中提供了对所有类型的排序。其中主要分为Primitive(8种基本类型)和Object两大类。 基本类型:采用调优的快速排序 对象类型:采用改进的归并排序1.基本类型(以int为例)源码中的快速排序,主要做了以下几个方面的优化: 1)当待排序的数组中的元素个数较少时,源码中的阀值为7,采用的是插入排序。尽管插入排序的时间复杂度为0...原创 2018-05-21 21:32:57 · 6247 阅读 · 0 评论 -
String"+"拼接底层实现原理
说起String拼接,大家会想到几个对比: String:常量,不可变,不适合用来字符串拼接,每次都是新创建的对象,消耗较大。 StringBuffer:适合用来作字符串拼接 StringBuilder:JDK1.5引入,适合用来作字符串拼接,与StringBuffer区别是他不是线程安全的 接下来进入正题String”+”拼接底层实现原理 曾见...原创 2018-06-26 17:19:32 · 6037 阅读 · 3 评论 -
Integer.bitCount ()的源码实现
这篇文章接着我的二进制中一的个数源码如下:public static int bitCount(int i) { // HD, Figure 5-2 i = i - ((i >>> 1) & 0x55555555); i = (i & 0x33333333) + ((i >>> 2) &am...原创 2018-06-27 07:59:24 · 428 阅读 · 0 评论 -
类型转换
package com.weikun;import org.junit.Test;/** * Created by admin on 2017/10/24. */public class A1 { @Test public void test() { System.out.println(-6.0/0);//分子 分母都是整数 结果一定是整数,但是如果有其他类型原创 2017-10-24 19:18:12 · 175 阅读 · 0 评论 -
日期与时间
package com.company.K;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.TimeZone;/** * Created by admin on 2017/11/22. */public class A {//日期原创 2017-11-22 13:17:50 · 157 阅读 · 0 评论 -
Java中BigDecimal的8种舍入模式
java.math.BigDecimal 不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值和32位的整数标度(scale)组成。 如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以10的负scale次幂。 因此,BigDecimal表示的数值是(unscaledValue × 10-scale)。 与之相关的还有两个类转载 2017-11-22 20:03:04 · 586 阅读 · 0 评论 -
字符串的getBytes方法
字符集的解码方法:定义多个字符串对象,使用对象调用 getBytes()方法,再通过创建的String类的对象进行字符 集间的转换,转换后有可能会出现乱码,这不是程序的错误package com.company.K;/** * Created by admin on 2017/11/22. */public class StringDemo_06 {//Gb2312<GBk<GB原创 2017-11-22 21:18:43 · 1703 阅读 · 2 评论 -
字符串基础知识
package com.company.K;/** * Created by admin on 2017/2/16. * 字符串问题 */public class ZiFuChuan { public static void main(String[] args) { String s="123"+"456";//开三个堆不好,适合少量数据 Strin原创 2017-11-22 21:20:22 · 224 阅读 · 0 评论 -
Java字符串
public class Learn { public static void main(String[] args) { char a[]={'A','B','C'}; String s=new String(a);//实现把一个字符数组转化成字符串 System.out.println(s); /*包装类*/转载 2017-11-22 21:51:26 · 179 阅读 · 0 评论 -
Hash冲突
哈希表的特点:关键字和它在表中存储位置之间存在一种函数关系。这个函数我们称为为哈希函数。 hash : 翻译为“散列”,就是把任意长度的输入,通过散列算法,变成固定长度的输出,该输出就是散列值。 这种转换是一种压缩映射,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值,由此引出hash冲突。 简单的说就是一种将任意长度的消原创 2018-03-28 15:20:34 · 15177 阅读 · 2 评论 -
HashMap、HashTable和ConcurrentHashMap
HashTable和HashMap区别继承不同 public class Hashtable extends Dictionary implements Map public class HashMap extends AbstractMap implements MapHashtable中的方法是同步的,而HashMap中的方法在缺省 情况下是非同步的。即是说,在多线程应用程序中,不用原创 2018-03-28 17:28:24 · 149 阅读 · 0 评论 -
Java 克隆
克隆如People p=p1; 这不是克隆,而是两个对象指向一个堆。@Test public void test() { Teacher teacher=new Teacher("男"); People p=new People(10,"张三",teacher); People p1=p;//指向一个堆 System.out原创 2018-04-06 13:57:21 · 143 阅读 · 0 评论 -
重写equals
public class Equal { public static void main(String[]args) { Animal a=new Animal(10,"狗"); Animal a1=new Animal(10,"狗"); System.out.print(a.equals(a1)); }}class Animal {原创 2018-04-06 15:18:50 · 150 阅读 · 0 评论 -
Java类型擦除
什么是类型擦除?类型擦除指的是通过类型参数合并,将泛型类型实例关联到同一份字节码上。编译器只为泛型类型生成一份字节码,并将其实例关联到这份字节码上。类型擦除的关键在于从泛型类型中清除类型参数的相关信息,并且再必要的时候添加类型检查和类型转换的方法。 类型擦除可以简单的理解为将泛型java代码转换为普通java代码,只不过编译器更直接点,将泛型java代码直接转换成普通java字节码。原创 2018-04-07 13:36:04 · 926 阅读 · 0 评论 -
线程的使用方法
三种使用线程的方法 实现Runnable接口 实现Callable接口 继承Thread类 三种方法的比较 采用继承Thread类方式创建多线程 劣势:已经继承Thread不能再继承其他父类 优势:编写简单 采用实现Runnable,Callable接口的方式创建多线程 劣势:编程稍微有点复杂,如果需要访问当前线程必须用Threa原创 2018-04-14 21:14:15 · 243 阅读 · 0 评论 -
Java四种元注解
四个元注解分别是:@Target,@Retention,@Documented,@Inherited ,再次强调下元注解是java API提供,是专门用来定义注解的注解,其作用分别如下: @Target 表示该注解用于什么地方,可能的值在枚举类 ElemenetType 中,包括: ElemenetType.CONSTRUCTOR-------------------...原创 2018-05-21 21:38:46 · 351 阅读 · 2 评论