(2.1.16)java关键字assert、volatitle、instanceof、strictfp
来源:互联网 发布:淘宝车牌摇号骗局 编辑:程序博客网 时间:2024/05/22 12:10
- 1-Java中的assert使用
- 1-assert的使用
- 2-Java中assertion与C中的assertion的区别在
- 2-Volatile
- 1-定义
- Volatile VS Synchronized
- 3-instanceof
- 1-定义
- 2-示例
- 4-strictfp 即 strict float point 精确浮点
1-Java中的assert使用
1.1-assert的使用
1)assert exp1 此时的exp1为一个boolean类型的表达式
当其值为true时,运行通过,如果为false,则会抛出一个相应的AssertionError,注意它可以被catch,也可以不去处理
2)assert exp1 : exp2 此时的exp1同上,而exp2可以为基本类型或一个Object
当exp1的值为true时,同上,且exp2不会被运算;而当exp1的值为false时,将会抛出AssertionError,同时将exp2的结果作为AssertionError构造器中的参数,当使用catch该错误时,可利用getMessage()方法打印出exp2的结果。
[c-sharp] view plaincopypublic class AssertTest2 { public void assertMe(boolean foo) { String str = null; assert foo?true:false : str = "Error Occur!"; System.out.println("in true condition"); } public static void main(String[] args) { AssertTest2 at = new AssertTest2(); try { at.assertMe(true); at.assertMe(false); } catch(AssertionError ae) { System.out.println(ae.getMessage()); } } } 运行后结果:in true conditionError Occur!
1.2-Java中assertion与C中的assertion的区别在
1)Java中是使用assert关键字去实现其功能,而C中是使用的类库函数;
2)C中的assertion是在编译时开启,Java中则是在运行时才开启
2-Volatile
2.1-定义
在Java内存模型中,有main memory,每个线程也有自己的memory (例如寄存器)。为了性能,一个线程会在自己的memory中保持要访问的变量的副本。这样就会出现同一个变量在某个瞬间,在一个线程的memory中的值可能与另外一个线程memory中的值,或者main memory中的值不一致的情况。
Volatile 比同步更简单,只适合于控制对基本变量(整数、布尔变量等)的单个实例的访问。
当一个变量被声明成 volatile,任何对该变量的写操作都会绕过高速缓存,直接写入主内存,而任何对该变量的读取也都绕过高速缓存,直接取自主内存。这表示所有线程在任何时候看到的 volatile 变量值都相同。
public class StoppableTask extends Thread { private volatile boolean pleaseStop; public void run() { while (!pleaseStop) { // do some stuff... } } public void tellMeToStop() { pleaseStop = true; } }
Volatile VS Synchronized:
- Volatile 是字段修饰符,Sync是方法和代码块的修饰符.
- Volatile限制的变量不允许提取到各个线程的工作内存中进行操作,而若是某个变量被Sync限制的某段代码圈住,则系统会时刻保持主存与工作内存中的变量值一致.
3.Volatile是轻量级的同步,开销不是很大,Sync是高开销的同步,Just keep in mind that synchronizing a method can decrease performance by a factor of 100.
3-instanceof
3.1-定义
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
用法:
result = object instanceof class
参数:
Result:布尔类型。
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。
3.2-示例
if(a instanceof String) cout<<"a不是字符串类型";
4-strictfp, 即 strict float point (精确浮点)
strictfp 关键字可应用于类、接口或方法。使用 strictfp 关键字声明一个方法时,该方法中所有的float和double表达式都严格遵守FP-strict的限制,符合IEEE-754规范。当对一个类或接口使用 strictfp 关键字时,该类中的所有代码,包括嵌套类型中的初始设定值和代码,都将严格地进行计算。严格约束意味着所有表达式的结果都必须是 IEEE 754 算法对操作数预期的结果,以单精度和双精度格式表示。
如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,可以用关键字strictfp.
- (2.1.16)java关键字assert、volatitle、instanceof、strictfp
- Java关键字之native,strictfp,transient,volatile,assert
- Java笔试:Java volatitle关键字
- Java中的strictfp关键字
- Java关键字strictfp
- Java 关键字 Strictfp
- java strictfp关键字
- Java strictfp关键字
- Java关键字-strictfp
- java关键字strictfp
- Java中关键字Volatitle的作用!
- Java 关键字:strictfp volatile transient
- Strictfp —— Java 关键字
- java关键字——strictfp
- java 关键字: volatile、strictfp、transient
- 谈谈JAVA关键字—strictfp
- Java语言中关键字讲解(一)strictfp的用途
- java关键字--assert(断言)
- 今天是来csdn第一天,请多指教!
- ArduinoYun的电源插座
- Set集合常用操作
- 使用Autolayout实现UITableView的Cell动态布局和高度动态改变
- iOS_多线程_GCD
- (2.1.16)java关键字assert、volatitle、instanceof、strictfp
- Windows Server 2008安装IIS7.0
- 递归与while循环实现求n!
- UI设计中的48dp定律
- org.hibernate.HibernateException: No Session found for current thread的解决办法
- UITableView总结
- 微软面试题系列
- 用Java实现简单的遗传算法
- android之测试