JavaSE
迷失的小小小鸟
这个作者很懒,什么都没留下…
展开
-
List以及arrayList,linkedlist,vector,以及stack的区别
首先List是接口,而后面四个是它的实现类。List在Collection的基础上引入了有序的概念,位置精确;允许相同元素。在列表上迭代通常优于索引遍历。特殊的ListIterator迭代器允许元素插入、替换,双向访问,从列表中的制定位置开始(根据index获取index位置的元素)。未实现get方法。AbstractList实现了List中的一些方法,支持随机访问。lastIndex...原创 2020-03-26 23:06:27 · 449 阅读 · 0 评论 -
浅谈Java集合框架——ArrayList、LinkedList、Vector
数组和集合数组:存储对象的一种容器(可以存储基...原创 2020-03-26 16:59:17 · 133 阅读 · 0 评论 -
SynchronizedList和Vector的区别
Vector是java.util包中的一个类。 SynchronizedList是java.util.Collections中的一个静态内部类。在多线程的场景中可以直接使用Vector类,也可以使用Collections.synchronizedList(Listlist)方法来返回一个线程安全的List。那么,到底SynchronizedList和Vector有没有区别,为什么java...原创 2020-03-26 13:03:45 · 905 阅读 · 0 评论 -
Collections.synchronizedList使用方法
ArrayList众所周知ArrayList是非线程安全的,在多线程的情况下,向list插入数据的时候,可能会造成数据丢失的情况.并且一个线程在遍历List,另一个线程修改List,会报ConcurrentModificationException(并发修改异常)错误.VectorVector是一个线程安全的List,但是它的线程安全实现方式是对所有操作都加上了synchronized...原创 2020-03-26 13:03:10 · 971 阅读 · 0 评论 -
Java - 虚拟机学习笔记2 类加载机制
之前写了篇关于Java虚拟机内存管理方面的学习总结,点击查看,主要总结了Java虚拟机运行时不同数据区域的作用(堆、方法区、栈等等),以及内存分配和内存回收的原理,本篇文章主要介绍Java虚拟机类加载机制,搞懂虚拟机是怎么加载编译后的类文件的。一、Class类文件二、类加载机制三、类加载器四、类的初始化五、总结一、Class类文件Sun公司于1995年5月正式推出...转载 2020-03-24 17:57:46 · 104 阅读 · 0 评论 -
什么是自动垃圾回收
自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制。所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象;而未使用中的对象(未引用对象),则没有被任何指针给指向,因此占用的内存也可以被回收掉。在用 C 之类的编程语言时,程序员需要自己手动分配和释放内存。而 Java 不一样,它有垃圾回收器,释放内存由回收器负责。本文接下来将介绍垃圾回收机制的基...转载 2020-03-24 14:05:17 · 1058 阅读 · 0 评论 -
深入理解Java虚拟机读书笔记2----垃圾收集器与内存分配策略
二 垃圾收集器与内存分配策略1 JVM中哪些内存需要回收? JVM垃圾回收主要关注的是Java堆和方法区这两个区域;而程序计数器、虚拟机栈、本地方法栈这3个区域随线程而生,随线程而灭,随着方法结束或者线程结束内存自然跟随着回收了,因此不需要过多考虑内存分配和回收的问题。2 判断对象是否存活的算法 (1)引用计数算法 基本思路:给对象添加一...转载 2020-03-23 15:47:22 · 124 阅读 · 0 评论 -
OutOfMemoryError(内存溢出)
产生的原因:1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据。2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收。,3,3.代码中存在死循环或循环产生过多重复的对象实体。4.使用的第三方软件中的BUG。5.启动参数内存值设定的过小。重点排查以下几点:1.检查代码中是否有死循环或递归调用。2.检查是否有大循环重复产生新对象实体。3...原创 2020-03-15 21:30:51 · 2080 阅读 · 0 评论 -
Java内部类的经典总结
一、 含义在Java编程语言里,程序是由类(class)构建而成的。在一个类的内部也可以声明类,我们把这样的类叫做内部类。二、 作用实现了更好的封装,我们知道,普通类(非内部类)的访问修饰符不能为private或protected,而内部类可以。当我们将内部类声明为private时,只有外部类可以访问内部类,很好地隐藏了内部类。内部类可以继承(extends)或实现(impl...原创 2020-03-15 00:44:05 · 85 阅读 · 0 评论 -
Java8特性详解 lambda表达式 Stream
1.lambda表达式Java8最值得学习的特性就是Lambda表达式和Stream API,如果有python或者javascript的语言基础,对理解Lambda表达式有很大帮助,因为Java正在将自己变的更高(Sha)级(Gua),更人性化。--------可以这么说lambda表达式其实就是实现SAM接口的语法糖。lambda写的好可以极大的减少代码冗余,同时可读性也好过冗长的内部...转载 2020-03-15 00:11:10 · 395 阅读 · 0 评论 -
理解、学习与使用 JAVA 中的 OPTIONAL
从 Java 8 引入的一个很有趣的特性是Optional 类。Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都非常了解的异常。本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。Optional 是 Java 实现函数式编程的强劲一步,并且帮助在范式中实现。但...转载 2020-03-13 21:13:20 · 77 阅读 · 0 评论 -
深入理解Java接口和抽象类
对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。一.抽象类在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为...原创 2020-03-12 23:33:14 · 88 阅读 · 0 评论 -
手把手实例对比String、StringBuilder字符串的连接效率及StringBuilder和StringBuffer线程安全的比较
一、字符串连接的效率问题使用String连接字符串时为什么慢?小知识点java中对数组进行初始化后,该数组所占的内存空间、数组长度都是不可变的。创建一个字符串,为字符串对象分配内存空间,会耗费掉一定的时间(CPU)与空间(内存)代价,作为最基础的数据类型,大量频繁的创建字符串,极大程度地影响程序的性能。过多无用的中间对象每次连接字符串时都会创建一个新的String对象,随着...原创 2020-03-12 15:06:12 · 161 阅读 · 0 评论 -
Java 异常处理的误区和经验总结
本文着重介绍了 Java 异常选择和使用中的一些误区,希望各位读者能够熟练掌握异常处理的一些注意点和原则,注意总结和归纳。只有处理好了异常,才能提升开发人员的基本素养,提高系统的健壮性,提升用户体验,提高产品的价值。误区一、异常的选择图 1. 异常分类图 1 描述了异常的结构,其实我们都知道异常分检测异常和非检测异常,但是在实际中又混淆了这两种异常的应用。由于非检测异常使用方便,很...原创 2020-03-11 16:53:02 · 640 阅读 · 0 评论