1.strictfp, 即 strict float point (精确浮点)。
  strictfp 关键字可应用于类、接口或方法。使用 strictfp 关键字声明一个方法时,该方法中所有的float和double表达式都严格遵守FP-strict的限制,符合IEEE-754规范。当对一个类或接口使用 strictfp 关键字时,该类中的所有代码,包括嵌套类型中的初始设定值和代码,都将严格地进行计算。严格约束意味着所有表达式的结果都必须是 IEEE 754 算法对操作数预期的结果,以单精度和双精度格式表示。
  如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,可以用关键字strictfp. 
示例 1 
  下面的示例演示了一个使用 strictfp 修饰符声明的类。 
Java代码  
package com.magical;   
  
// Example of precision control with strictfp   
public strictfp class MyClass {   
    public static void main(String[] args)   
    {   
        float aFloat = 0.6710339f;   
        double aDouble = 0.04150553411984792d;   
        double sum = aFloat + aDouble;   
        float quotient = (float)(aFloat / aDouble);   
        System.out.println("float: " + aFloat);   
        System.out.println("double: " + aDouble);   
        System.out.println("sum: " + sum);   
        System.out.println("quotient: " + quotient);   
    }   
}

package com.magical;

// Example of precision control with strictfp
public strictfp class MyClass {
 public static void main(String[] args)
 {
  float aFloat = 0.6710339f;
  double aDouble = 0.04150553411984792d;
  double sum = aFloat + aDouble;
  float quotient = (float)(aFloat / aDouble);
  System.out.println("float: " + aFloat);
  System.out.println("double: " + aDouble);
  System.out.println("sum: " + sum);
  System.out.println("quotient: " + quotient);
 }
}

运行结果: 
float: 0.6710339 
double: 0.04150553411984792 
sum: 0.7125394529774224 
quotient: 16.167336

2.transient

当串行化某个对象时,如果该对象的某个变量是transient,那么这个变量不会被串行化进去。也就是说,假设某个类的成员变量是transient,那么当通过

ObjectOutputStream把这个类的某个实例

保存到磁盘上时,实际上transient变量的值是不会保存的。因为当从磁盘中读出这个对象的时候,对象的该变量会没有被赋值。

另外这篇文章还提到,当从磁盘中读出某个类的实例时,实际上并不会执行这个类的构造函数,而是读取这个类的实例的状态,并且把这个状态付给这个类的对象。

import java.util.*;
public class LoggingInfo implements java.io.Serializable

{

private Date loggingDate = new Date();

private String uid;

private transient String pwd;

LoggingInfo(String user, String password)

{

uid = user;

pwd = password;

}

public String toString()

{

String password=null;

if(pwd == null)

{

password = "NOT SET";

}

else

{

password = pwd;

}

return "logon info: \n " + "user: " + uid +

"\n logging date : " + loggingDate.toString() +

"\n password: " + password;

}

}

import java.io.*;
public class Serializable{
 
 
 public static  void main(String args[]){
  
  
  
  
  LoggingInfo logInfo = new LoggingInfo("小徐", "不知道");

System.out.println(logInfo.toString());

try

{

ObjectOutputStream o = new ObjectOutputStream(

new FileOutputStream("logInfo.out"));

o.writeObject(logInfo);

o.close();

}

catch(Exception e) {//deal with exception
  
  e.printStackTrace();
  }

// To read the object back, we can write

try

{

ObjectInputStream in =new ObjectInputStream(

new FileInputStream("logInfo.out"));

LoggingInfo logInfo1 = (LoggingInfo)in.readObject();

System.out.println(logInfo1.toString()); 
 
  } 
 
  catch(Exception e)
   {//deal with exception
    e.printStackTrace();
   } 
  
 }
}

import java.util.*;
public class LoggingInfo_ implements java.io.Serializable

{

private Date loggingDate = new Date();

private String uid;

private transient String pwd;

public  LoggingInfo_()

{

this.uid = "小徐";

this.pwd = "不知道";

}

public String toString()

{

String password=null;

if(pwd == null)

{

password = "NOT SET";

}

else

{

password = pwd;

}

return "logon info: \n " + "user: " + uid +

"\n logging date : " + loggingDate.toString() +

"\n password: " + password;

}

}

import java.io.*;
public class Serializable_{
 
 
 public static  void main(String args[]){
  
  
  LoggingInfo_ logInfo_ = new LoggingInfo_();

System.out.println(logInfo_.toString());

try

{

ObjectOutputStream o = new ObjectOutputStream(

new FileOutputStream("logInfo_.out"));

o.writeObject(logInfo_);

o.close();

}

catch(Exception e) {//deal with exception
  
  e.printStackTrace();
  }

// To read the object back, we can write

try

{

ObjectInputStream in =new ObjectInputStream(

new FileInputStream("logInfo_.out"));

LoggingInfo_ logInfo_1 = (LoggingInfo_)in.readObject();

System.out.println(logInfo_1.toString()); 
 
  } 
 
  catch(Exception e)
   {//deal with exception
    e.printStackTrace();
   }  
 }
 
}

