javaSE
ldd儆儆
这个作者很懒,什么都没留下…
展开
-
Java值传递和引用传递
值传递和引用穿点参数类型:形参:方法被调用时需要传递进来的参数,如func(int m) 它猪油在func1调用期间m才有意义,也就是会被分配内存空间,在方法func1执行完成后,a就会被销毁释放空间,也就是不存在了实参:方法被调用时是传入的实际值,它在被调用前就已经是初始化并且在方法被调用时传入值传递与引用传递值传递:在方法被调用时,实参通过形参把它的内容副本传入方法内部,此时形参接收到的内容是实参值的一个拷贝,因此在方法内对形参的任何操作,都仅仅是对这个副本的操作,不影响原始值的内容,值原创 2022-01-05 22:00:56 · 395 阅读 · 0 评论 -
二叉树的递归和非递归遍历
TreeNode类Class TreeNode{ TreeNode left; TreeNode right; int val; public TreeNode(int val){ this.val = val; }}递归遍历//中序遍历public static void inOrder(TreeNode root) { if (root == null) ...原创 2020-04-05 17:25:22 · 325 阅读 · 0 评论 -
Java的四种引用方式
强引用是四种引用方式生命周期最长的一个,任何情况下不会被JVM回收,如果JVM内存不足,则会报出OutOfMemory异常,如果想要终止强引用和某个对象的关联,可以显式地将引用赋值为null,这样垃圾回收器就会在合适的时间回收该对象软引用使用软引用时,只有当内存空间不足的情况下,才会被垃圾回收器回收弱引用弱引用和强引用,软引用相比生命周期更短,垃圾回收器一旦发现,就会...原创 2020-03-19 15:08:40 · 258 阅读 · 0 评论 -
Java的排序方法Comparable和Comparator
自然排序ComparableString实现Comparable的方法实现逻辑主要是:以长度最小的字符串长度进行循环遍历判断两个字符串的每个字符,相等继续遍历,如果不相等,则返回两个字符串相减的数如果 两个字符串分别为 12 13 2<3 返回 2-3=-1如果两个字符串相等,或者两个字符串长度不同,但是有共同的部分,如 12 1234则会返回第一个字符串和第二个字符串相减的结...原创 2020-03-18 10:57:08 · 397 阅读 · 0 评论 -
Java 集合 删除异常
ArrayList<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(2);list.add(4);如果只是删除2这个元素,那么下面这个操作则仅仅只会删除索引为1的那个2的元素,原因很简单,由于ArrayList是动态数组,删除索引为1的2之后,索引为3和4的元素自动前移,但是re...原创 2020-01-15 15:25:35 · 665 阅读 · 0 评论 -
LinkedListed的add(index,element)源码解析
LinkedList<Integer> list = new LinkedList<>(); list.add(0,1); list.add(1,2); list.add(1,3); list.add(0,4); list.add(2,5); 2->3->5-1->4public void add(int ...原创 2019-12-27 19:19:52 · 808 阅读 · 0 评论 -
list值指针应用问题
今天弄了一个回溯的算法,之后有个list添加的问题一直没弄懂,当局有点迷,事后发现就是指针引用ArrayList<Integer> list = new ArrayList<>();ArrayList<List<Integer>> lists = new ArrayList<>();lists.add(list);lists.a...原创 2019-12-26 11:29:33 · 287 阅读 · 0 评论 -
JDK7HashMap全面解读
目录HashMap的变量Hash构造函数Put方法inflateTable方法putForNullKey方法Hash方法indexFor方法addEntry方法resize方法transfer方法HashMap的变量//默认最小初始化数组的容量static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 //最大组...原创 2019-12-21 18:08:52 · 388 阅读 · 0 评论 -
单例模式的七种写法
在我们平常见的单例模式中,常见的写法无法就是懒汉式,饿汉式,双重检测锁式,静态内部类式以及枚举单例安全式但是我们最常见的就是懒汉式和饿汉式,也是最为简单的1.饿汉式,开始就创建对象,缺点:如果对象迟迟不使用,会浪费内存空间,并且不能延迟加载,加载类的速度较慢(初始化时候就必须加载创建对象)有点:线程安全,调用对象速度块(没有加锁等)public class SingleInstance ...原创 2019-12-17 16:39:28 · 254 阅读 · 0 评论 -
HashMap的resize方法
final Node<K,V>[] resize() { Node<K,V>[] oldTab = table; int oldCap = (oldTab == null) ? 0 : oldTab.length; int oldThr = threshold; int newCap, newThr = 0;//先判断之前的容器容量是否大于...原创 2019-12-16 16:17:27 · 590 阅读 · 0 评论 -
JDK1.8 HashMap源码解析
普通常量//保存Node<K,V>链表的数组transient Node<K,V>[] table;//由Node<K,V>节点构成的Set集合transient Set<Map.Entry<K,V>> entrySet;//hashmap存储元素的数量transient int size;//记录hashmap结构性变化的...原创 2019-12-11 18:26:33 · 120 阅读 · 0 评论 -
Java中常见的copy数组方法
1.arraycopyint [] oldArray = {1,2,3,4,5};int [] dest =new int[5];System.arraycopy(oldArray,2,dest,0,3);输出: 3 4 5 0 0 int [] dest =new int[5];System.arraycopy(oldArray,2,dest,1,3);输出:0 3 4 5 0...原创 2019-12-11 14:14:03 · 455 阅读 · 0 评论 -
集合安全
我们一般情况下使用集合,都是在单线程的情况下,但是如果是多线程呢?会出现什么样的结果呢?下面的代码,在多线程的情况下输出报出异常Exception in thread “6” java.util.ConcurrentModificationException原因在于并发情况下,多个线程会争抢资源,以至于导致数据修改不一致的情况引发并发修改异常。举个例子:就是我们过一个只能一个人通过的小道...原创 2019-12-10 19:19:23 · 319 阅读 · 0 评论 -
HashMap的put源码分析
/** * Implements Map.put and related methods. * * key的hash值 * @param hash hash for key * 插入的key * @param key the key * 插入的value * @param value the value to put * 一个布尔值,判断是否改变当前的值,如果为true,则不改...原创 2019-12-10 11:51:26 · 147 阅读 · 0 评论 -
"\\s+"的作用
正则表达式中\s匹配任何空白字符,包括空格、制表符、换页符等等, 等价于[ \f\n\r\t\v]\f -> 匹配一个换页\n -> 匹配一个换行符\r -> 匹配一个回车符\t -> 匹配一个制表符\v -> 匹配一个垂直制表符而“\s+”则表示匹配任意多个上面的字符。另因为反斜杠在Java里是转义字符,所以在Java里,我们要这么用“\s+”.注:...原创 2019-12-08 15:40:50 · 11255 阅读 · 2 评论 -
Java assert的使用
今天看来Integer.valueOf里面的IntegerCache.cache的源码出现了assert,当时不是很理解,Java的 assert是JSE1.4发布的,后跟一个表达式,主要是判断此表达式是否false,如果是false则报出异常,不会进行下面的步骤,如果true,则继续执行。在对assert测试之前,要在上加上-enableassertions或者-ea(最好)由于num...原创 2019-11-22 18:56:20 · 472 阅读 · 0 评论 -
使用迭代器进行比较两个集合之间的非共同元素
ArrayList list1 = new ArrayList<>();list1.add(“1”);list1.add(“1”);list1.add(“1”);list1.add(“1”);list1.add(“2”);ArrayList list2 = new ArrayList<>();list2.add(“1”);list2.add(“1”);li...原创 2019-11-01 20:26:13 · 335 阅读 · 1 评论 -
java集合Set剖析
前言下图为java集合架构图,在上一篇博客java集合详细解析List在上一篇博客[java集合详细解析List]已经讲解了List集合,这篇博客主要讲解Set集合Set集合介绍1.Set和List集合一样,同样继承了Collection接口,和Collection方法差不多,并没有在功能上进行扩充,只是在比Collection】更为“苛刻”了。2.特点1.无序,可重复3.Set接...原创 2019-12-17 10:27:46 · 113 阅读 · 0 评论 -
java集合详细解析List
前言1.对于java来说,集合操作是非常重要的,在之后的项目过程当中应用的十分广泛,下面是java主要集合的架构图:2.集合与数组的比较数组的不足:1、数组的长度必须提前指定,而且一旦指定不能更改2、数组只能保存相同类型的元素集合:1、集合在使用时,长度不用指定,而且可以实现自动扩容或截断2、集合没有指定泛型之前,默认保存的是任意类型的元素(Object类型) 指定泛型...原创 2019-04-12 21:15:56 · 1012 阅读 · 0 评论