
Java
文章平均质量分 76
冷面寒枪biu
怕什么真理无穷, 进一寸有一寸的欢喜
展开
-
详解String、StringBuffer和StringBuilder的区别和应用场景
String、StringBuffer和StringBuilder的区别 String:字符串常量 。StringBuffer 与 StringBuilder是字符缓冲变量。StringBuffer 与 StringBuilder 中的方法和功能完全是等价的,只是StringBuffer中的方法大都采用了synchronized 关键字进行修饰,因此是线程安全的,而StringBuilder没有这个修饰,可以被认为是线程不安全的。StringBuilder 是在JDK1.5才加入的。jdk的实现原创 2017-02-28 17:07:19 · 1662 阅读 · 0 评论 -
对Java反射机制的理解(1)
概念和用处 Java 程序中的很多对象在运行时都会出现两种类型:编译时类型和运行时类型。例如:person p = new Student(); 产生的p变量在编译时的类型为Person,运行时的类型为Student;假设在运行时接受到一个对象,改对象编译时类型是Object,但程序又需要调用该对象运行时的方法。解决方法: (1)假设在编译时和运行时都完全知道类型的具体信息,直接使用instanceof 云算法进行判断,再利用强制类型转换成运行时的变量; (2)假设编译时根本原创 2017-02-25 15:47:09 · 504 阅读 · 4 评论 -
详解重写equals()方法就必须重写hashCode()方法的原因
重写的作用: 如果重写(用于需求,比如建立一个Person类,比较相等我只比较其属性身份证相等就可不管其他属性,这时候重写)equals,就得重写hashCode,和其对象相等保持一致。如果不重写,那么一定保持一致。 1. 重写equals()方法就必须重写hashCode()方法主要是针对HashSet和Mao集合类型。集合框架只能存入对象(对象的引用(基本类型数据:自动装箱))。 在向HashSet集合中存入一个元素时,HashSet会调用该对象(存入对原创 2017-02-25 10:04:08 · 62535 阅读 · 13 评论 -
Java的四种引用类型与ReferenceQueue
Java垃圾回收算法中,判断一个引用对象是否还存活是很重要的。Java有四种引用类型:分别为:强引用,软引用,弱引用,虚引用。 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高原创 2017-06-30 15:38:33 · 947 阅读 · 0 评论 -
理解null关键字及集合或字符串需先判断null再判断长度的原因
Java中,null是一个关键字,代表不确定的对象。null只能用于赋给引用类型变量,不可以赋给基本数据类型变量。类成员引用变量默认为null。但对于非类成员变量,不能只声明定义,不进行初始化,但后边的代码中使用了它,这时候,就会进行报错。下边代码:原创 2017-05-31 21:39:05 · 2379 阅读 · 4 评论 -
深入分析ThreadLocal
在JDK1.2 版本中,提供了java.lang.ThreadLocal。它为解决多线程并发问题提供了一种新的思路,有其特定的应用场景。1. 如何理解ThreadLocal ThreadLocal,很多人叫它线程本地变量。它为每个线程都创建一个副本,每个线程访问自己内部的副本变量。不会影响其他线程的副本变量。变量是同一个,但是每个线程都使用此变量的一个新的副本,从而为多线程环境常出现的并原创 2017-05-30 20:25:12 · 355 阅读 · 0 评论 -
深入理解Java类加载机制(2)--类加载器及双亲委派模型
当一个 JVM启动的时候,Java缺省开始使用如下三种类型类装入器: 启动类加载器:Bootstrap ClassLoader,负责加载存放在JDK\jre\lib(JDK代表JDK的安装目录)下,或被-Xbootclasspath参数指定的路径中的,并且能被虚拟机识别的类库(如rt.jar,所有的java.*开头的类均被Bootstrap ClassLoader加载)。 启动类加载器是无法被Java程序直接引用的。因为:Bootstrap ClassLoader是C++编写的(Hotpot虚拟原创 2017-02-24 20:32:27 · 538 阅读 · 1 评论 -
深入理解Java类加载机制(1)
在开发过程中,经常会遇到Java.lang.ClassNotFoundExcetpion这个异常,这就涉及了类加载机制。 类加载的基本概念 类的加载是指将类的.class文件读入到内存(方法区)中,然后在堆区创建一个Java.lang.Class 对象(Java反射机制)。类最终加载的是位于堆区的Class对象,其封装了类的数据结构。类的加载可以在类首次主动使用 时加载它,JVM规范允许类加载器在预料某个类将要被使用时就预先加载它,如果在预先加载的过程中遇到了.class文件缺失或存在错误原创 2017-02-23 10:01:25 · 378 阅读 · 0 评论 -
对JDBC驱动注册--DriverManager.registerDriver和 Class.forName()的理解
对JDBC驱动注册--DriverManager.registerDriver和 Class.forName()的理解第一种方式,相对比较好理解,就是先创建数据库驱动,然后调用registerDriver()方法完成注册。第二种方法是利用发射机制来完成的,直接看的话,我们会想 Class.forName(driverClass) 只能帮助我们得到Driver的Class对象啊,为什么会帮我们完成注册了呢。从上边对Driver()的API的查阅,API要求:在加载某一 Driver 类时,它应该创建自己的实原创 2017-02-21 20:21:26 · 11486 阅读 · 1 评论 -
初识Java SPI思想
最近在找实习,博客没有及时更新。最近了解了下一下SPI思想,记录一下。 spi的全称是:Service Provider Interface,也就是服务提供接口。我们都知道,我们在开发提倡面向接口开发,在运行期动态指定接口的具体的实现。在Java中,我们可以用反射,IOC(底层也是基于反射机制)来实现动态指定服务的具体提供者,从而达到解耦的目的,不在代码中写死了,从而达到在不修改...原创 2018-04-19 22:18:01 · 2852 阅读 · 0 评论