Java 中几个不常用的关键字

来源:互联网 发布:linux wc 编辑:程序博客网 时间:2024/05/21 06:59
  1. transient : 如果类中的一个成员变量声明为 transient ,那么当对象进行持久化存储时,不会保存这个变量的值。例如:

    public class Entity {    String s1;    transient String s2;    public class Entity(String s1, String s2){        this.s1 = s1;        this.s2 = s2;    }}public class Test{    public static void main(String[] args){        Entity entity = new Entity("hello", "world");        File file = new File("test.txt");        if (!file.exists()) {            file.createNewFile();        }        OutputStream os = new FileOutputStream(file);        ObjectOutputStream oos = new ObjectOutputStream(os);        oos.writeObject(entity);        oos.close();    }}

    写入的文件内容如下:

    这里写图片描述

    可以看到只存储了 s1 的值,而没有存储 s2 的值。

  2. volate : 首先要知道,当多线程访问一个变量时,每个线程都会有自己的缓存区,通常它所使用到的变量都会复制一份拷贝到自己的缓存区中。当线程对于该变量的读写通常都是直接操作自己缓存区中的拷贝的。
    如果是是修改,则是先修改自己缓存区中的拷贝的值,然后再写入主存中。这其中就存在着一个延时,导致其修改值不能被其他线程立即可见。
    而volatile关键字就是使线程对变量的修改强制写入主存中,从而立即对其他线程可见。
    更详细的参考:

    http://www.cnblogs.com/dolphin0520/p/3920373.html
    http://jiangzhengjun.iteye.com/blog/652532

  3. strictfp
    精确浮点。

    百度百科 strictfp 关键字可应用于类、接口或方法。使用 strictfp 关键字声明一个方法时,该方法中所有的float和double表达式都严格遵守FP-strict的限制,符合IEEE-754规范。当对一个类或接口使用 strictfp 关键字时,该类中的所有代码,包括嵌套类型中的初始设定值和代码,都将严格地进行计算。严格约束意味着所有表达式的结果都必须是 IEEE 754 算法对操作数预期的结果,以单精度和双精度格式表示。

    主要是使得浮点计算更加精确,并且在不同机器上可以有相同的计算结果。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 新摩托车被交警查到怎么办 写字楼保安夜班巡逻害怕怎么办 全民k歌歌曲删了怎么办 莲藕洞里的黑膜怎么办 鞋子后面的拉链磨脚怎么办 磨砂鞋尖踢掉皮怎么办 塔吊吊装过程中遇到障碍物怎么办 高速路上突然遇到障碍物怎么办 被不明物蛰了怎么办 喝酒后开车撞路政护栏怎么办 电脑过了质保期怎么办 电闸推不上去怎么办啊? 寝室的电闸不亮了怎么办 海绵城市改造只挖不修怎么办 怀孕一个月做了胸透怎么办 怀孕了照了胸透怎么办 刚怀孕照了胸透怎么办 怀孕进了ct室怎么办 消防稳压罐气囊压力不够怎么办 备孕期间拍了ct怎么办 晚上睡不好老做梦怎么办 零线和地线短路怎么办 火花塞拧的过紧怎么办 眼睛被电弧光灼伤怎么办 电脑模拟器微信附近人屏蔽了怎么办 美的电压锅漏气怎么办 电压力锅排气阀漏气怎么办 win10系统上不了网怎么办 手机自拍杆坏了怎么办 车辆遭核生化打击时怎么办? 遭核生化打击时怎么办? 车辆行驶中遭核生化打击时怎么办? 硫酸气体熏到嗓子怎么办 硫酸味儿进嗓子了怎么办 吸入二氧化氯气体后怎么办 衣服84消毒 变色了怎么办 我的身份证被诈骗犯知道了怎么办 母婴店来客人少怎么办 键盘驱动被卸载了怎么办 广州 狗狗随地大小便怎么办 上海 狗狗随地大小便怎么办