java笔记
文章平均质量分 65
给自己的9999封信
有很多很多问题只能自己去寻找答案
展开
-
文章标题
单例类:一个类只能有一个实例,应用private修饰该类的构造器,不允许其他类任意创建该类的实例,同时应该提供一个public 方法返回该类的实例,该public 方法必须是static 的,因为之前未创建类的实例,还应用一个变量缓存该类实例,判断是否已创建过该类实例,因为该成员变量必须被上面的静态方法访问,所以必须用static修饰符。 具体代码例子: class Person{原创 2016-04-15 10:10:40 · 228 阅读 · 0 评论 -
ReentrantLock重入锁
1使用案例public class ReenterLock implements Runnable{ public static ReentrantLock lock=new ReentrantLock(); public static int i=0; @Override public void run() { for (int j = 0; j <原创 2017-07-21 22:18:57 · 281 阅读 · 0 评论 -
方法分派
方法调用: 确定被调用方法的版本 解析:在类加载的解析阶段,所有方法调用中的目标在Class文件里面都是一个常量池中的符号引用,在类加载的解析阶段,会将其中一部分符号引用转化为直接引用(方法在实际运行时内存布局中的入口地址)。前提:编译期可知,运行期不可变,调用代码在程序代码写好编译器进行编译时就确定下来,静态方法、私有方法。 5条方法调用字节码指令: invokestatic:调用静态方法原创 2017-07-21 21:17:09 · 744 阅读 · 0 评论 -
java静态类型与动态类型
静态类型检查:基于程序的源代码来验证类型安全的过程; 动态类型检查:在程序运行期间验证类型安全的过程; Java使用静态类型检查在编译期间分析程序,确保没有类型错误。基本的思想是不要让类型错误在运行期间发生。class A { A me() { return this; } public void doA() { System.out.pri转载 2017-06-13 09:51:13 · 3345 阅读 · 0 评论 -
方法重写原则
方法的重写规则 1)参数列表必须完全与被重写方法的相同 2)返回类型必须完全与被重写方法的返回类型相同;(备注:这条信息是标准的重写方法的规则,但是在java 1.5 版本之前返回类型必须一样,1.5(包含)j 版本之后ava放宽了限制,返回类型必须小于或者等于父类方法的返回类型 )。才有了 子类返回类型小于等于父类方法返回类型。在java里面这个怎么样都是正确的,请小伙伴谨记。 3)访问权转载 2017-06-21 22:00:40 · 2411 阅读 · 1 评论 -
Java类型信息
运行时识别对象和类的信息的两种方式:RTTI(Run-Time Type Identification)“反射“机制 RTTI的含义就是运行时识别一个对象的类型,类型信息是由Class对象表示的,每个Java里面的类都对应一个Class对象(在编写并且编译后),这个对象被保存在这个类的同名class文件里。为了生成Class对象,运行这个程序的Java虚拟机将使用“类加载器”子系统。 Cla转载 2017-06-21 21:38:13 · 357 阅读 · 0 评论 -
java继承
写出以下程序的运行结果,填写在每个输出语句后面的注释中public class ATest{public static void main(String args[]) {Sub sub = new Sub( );System. out .println(sub. x ); // 1 1System. out .println(sub. n );原创 2017-06-20 23:02:26 · 281 阅读 · 0 评论 -
垃圾回收器
上图展示了7种作用于不同分代的收集器,上面为新生代收集器,下面为老年代收集器,如果两个收集器之间存在连线,说明它们可以搭配使用。 Serial收集器: Serial收集器是最基本、发展历史最悠久的收集器。单线程收集器,只会使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是它在进行垃圾收集时,必须暂停其他线程,直到垃圾收集结束。是虚拟机运行在Client模式下的默认新生代收集器。 优点:原创 2017-06-20 15:05:27 · 218 阅读 · 0 评论 -
Lock使用
1ReentrantLock实现同步package service;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class MyService { private Lock lock=new ReentrantLock(); public原创 2017-06-08 09:52:37 · 253 阅读 · 0 评论 -
垃圾收集器与内存分配策略
哪些内存需要回收? 什么时候回收? 如何回收? 运行时数据区的程序计数器、虚拟机栈、本地方法栈3个区域是线程私有的,与线程生命周期一致;栈中的栈帧随着方法的进入和退出而有条不紊地执行出栈和入栈操作。每一个栈帧中分配多少内存基本上是在结构确定时就已知,因此这几个区域的内存分配和回收都具备确定性,在这几个区域内就不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就随着回收了。而Java原创 2017-06-19 22:54:20 · 197 阅读 · 0 评论 -
synchronized关键字
1修饰一个方法 在方法前加关键字synchronized即可,锁对象属于类的实例synchronized public void add(){//todo}注意: 1)A线程持有object对象的Lock锁,B线程可以以异步的方式调用object对象中的非synchronized方法 2)同步不具有继承性 子类覆盖了父类synchronize关键字修饰的方法,若子类方法没有用synchr原创 2017-06-07 23:04:21 · 247 阅读 · 0 评论 -
volatile关键字
java内存模型,可以理解为变量的访问规则,在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。 线程、主内存、工作内存的交互关系如下: 8种内存交互操作: lock: unlock: read: load: use: assign: store: write: volatile关键字作用 1可见性:保证变量对所有线程可见 普通变量的值在线程间传递均需要通过主内原创 2017-06-07 10:47:15 · 188 阅读 · 0 评论 -
java内存区域与内存溢出异常
程序计数器 程序计数器是一块较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器完成。 每个线程都需要一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,该区域是线程私有的。 如果线程正在执行的是一个java方法,这个计数器记录的是正在执行的转载 2017-06-16 14:40:55 · 224 阅读 · 0 评论 -
11持有对象
11.3添加一组元素 接受一个数组或用逗号隔开的元素列表 Arrays.asList(1,2,3,4,5) Integer[] moreInts={6,7,8,9,10}; collection.addAll(Arrays.asList(moreInts)); collection.addAll(Collection c)接收一个Collection对象 Collections.add原创 2016-12-06 10:37:27 · 226 阅读 · 0 评论 -
内部类
使用方式: 外部类方法中使用与其他相同 外部类方法返回内部类引用 可以访问外围类的所有元素,包括private修饰的 10.3.this .new .this 在内部类需要生成外部类的引用 .new 在另一个类中创建内部类对象 Outer outer=new Outer(); Outer.Inner inner=outer.new Inner(); 静态内部类不需要对外部对象的引原创 2016-11-25 11:06:13 · 214 阅读 · 0 评论 -
java类和对象的初始化
JAVA类与对象的初始化JVM通过加装、连接和初始化一个Java类型,使该类型可以被正在运行的Java程序所使用。类型的生命周期如下图所示: 类的初始化和对象的初始化(类的实例化、创建一个对象)是两个不同的事情,类的初始化在类的实例化之前。 1类的初始化 类初始化阶段,主要是为类变量(静态变量)赋予正确的初始值。这里的“正确”初始值指的是程序员希望这个类变量所具备的起始值。一个正确的初始值是通转载 2016-08-08 14:32:30 · 2248 阅读 · 1 评论 -
线程池
线程池的创建public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler)co原创 2017-08-02 15:28:38 · 739 阅读 · 0 评论