Java
文章平均质量分 86
fengjie_123
巅峰
不在一万英尺的边缘
而在信念与汗水的狭缝之间
展开
-
初始化引用
如果想初始化这些引用,可以在代码中的这些位置中进行:1,在定义对象的地方,这意味着他们总是能够在构造器被调用之前被初始化;2,在类的构造器中;3,就在正要使用的这些对象之前,这种方式被成为惰性初始化。在生成对象不值得及不必每次都生成对象的情况下,这种方式可以减少额外的负担;4,使用实例初始化。原创 2015-09-09 17:47:11 · 1026 阅读 · 0 评论 -
JVM运行时的数据区
理解JVM运行时的数据区是Java编程中的进阶部分。我们在开发中都遇到过一个很头疼的问题就是OutOfMemoryError(内存溢出错误),但是如果我们了解JVM的内部实现和其运行时的数据区的工作机制,那么前面的问题就会迎刃而解。在这片文章中,我们将简单了解JVM中有哪些运行时数据区以及这些数据区的工作机制。程序计数器 (Program Counter (PC) Register) JVM栈 (原创 2016-10-07 17:00:52 · 218 阅读 · 0 评论 -
Interface与abstract类的区别
1、 抽象类在java语言中所表示的是一种继承关系,一个子类只能存在一个父类,但是可以存在多个接口。 2、 在抽象类中可以拥有自己的成员变量和非抽象类方法,但是接口中只能存在静态的不可变的成员数据(不过一般都不在接口中定义成员数据),而且它的所有方法都是抽象的。 3、抽象类和接口所反映的设计理念是不同的,抽象类所代表的是“is-a”的关系,而接口所代表的是“like-a”的关系。抽象类和接口是原创 2016-05-09 20:11:55 · 284 阅读 · 0 评论 -
杂记
字符串拼接java中的字符串在做拼接的时候是不会产生中间对象的。因为当Java编译器遇到字符串拼接的时候,会创建一个StringBuilder对象,后面的拼接,实际上是调用StringBuilder对象的append方法。内部类可以访问外部类中的私有变量的原因在内部类构造的时候,会将外部类的引用传递进来,并且作为内部类的一个属性,所以内部类会持有一个其外部类的引用。非静态内部类导致的内存泄露在Act原创 2016-05-18 20:28:02 · 278 阅读 · 1 评论 -
HashMap的实现原理
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。数组和链表的区别主要体现在以下几个方面: 1)逻辑结构:数组必须事先定义固定的长度(元素个数),不能适应数据动态地递增的情况,即在使用数组之前,就必须对数组的大小进行确定。当数据增加时,可能超出原来定义的元素个数;当数据减少时,造成内存浪费。数组中插入、删除数据项时,需要移动其他数据项。而链表采用动原创 2016-05-08 10:15:37 · 608 阅读 · 0 评论 -
Java锁机制
一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在java里边就是拿到某个同步对象的锁(一个对象只有一把锁); 如果这个时候同步对象的锁被其他线程拿走了,他(这个线程)就只能等了(线程阻塞在锁池等待队列中)。 取到锁后,他就开始执行同步代码(被synchronized修饰的代码);线程执行完同步代码后马上就把锁还给同步对象,其他在锁池中等待的某个线程就可以拿到锁执转载 2016-05-12 21:48:14 · 289 阅读 · 0 评论 -
深入理解Java:类加载机制与反射
一、Java类加载机制 1.概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java原创 2016-04-09 11:35:36 · 580 阅读 · 0 评论 -
Java并发编程中实现原子操作
引言 原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为”不可被中断的一个或一系列操作” 。在多处理器上实现原子操作就变得有点复杂。本文让我们一起来聊一聊在Intel处理器和Java里是如何实现原子操作的。 术语定义 处理器如何实现原子操作 32位IA-32处理器使用基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作。 3原创 2016-04-09 09:55:36 · 401 阅读 · 0 评论 -
java中volatile关键字的含义
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized 和 块语句,在多线程原创 2016-04-07 11:28:58 · 278 阅读 · 0 评论 -
Java的反射机制
以下是我对java的反射机制所产生的一些感悟,希望各位童鞋看到失误之处不吝指出一,WHAT?JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。二,HOW?首先,你要获得类对象(注意一下类对象和类的对象的区别,不知道的嘛,原创 2015-11-03 22:46:14 · 312 阅读 · 0 评论 -
scheduleAtFixedRate 与 scheduleWithFixedDelay 区别
scheduleAtFixedRate 与 scheduleWithFixedDelay 区别 关于上述话题,仅以代码说明package day1013_Timer;import java.text.SimpleDateFormat;import java.util.Date;import java.util.concurrent.Executors原创 2015-10-14 19:36:21 · 1450 阅读 · 0 评论 -
初始化基类
导出类就像是一个与基类具有相同接口的新类,或许还会有有一些额外的方法和域。但继承并不只是复制基类的接口。当创建了一个导出类的对象时,该对象包含了一个基类的子对象。这个子对象与你用基类直接创建的对象是一样的。二者区别在于,后者来自于外部,而基类子对象被包装在导出类对象的内部。当然,对基类子对象的正确初始化也是至关重要的,而且也仅有一种方法来保证这一点:在构造器中调用基类构造器来执行初始化,而基类原创 2015-09-09 18:05:51 · 961 阅读 · 0 评论 -
eclipse使用小技巧
•Ctrl+1:快捷修复•Ctrl+D:快捷删除•Shift+enter:快捷换行(其中一行的太长)•Ctrl+F11:快速运行•Ait+上下键:快速移动•Ctrl+alt+上下键:快速复制•Ctrl+alt+D:快速删除•Alt+/:补全代码•Ctrl+M:放大工作区•Ctrl+/:注释/接触注释原创 2015-05-19 00:29:36 · 299 阅读 · 0 评论