二: strictfp 使用对象:类、方法 自Java2以来,Java语言增加了一个关键字strictfp,虽然这个关键字在大多数场合比较少用,但是还是有必要了解一下。 strictfp的意思是FP-strict,也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时, Java的编译器以及运行环境在对浮点运算的表达式是采取一种近似于我行我素的行为来完成这些操作,以致于得到的结果往往无法令你满意。而一旦使用了 strictfp来声明一个类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。因此如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,那就请用关键字strictfp。 你可以将一个类、接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明strictfp关键字,例如下面的代码: 1. 合法的使用关键字strictfp strictfp interface A {} public strictfp class FpDemo1 { strictfp void f() {} } 2. 错误的使用方法 interface A { strictfp void f(); } public class FpDemo2 { strictfp FpDemo2() {} } 一旦使用了关键字strictfp来声明某个类、接口或者方法时,那么在这个关键字所声明的范围内所有浮点运算都是精确的,符合IEEE-754规范的。例如一个类被声明为strictfp,那么该类中所有的方法都是strictfp的。
Final考试大-全国最大教育类网站(www.Examda。com) 对与java中的final变量,java编译器是进行了优化的。每个使用了final类型变量的地方都不会通过连接而进行访问。比如说 Test类中使用了Data类中一个final的int数字fNumber=77,这时候,java编译器会将77这个常数编译到Test类的指令码或者常量池中。这样,每次Test类用到fNumber的时候,不会通过引用连接到Data类中进行读取,而是直接使用自己保存在类文件中的副本。 用程序说话: C:/>javac Test.javaTest.java: public class Test{ public static void main(String[] args){ System.out.println(Data.fNumber); } } Data.java: public class Data{ public static final int fNumber=77;
19 在List.Map.Set 等接口中,不能包含重复元素的接口是: A、List B、Map C、Set D、都不是 答案 c
20 给定下面的字符串定义: String s = “Story”; 下面那个表达式是合理的? A、S+=5; B:Char =s[1];C int len=s.lenght;D:String t=s.toLowCase;
21、下面程序会执行出错误吗?如果有错误是什么错误? public class Modify { public static void main(String[] args){ String I = “123”,s; S = getStr(i); System.out.println(s); } public String getStr(String s){ StringBuffer sb = new StringBuffer(); for(int i=s.length-1;i>=0;i–){ sb.append(s.charAt(i)); } return sb.toString(); }
22 便于静态变量的创建,哪一个选项是正确的? A、一旦一个静态变量被创建,它就不允许改变 B、一个静态变量在一个方法中创建,他在被调用的时候值保持不变 C、在任意多个类的实例中,一个静态变量的实例只存在一个 D、一个静态的标识符只能应用于 private value
23、给定下列参数t,它继承了一个线程类,下列哪些选项可以使该线程停止执行,让其他的线程开始执行? A t.yield() B、Thread.yield() C、yield(100) D、yield(t)
关于下面类的定义,以下哪种说法是正确的? public class Modify { class one { private class two { public void main (){ System.out.println(“two”); } } } } A、此代码不能编译通过,因为该类嵌套了不至一层 B、此代码不能编译通过,并且运行时输出字符串 two C、此代码可以编译通过, D、次代码编译没有错误
对于如下代码,以下哪个结论是正确的? public class Modify { public static void main (String [] args) { StringBuffer a = new StringBuffer (“A”); StringBuffer b = new StringBuffer (“B”); operate (a,b); system.out.printIn{a “,” b}; } static void operate (StringBuffer x, StringBuffer y) { x.append (y); y = x; } } A. The code compiles and prints “A,B”. B. The code compiles and prints “A,A”. C. The code compiles and prints “B,B”. D. The code compiles and prints “AB,B”.
以下创建了几个对象? String A,B,C; A = ”a”; B = “b”; C = “c”; StringBuffer d = new StringBuffer(“abc”); D = D.append(“567”); A.3 B.4 C.5 D.6
考虑以下代码: public class Modify{ public static void main(String[] args){ int I,j,k; i=100;; while(i>0){ j=i*2; System.out.println(“The value of j is”+j); k=k+1; i–; } } } 以下哪个表达式是不正确的? A、1 B、 2 C、 3 D、4