答案:是。即便是web容器也有main方法,好比tomcat的Bootstrap类的main方法。java
答案:没有。web
double d1 = Double.NaN; double d3 = d1; System.out.println("d3 == d1 : " + (d3 == d1));
上面的代码输出true仍是false?
答案:false。编程
double d1 = Double.NaN; double d2 = Double.NaN; System.out.println("d1 == d2 : " + (d1 == d2)); System.out.println("Double.NaN == Double.NaN : " + (Double.NaN == Double.NaN));
上面的代码输出true仍是false?
答案:false。
总结,java中全部的非数值都是不相等的。数组
答案:使用Double.isNaN(double)或Float.isNaN(float)。其实现是一个数不等于本身,就是NAN:tomcat
public static boolean isNaN(double v) { return (v != v); }
答案:两个或四个。在java中char类型用UTF-16描述一个代码单元。经常使用汉字用一个代码单元表示。有些汉字用两个代码单元表示。一个代码单元code point包含16bit。ide
char占用2个字节,使用Unicode字符集,使用UTF-16编码。有些汉字是存储不了的。编码
实际上是Unicode的设计保证的。为了将一个WORD的UTF-16编码与两个WORD的UTF-16编码区分开来,Unicode编码的设计者将0xD800-0xDFFF保留下来,并称为代理区(Surrogate)。设计
High Private Use Surrogates
高位专用替代代理
Low Surrogates
低位替代code
String s2 = "𤋮"; System.out.println(s2.getBytes().length); System.out.println(s2.codePoints().count()); System.out.println(s.length()); System.out.println(s.codePointCount(0, s.length()));
答案:4 、一、 二、1。第一个表明占用多少字节。第二个表明Unicode代码点个数,也就是字符个数。第三个表明须要几个Unicode code units,至关于须要几个char来存储。第四个也表明字符个数。
int ⅦⅢ齉__8s好; int αβ; int IIasdf; int $as; int _sdf; int 9sdf;
答案:除了最后一个不合法,其余都合法。也就是说下划线、美圆符、汉字或其余语言中的字母均可以用来命名变量,而且能够做为开头。阿拉伯数字不能够做为开头。
可使用下面两个方法来检测字符是否能够用来组成变量名或者做为变量名开头。
Character.isJavaIdentifierPart('齉'); Character.isJavaIdentifierStart('9');
java但愿全部的运算在不一样的机器上运行结果应该是同样的,即保证可移植性。例如double w = x y / z; 不少Intel的处理器会把x y 的结果保存在80位寄存器中,再除以z,而后把结果截断为64位。这样能够获得一个更精确的结果,并且避免产生溢出。这样的话就与使用64位寄存器的计算结果不一致。JVM最初规定,全部中间结果都须要截断,可是遭到数值计算团体的反对。由于截断不只浪费时间,并且可能致使溢出。最终JVM的设计者,容许中间结果采用扩展的精度。可是对于strictfp关键字标记的方法,必须使用严格的浮点计算,也就是全部中间值都进行截断。
答案:没有。只有>>> >> <<。
boolean cond1 = somemethod1(); boolean cond2 = somemethod2() // 第一组 if(cond1 && cond2){ ... } // 第二组 if(cond1 & cond2){ ... }
答案:第一组有阻断功能;第二组没有阻断功能。
答案:Math类中有些方法并非严格的浮点计算,可是效率较高。StrictMath中都是严格的浮点计算。“严格”的含义,参考上文中 ++strictfp关键字的做用++ 。
下面的代码有问题吗?
byte b = 1; short s = b; short s1 = s + b;
答案:byte类型+short类型,获得的是int类型。因此第三行代码报错。可是能够自动将byte转换成short,因此第二行代码是能够的。
String s1 = "asd" + "qwe";
String s2 = s1.substring(1);
答案:不会。由于只有字符串常量才会放到字符串池中,而+或substring等操做产生的结果并不会放到字符串池。
public class Goto_Demo { public static void main(String[] args) { inIfBlock(true); System.out.println("----------分隔符----"); inBlock(true); } private static void inIfBlock(boolean bool){ 结束: if(bool){ System.out.println("in "); if(bool){ break 结束; } System.out.println("after "); } System.out.println("out "); } private static void inBlock(boolean bool){ 结束: { System.out.println("in "); if(bool){ break 结束; } System.out.println("after "); } System.out.println("out "); } }
以上代码哪一个方法能够输出“after”?
答案:goto标签能够用于if语句或块语句。上面代码都不会输出“after”。
答案:数组初始化时,“最外围的”数组长度必须给定(好比二维数组的最外围就是行)。长度能够是变量。长度能够为0。注意数组长度为0与null是不一样的概念。
int[] arr = new int[2]; int[][] arr2 = new int[2][]; int[] arr3 = new int[0];
答案:若是返回值 r>=0,表示找到相应元素,返回的是数组下标值。若是返回值 r<0,则(-r-1)就是插入v元素时,为保持数组a有序,应该插入的位置。
int[][] arr = {{1, 2, 3}, {4, 5}}
答案:支持,不报错。由于Java其实是没有多维数组,只有一维数组。多维数组被解释成数组的数组。好比,二维数组的每一行是一个一维数组的引用,咱们能够实现行的互换。
不用,凡是在java.lang包下的java预约义类,在使用时都不须要import!Java语言中的java.lang包是由编译器直接自动导入的,所以,编程时使用该包中的类,可省去 import导入。使用其余包中的类,必须用import导入