类加载的时机 遇到new、getstatic、putstatic或invokestatic这4个字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。生成这4条指令最常见的Java场景是:使用new关键字实例化对象的时候、读取或设置一个类的静态字段(被final修饰、已在编译期把结果放入到常量 ...
分类:
编程语言 时间:
2016-05-19 23:08:58
阅读次数:
187
一Java泛型
JDK 4.0以前装入集合的类型不明确,也就是说集合中的元素,可以是任意类型的对象(对象的引用),如果把某个
对象放入集合,则会忽略它的类型,而把它当做Object处理,从而失去自己的实际类型。从集合中取出时往往需要转
型,效率低,容易产生错误。JDK 5.0泛型指的是规定了某个集合只可以存放特定类型的对象,会在编译期间进行类
型检查,也可以直接按指定类型获取...
分类:
编程语言 时间:
2016-05-18 19:46:09
阅读次数:
216
语法糖 接下来几篇文章要开启一个Java语法糖系列,所以首先讲讲什么是语法糖。语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实 现的一些小把戏罢了,编译期间以特定的字节码或者特定的方式对这些语法做一些处理,开发者就可以直接方便地使用了。这些语法糖虽然不会提供实质 ...
分类:
编程语言 时间:
2016-05-18 12:30:53
阅读次数:
214
以下内容来自维基百科,关于静态类型检查和动态类型检查的解释: 静态类型检查:基于程序的源代码来验证类型安全的过程; 动态类型检查:在程序运行期间验证类型安全的过程; Java使用静态类型检查在编译期间分析程序,确保没有类型错误。基本的思想是不要让类型错误在运行期间发生。 以下代码是一个例子,理解了他 ...
分类:
编程语言 时间:
2016-05-18 10:34:38
阅读次数:
178
1,ARC 是编译器做的事情(在编译期间插入内存管理相关代码) ARC evaluates the lifetime requirements of your objects and automatically inserts appropriate memory management calls ...
分类:
其他好文 时间:
2016-05-17 17:28:08
阅读次数:
131
重载delete时的那点事 C++的异常处理机制就会自动用与被使用 的operator new匹配的operator delete来释放内存(补充一点:在operator new中抛出异常不会导致这样的动作,因为系统认为这标志着内存分配失败)。编译期间编译器按照以下顺序寻找匹配者:首先在被构建对象类 ...
分类:
其他好文 时间:
2016-05-17 13:23:22
阅读次数:
127
1、编译期Swift版本检测
#if swift(>=3.0)
print("Running Swift 3.0 or later")
#else
print("Running Swift 2.2 or earlier")
#endif
它和Swift2中介绍过的#available表达式不同,#available表达式是运行时检查,#if swift(>=3.0)... #else...
分类:
编程语言 时间:
2016-05-12 19:12:26
阅读次数:
268
首先说明,"java中的基本数据类型一定存储在栈中的吗?”这句话肯定是错误的。
栈:虚拟机栈:执行java方法是分配的内存模型。方法运行分配一个栈帧用于存放局部变量表,操作数栈、动态链接、方法出口等信息。。局部变量表存放了编译期可知的各种基本数据类型、对象引用类型,存放了指向实际对象的地址或者句柄位置
下面让我们一起来分析一下原因:
基本数据类型是放在栈中还是放在堆中,这...
分类:
编程语言 时间:
2016-05-12 16:31:58
阅读次数:
221
1:异常
(1)程序出现的不正常的情况。
(2)异常的体系
Throwable
|--Error
严重问题,我们不处理。
|--Exception
|--RuntimeException
运行期异常,我们需要修正代码
|--非RuntimeException 编译期异常,必须处理的,否则程序编译不通过
(3)异常的处理:
A:JVM的默认处理
把异常的名称,原因,位置等信...
分类:
编程语言 时间:
2016-05-12 16:25:32
阅读次数:
197
82.JAVA编程思想——关于垃圾收集
“很难相信Java 居然能和C++一样快,甚至还能更快一些。”
据我自己的实践,这种说法确实成立。然而,我也发现许多关于速度的怀疑都来自一些早期的实现方式。由于这些方式并非特别有效,所以没有一个模型可供参考,不能解释Java 速度快的原因。
之所以想到速度,部分原因是由于C++模型。C++将自己的主要精力放在编译期间“静态”发生的所有事情上,所以程序的...
分类:
编程语言 时间:
2016-05-12 16:06:28
阅读次数:
207