PRELOADER

主页

5/5/2019 —— 

static 关键字主要有以下四种使用场景 修饰成员变量和成员方法 静态代码块 修饰类(只能修饰内部类) 静态导包(用来导入类中的静态资源,1.5之后的新特性) 修饰成员变量和成员方法(常用)  被 static 修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享,可以并且建议通过类名调用。被static 声明的成员变量属于静态成员变量,静态变量 存放在 Jav

展开全文

前言  Java 反射机制是指在运行状态中,对于任意一个类,都能够获得这个类的所有属性和方法,对于任意一个对象都能够调用它的任意一个属性和方法。这种在运行时动态的获取信息以及动态调用对象的方法的功能称为Java 的反射机制。 反射机制的作用  反射机制的目的就是要增加程序的灵活性,它能够有效的避免将程序写死在我们的代码中。举个例子,不使用反射:实我们例化一个

展开全文

简介Java并发编程这个领域中synchronized关键字一直都是元老级的角色,很久之前很多人都会称它为“重量级锁”。但是,在JavaSE 1.6之后进行了主要包括为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁以及其它各种优化之后变得在某些情况下并不是那么重了。 变量安全性“非线程安全”问题存在于“实例变量”中,如果是方法内部的私有变量,则不存在“非线程安全”问题,所得结果也就是“

展开全文

进程和多线程简介进程进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。 线程线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也

展开全文

不同创建方式比较1234String str1 = "abcd";String str2 = new String("abcd");System.out.println(str1==str2);//false第一种方式是在常量池中拿对象,第二种方式是直接在堆内存空间创建一个新的对象 连接表达式 + 只有使用引号包含文本的方式创建的String对象之间使用“+”连接产生的新对象才会被加入字符串池中。

展开全文

字符串常量池的设计思想  字符串的分配和其他的对象分配一样耗费高昂的时间与空间代价,作为最基础的数据类型大量频繁的创建字符串极大程度地影响程序的性能。JVM为了提高性能和减少内存开销,在实例化字符串常量的时候进行了一些优化,为字符串开辟一个字符串常量池类似于缓存区。创建字符串常量时,首先坚持字符串常量池是否存在该字符串若存在该字符串返回引用实例,不存在则实例化该字符串并放入池中

展开全文

  StringBuffer和StringBuilder都是可变的字符串,都继承了一个抽象的字符串父类:AbstractStringBuilder。 线程安全StringBuffer:线程安全,StringBuilder:线程不安全。因为StringBuffer的所有公开方法都有synchronized修饰,而 StringBuilder 并没有 synchronized 修饰

展开全文

垃圾对象的判断  判断对象为垃圾对象有两种方法:引用计数法,可达性分析法,普遍是的是可达性分析法 可达性分析法的实现原理:   定义gcroot一直往下找,如果能找到对象,证明该对象在使用,如果找不到该对象,标记该对象应该回收。上图中栈作为gcroot只是其中一种情况,可作为gcroots的对象有虚拟机栈(栈帧中的局部变量表),方法区的类属性所引用的对象,

展开全文