
java
文章平均质量分 54
零下十五度w
这个作者很懒,什么都没留下…
展开
-
Java中ArrayList、Vector、LinkedList三者的异同点
一、ArrayListArrayList是一个可以处理变长数组的类型,这里不局限于“数”组,ArrayList是一个泛型类,可以存放任意类型的对象。顾名思义,ArrayList是一个数组列表,因此其内部是使用一个数组来存放对象的,因为Object是一切类型的父类,因而ArrayList内部是有一个Object类型的数组类存放对象。ArrayList类常用的方法有add()、clear()、get()原创 2017-08-16 14:58:46 · 204 阅读 · 0 评论 -
Java中HashMap的实现原理
一、Java中的hashCode和equals1、关于hashCodehashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的 如果两个对象相同,就是适用于equals(java.lang.Object) 方法,那么这两个对象的hashCode一定要相同 如果对象的equals方法被重写,那么对象的...转载 2017-11-03 18:07:58 · 260 阅读 · 0 评论 -
Java中HashMap,LinkedHashMap,TreeMap的区别
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据原创 2017-09-04 11:06:04 · 279 阅读 · 0 评论 -
Java中保留两位小数的方法
public class format { 5 double f = 111231.5585; 6 public void m1() { 7 BigDecimal bg = new BigDecimal(f); 8 double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_转载 2017-12-13 18:11:08 · 1559 阅读 · 0 评论 -
Java中Volatile关键字详解
本文转自:https://www.cnblogs.com/chengxiao/p/6528109.html一、基本概念先补充一下概念:Java 内存模型中的可见性、原子性和有序性。可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须使转载 2018-03-08 13:54:31 · 154 阅读 · 0 评论 -
Java中对象的浅拷贝与深拷贝
先了解一下什么是浅拷贝和深拷贝,简单来说: 1、浅拷贝,就是增加一个引用,实际还是指向原来的数据内存区。 2、深拷贝,不仅新增一个引用,并且会申请一块内存,引用指向新的内存区。或者这样理解 1、浅拷贝:浅拷贝只是单纯的对于对象的拷贝,对象属性对于其它对象的引用并没有进行拷贝(也就是说浅拷贝创建的对象和原来对象指向不同的地址空间,但是对象属性里面对其它对象的引用【引用属性】指向的还是同一原创 2018-02-22 15:51:19 · 225 阅读 · 0 评论 -
生产者,消费者Java实现
1 概述生产者消费者问题是多线程的一个经典问题,它描述是有一块缓冲区作为仓库,生产者可以将产品放入仓库,消费者则可以从仓库中取走产品。解决生产者/消费者问题的方法可分为两类:采用某种机制保护生产者和消费者之间的同步;在生产者和消费者之间建立一个管道 第一种方式有较高的效率,并且易于实现,代码的可控制性较好,属于常用的模式。第二种管道缓冲区不易控制,被传输数据对象不易于封装等,实用...转载 2018-03-02 15:58:24 · 1021 阅读 · 0 评论 -
海量数据的处理方法
转自 http://www.cnblogs.com/subsir/articles/2590122.html1)海量数据处理的基本思想:分治(这种思想在日常生活中无处不在,蚂蚁都知道,一次运不完,分多次运)2)海量数据处理的基本手段:切割和负载均衡(切割是降低规模,负载均衡是人海战术,人多力量大,同样,机器多也计算能力强)3)海量数据处理的可靠性保障:多存几份(再好的机器也会坏,鸡蛋...转载 2018-03-05 11:44:28 · 227 阅读 · 0 评论 -
Java虚拟机的直接引用和符号引用
Java类从加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括,加载 ,验证 , 准备 , 解析 , 初始化 , 卸载 ,总共七个阶段。其中验证 ,准备 , 解析 统称为连接。而在解析阶段会有一个步将常量池当中二进制数据当中的符号引用转化为直接引用的过程。符号引用 :符号引用以一组符号来描述所引用的目标。符号引用可以是任何形式的字面量,只要使用时能无歧义地定位到目标即可,符号引用和虚拟机原创 2018-05-09 10:04:11 · 568 阅读 · 0 评论 -
Java中synchronized 修饰在 static方法和 非static方法的区别
Java中synchronized是用来表示同步的,synchronized可以用来修饰一个方法(static方法和非static方法),也可以用来修饰一段代码块; 看代码: public synchronized void x() throws InterruptedException { for (int i = 0; i < 5; i++) { ...原创 2018-05-21 10:45:26 · 253 阅读 · 0 评论 -
Java对一维数组倒叙排列
public class ReversTest { public static void main(String[] args) { int[] arr = { 25, 4, 15, 7, 8 }; System.out.println("===原数组=======" + Arrays.toString(arr)); ReversTest....原创 2018-05-21 11:22:18 · 2080 阅读 · 0 评论 -
Java中wait和sleep方法的区别
两者的区别这两个方法来自不同的类分别是Thread和Object 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法(锁代码块和方法锁)。 wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用(使用范围) sleep必须捕获异常,而wait,notify和notifyAll不...转载 2018-05-21 15:03:00 · 283 阅读 · 0 评论 -
Java类加载器概述
1.类的加载过程 JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤,如下图所示:1) 装载:查找并加载类的二进制数据;2)链接:验证:确保被加载类的正确性;准备:为类的静态变量分配内存,并将其初始化为默认值;解析:把类中的符号引用转换为直接引用;3)初始化:为类的静态变量赋予正确的初始值;&...转载 2017-10-20 09:43:45 · 239 阅读 · 0 评论 -
Java垃圾回收机制
一.如何确定某个对象是“垃圾”?既然垃圾收集器的任务是回收垃圾对象所占的空间供新的对象使用,那么垃圾收集器如何确定某个对象是“垃圾”?以及通过什么方法判断一个对象可以被回收了?在java中是通过引用来和对象进行关联的,也就是说如果要操作对象,必须通过引用来进行。那么很显然一个简单的办法就是通过引用计数来判断一个对象是否可以被回收。 1. 引用计数算法给对象中添加一个引用计数器,每当有一个地方引用它原创 2017-11-10 13:31:28 · 419 阅读 · 0 评论 -
Java当中的四种引用
强引用,软引用,弱引用,虚引用.不同的引用类型主要体现在GC上:强引用:如果一个对象具有强引用,它就不会被垃圾回收器回收。即使当前内存空间不足,JVM也不会回收它,而是抛出 OutOfMemoryError 错误,使程序异常终止。如果想中断强引用和某个对象之间的关联,可以显式地将引用赋值为null,这样一来的话,JVM在合适的时间就会回收该对象软引用:在使用软引用时,如果内存的空间足够,软引用就原创 2017-08-17 09:36:11 · 506 阅读 · 0 评论 -
关于JVM和(堆和栈的区别)
JVM特性平台无关性. Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码)原创 2017-08-16 17:11:17 · 1068 阅读 · 0 评论 -
Java不可变对象
一、不可变类简介不可变类:所谓的不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值。如JDK内部自带的很多不可变类:Interger、Long和String等。可变类:相对于不可变类,可变类创建实例后可以改变其成员变量值,开发中创建的大部分类都属于可变类。下面的理解可能会易懂一些:概念:不可变类的意思是创建该类的实例后,该实例的属性是不可改变的。Java中的8个包装类和String类都是原创 2017-09-04 14:45:50 · 262 阅读 · 0 评论 -
String,StringBuffer,StringBuilder的区别
java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题。现在总结一下,看看他们的不同与相同。1.可变与不可变String类中使用字符数组保存字符串,如下就是,因为有“final”修饰符,所以可以知道string对象是不可变的。 private final char value[];StringBuild原创 2017-09-12 17:46:58 · 184 阅读 · 0 评论 -
java作用域public protected private,以及不写时的区别
下面我简单的画一张表来说明问题:modifiers作用域(可见)当前类同包子孙类其他包public√ √ √ √protected √ √ √×default(friendly) √ √××private √×××不写的时候默认为friendly 也就是default默认的。原创 2017-09-12 21:34:34 · 244 阅读 · 0 评论 -
Java Socket编程和TCP/IP协议
Socket编程一、网络基础知识1、两台计算机间进行通讯需要以下三个条件: IP地址、协议、端口号2、TCP/IP协议: 是目前世界上应用最为广泛的协议,是以TCP和IP为基础的不同层次上多个协议的集合,也成TCP/IP协议族、或TCP/IP协议栈 TCP:Transmission Control Proto...转载 2017-11-07 14:53:59 · 3120 阅读 · 2 评论 -
Java中==和equal有什么区别
先来看一段代码:String str1 = new String("str"); String str2 = new String("str"); System.out.println("==比较 :" + (str1 == str2)); System.out.println("equal比较:" + str1.equals(str2));原创 2017-11-17 14:42:19 · 1240 阅读 · 0 评论 -
Java中静态变量和实例变量的区别?&和&&
静态变量和实例变量的区别?在语法定义上的区别:静态变量前要加static关键字,而实例变量前不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码文件,不用创建任何实例象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后原创 2017-11-17 16:27:48 · 459 阅读 · 0 评论 -
Java中抽象类和接口的区别
接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final (这里需要说一点,既然一个变量被final修饰了,那么这个变量就是一个常量!!!!!变量必须初始化成常量!!!!!)接口和抽象类的区别接口和抽象类还是有一定区别的,接口可以看做是抽象类的一种更转载 2017-11-05 11:07:07 · 792 阅读 · 0 评论 -
java中面向对象思想和三大特性的理解
java是一门纯粹的面向对象的语言。面向对象这种程序设计模式它将现实世界中的一切事物都看作是对象,例如,一个人是一个对象,汽车、飞机、小鸟等等,都是对象;它强调从对象出发,以对象为中心用人类的思维方式来认识和思考问题。每个对象都具有各自的状态特征(也可以称为属性)及行为特征(方法),java就是通过对象之间行为的交互来解决问题的。面向对象: 1、面向对象面向对象是一种程序设计思想,计算机程序的设计转载 2017-11-05 11:20:12 · 1141 阅读 · 0 评论 -
Java内存区域和内存模型
JVM的内存区域划分由于Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。在讨论JVM内存区域划分之前,先来看一下Java程序具体执行的过程:如上图所示,首先Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行。在整个程序执行过转载 2018-05-08 15:59:28 · 357 阅读 · 0 评论