JAVA编程思想学习笔记2-chap4-6-斗之气2段
1.foreach:只能用于数组与容器
2.this指针:内部有个指针指向自己
3.super指针:内部有个指针指向父类部分
4.方法存放于代码区:方法调用时,a.fun()可能会被转换为fun(a),以此将对象传递给函数,同时方法知道调用者是对象a
5.static方法:没有this指针
6.finalize():GC回收前先调用一次本方法,下次才进行内存回收,可以用于终结条件(如:判断文件是否安全关闭)
7.GC:找到存活对象
①引用计数:无法解决对象互相引用问题
②从堆栈或者静态存储区进行扫描:引用链--由于访问过的对象为活的,同时形成了树状结构,不会重复计算已引用对象,同时找到的对象必定存活,没有互相引用问题
8.GC:处理存活对象
①停止-复制:复制对象到另一个堆,并保持内存连续,未被复制的对象为垃圾(复制后引用需要修正)
缺点:①需要维护两个堆,造成资源浪费②程序稳定后,仍然需要复制,造成性能低
②标记-清扫:根据思路6-②,标记活对象,标记完,释放死对象,整理活对象,适用于垃圾较少的时刻(程序稳定)
③自适应、分代的、停止-复制、标记-清扫式垃圾回收器
JVM监视GC效率:效率低时候采用标记清扫,碎片多采用停止-复制
9.JIT编译器技术:将程序全部或部分编译为本地机器码(本为JVM功能)以增加效率
10.对象创建过程:
①定位class文件;
②载入class文件,创建Class对象,执行静态初始化块或者域静态初始化;---证明静态成员内存并不是位于堆区
③在堆上分配存储空间;
④内存清0;
⑤按域声明顺序执行域初始化动作;
⑥执行构造器;
11.classpath:指定类目录
12.可变参数列表:参数类型需要统一
13.java会为每个class生成一个.class文件
14.package与import:对命名空间进行切割
15.通过import不同的package,可以实现条件编译,如开发与测试版本
16.单例模式(此处恶汉式为线程安全)
①只有一个默认构造器,并且为private
②类有一个static对象
③提供getInstance方法,返回此对象的引用
public class SingleObject { //创建 SingleObject 的一个对象
private static SingleObject instance = new SingleObject(); //让构造函数为 private,这样该类就不会被实例化
private SingleObject(){} //获取唯一可用的对象
public static SingleObject getInstance(){
return instance;
} public void showMessage(){
System.out.println("Hello World!");
}
}
public class SingletonPatternDemo {
public static void main(String[] args) { //不合法的构造函数
//编译时错误:构造函数 SingleObject() 是不可见的
//SingleObject object = new SingleObject(); //获取唯一可用的对象
SingleObject object = SingleObject.getInstance(); //显示消息
object.showMessage();
}
}
懒汉式线程安全版本见:
https://blog.csdn.net/cselmu9/article/details/51366946
JAVA编程思想学习笔记2-chap4-6-斗之气2段的更多相关文章
- [Java编程思想-学习笔记]第3章 操作符
3.1 更简单的打印语句 学习编程语言的通许遇到的第一个程序无非打印"Hello, world"了,然而在Java中要写成 System.out.println("He ...
- Java编程思想 学习笔记1
一.对象导论 1.抽象过程 Alan Kay曾经总结了第一个成功的面向对象语言.同时也是Java所基于的语言之一的Smalltalk的五个基本特性,这些特性表现了纯粹的面向对象程序设计方式 1)万物皆 ...
- [Java编程思想-学习笔记]第1章 对象导论
1.1 抽象过程 Java是一门面向对象的语言,它的一个优点在于只针对待解问题抽象,而不用为具体的计算机结构而烦心,这使得Java有完美的移植性,也即Java的口号"Write Once, ...
- Java编程思想 学习笔记11
十一.持有对象 通常,程序总是根据运行时才知道的某些条件去创建新对象.在此之前,不会知道所需对象的数量,甚至不知道确切的类型. Java实用库还提供了一套相当完整的容器类来解决这个问题,其中基本的类 ...
- Java编程思想学习笔记——类型信息
前言 运行时类型信息(RTTI:Runtime Type Information)使得我们可以在程序运行时发现和使用类型信息. Java在运行时识别对象和类的信息的方式: (1)一种是RTTI,它假定 ...
- Java编程思想 学习笔记12
十二.通过异常处理错误 Java的基本理念是“结构不佳的代码不能运行”. Java中的异常处理的目的在于通过使用少于目前数量的代码来简化大型.可靠的程序的生成,并且通过这种方式可以使你更加自信:你的 ...
- Java编程思想 学习笔记10
十.内部类 可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一种非常有用的特性,因为它允许你把一些逻辑相关的类组织在一起,并控制位于内部的类的可视性.然而必须要了解,内部类和组合是 ...
- Java编程思想 学习笔记7
七.复用类 1.组合语法 在新的类中产生现有类的对象.由于新的类是由现有类的对象所组成,所以这种方法叫做组合. 类中域为基本类型时能够自动被初始化为零.对象引用被初始化为null. 编译器不是简单地为 ...
- Java编程思想 学习笔记5
五.初始化与清理 1.用构造器确保初始化 在Java中,通过提供构造器,类的设计者可确保每个对象都会得到初始化.创建对象时,如果其类具有构造器,Java就会在用户有能力操作对象之前自动调用相应的构造 ...
- Java编程思想 学习笔记4
四.控制执行流程 1.true和false 所有条件语句都利用条件表达式的真或假来决定执行路径.注意Java不允许我们将一个数字作为布尔值使用. 2.if-else 3.迭代 while.do-whi ...
随机推荐
- js callback 和 js 混淆
function test(a,callback){ a+=100; callback(a) } function abc(a){ a+=100; alert(a); } test(5,abc) js ...
- ASP.NET Core Web API处理HttpResponseMessage类型返回值的问题
在将我们的 web api 从 .NET Framework 迁移至 .net core(asp.net core 1.1)之后,遇到一个问题. 之前返回值类型为 HttpResponseMessag ...
- shell 基本命令
Shell基本命令 前言 前面咱们已经成功安装了Linux系统--centos7,那么现在跟着超哥奔向Linux的大门. Linux命令行的组成结构 [root@oldboy_python ~]# ...
- hbase与sqoop的集成
1.sqoop抽取mysql表到hbase中 export HBASE_HOME=/opt/cdh-5.3.6/hbase-0.98.6-cdh5.3.6 export HADOOP_HOME=/op ...
- deepin修改javahome不生效,一直显示openjdk解决
删除/usr/bin/java即可 terwer@terwer-PC:~$ sudo rm /usr/bin/java [sudo] terwer 的密码: terwer@terwer-PC:~$ j ...
- Mac终端的Cocoapods的安装及使用
阅读目录 第一步,首先要检查Mac是否安装了rvm.打开终端,输入指令 rvm -v 第二步,用rvm安装ruby环境 第三步,检查更新RubyGems(Ruby1.9.1 以后的版本自带RubyGe ...
- javascript中的值如何传递到django下的views.py中或者数据库中?
用Ajax,Ajax有很多种写法,包括JQuery和JS,这里贴一个用JQuery写的最通用的Ajax,POST方法传递JSON格式数据: $.ajax({ url: "your url&q ...
- Linux7安装Oracle 11g 86%报错:Error in invoking target 'agent nmhs' of makefile
解决方案在makefile中添加链接libnnz11库的参数修改$ORACLE_HOME/sysman/lib/ins_emagent.mk,将$(MK_EMAGENT_NMECTL)修改为:$(MK ...
- overridePendingTransition
通过调用overridePendingTransition() 可以实时修改Activity的切换动画. 注意:该函数必须在Activity的onCreate()中调用或者finish()后立即调用.
- schtasks 命令使用
schtasks /create 创建任务,下面是常用参数 /tn taskname /tr taskrun /sc schedule [Minute | Hourly | Daly | We ...