java 中不常见的关键字:strictfp,transient相关推荐

  1. Java中不常见的关键字 / 修饰符(volatile , native , transient)

    既然是不常见的 , 那public , private , static , final等之类的关键字都不在本次讨论范围之内了 . 如果这几个还不能理解的话 , 不妨重新温习一下Java基础 . 1 ...

  2. Java中的50个关键字

    2019独角兽企业重金招聘Python工程师标准>>> Java中的50个关键字 关键字也称为保留字,是指java语言中规定了特定含义的标示符.对于保留字,用户只能按照系统规定的方式 ...

  3. [转载] Java中的50个关键字

    参考链接: Java平台如何独立 Java中的50个关键字 关键字也称为保留字,是指java语言中规定了特定含义的标示符.对于保留字,用户只能按照系统规定的方式使用,不能自行定义.Java中有50个常 ...

  4. Java中的两个关键字——super、this

    Java中的两个关键字--super.this 神话丿小王子的博客主页 一.super super 是java中方的一个关键字,用它可以引用父类中的成员: super可用于访问父类中定义的属性 sup ...

  5. java底层原理书籍_阿里面试题:Java中this和super关键字的底层实现原理

    知道的越多,不知道的就越多,业余的像一棵小草! 编辑:业余草 来源:https://www.xttblog.com/?p=5028 B 站:业余草 最近一个粉丝加我说,接到了阿里的面试,问问我阿里会面 ...

  6. java中定义类的关键字是_java中定义类的关键字是什么?

    java中定义类的关键字是:"class".在Java中定义一个类,需要使用"class"关键字.一个自定义的类名和一对表示程序体的大括号. 类是 Java 中 ...

  7. java下面哪些定义正确,请问,以下哪些是java中定义的合法关键字?请选择所有正确答案:...

    请问,以下哪些是java中定义的合法关键字?请选择所有正确答案: 答:interface sizeof volatile "凡是亲眼所见的都是对客观事实的真实反映",这个命题 答: ...

  8. java中的标识符和关键字_浅谈java中的标识符、修饰符和关键字

    合法标识符 Java语言中,对于变量,常量,函数,语句块均有名字,我们统统称之为Java标识符.标识符是用来给类.对象.方法.变量.接口和自定义数据类型命名的. 组成:Java标识符由数字,字母和下划 ...

  9. 一语点破 Java 中的静态 static 关键字

    来源 | blog.csdn.net/ju_362204801/article/details/90738966 思考:大家有没有想过一个问题,静态它为什么叫静态?因为书上或者别的文章里这么写的都这么 ...

最新文章

  1. 让Windwos Server 2008 R2 SP1的FTP真正能访问
  2. Linux入门之常用命令(15) lsof
  3. MySQL 可重复读,差点就让我背上了一个 P0 事故!
  4. Pi 3B+编译安装python3.6.8
  5. 加密货币交易所Gemini已支持新加坡元(SGD)
  6. 蓝桥杯2019年第十届C/C++国赛B组 题B-质数拆分(素数筛选+01背包问题)
  7. 华为U2000网管研究实录 (3) - 运行分析(服务端进程)
  8. 修改AspNetPager的CustomInfoHTML,添加自定义样式
  9. 计算机上怎么在表格输入分秒,excel2010中如何设置分秒格式显示单元格或数据?...
  10. win10系统优化计算机,win10系统必做优化,让你的电脑告别卡顿,运行速度至少提升20%...
  11. 程序员有必要掌握 TDD 吗?
  12. java正态分布随机数产生方法
  13. 手游开发神器 cocos2d-x editor 教程聚合和代码下载(持续更新中)
  14. java计算机毕业设计BS用户小票系统(附源码、数据库)
  15. STM32F407的时钟
  16. RGBD相机的标定和图像配准
  17. 消息称苹果最快将于2022年推出折叠屏iPhone
  18. 阿里巴巴三面总结,讲一讲从P5到P8需要掌握的知识点,本人已成功入职。
  19. 软件测试:保障软件质量的关键性关口——记中国工商银行软件开发中心北京研发_manok_新浪博客...
  20. oracle 数据库精简,Oracle角色精简总结

热门文章

  1. python列表求平均值_python与统计概率思维
  2. dos命令行设置网络优先级_计算机网络故障及其维修方法
  3. hibernate oracle boolean 数据类型,用hibernate向oracle读取blob数据类型为并下载到本地...
  4. 全排列—leetcode46
  5. UNIX 高手的 20 个习惯
  6. java list 排序_Java中List的排序
  7. XHTML行内描述性元素(持续更新中)
  8. 概率论-2.7 分布的其他特征函数
  9. Windows平台下 vscode清理Java工程项目的缓存、相关快捷键设置
  10. [BUUCTF-pwn]——picoctf_2018_are you root