葵花宝典第一天

来源:互联网 发布:html5权威指南 知乎 编辑:程序博客网 时间:2024/06/05 07:52

1.一个.java源文件中是否可以包括多个类(不是内部类)?有什么限制
可以有多个类,但是只能有一个public的类,并且public的类名必须与文件名相一致。
2. java有没有goto?
java 中的保留字,现在没有在java中使用
3.说说&与&&的区别
&和&&都可以用作逻辑与的运算符,表示逻辑与and,当运算符两边的表达式结果都为true时,整个运算结果才为true,否则反之。
&和&&都可以用作逻辑与的运算符,表示逻辑与and,当运算符两边的表达式都为true时,整个运算的结果才为true,否则,反之。
&和&&都可以运作逻辑与的运算符,表示逻辑与and,当运算符两边的表达式都为true时,整个运算的结果才为true,否则,反之。
&和&&都可以用作逻辑与的运算符,表示逻辑与and,当运算符两边的表达式都为true的时候,整个运算结果才为true。否则,反之。
&和&&都是可以用作逻辑与的运算符,表示逻辑与and当运算符两边的表达式都为true时,整个运算结果才为true否则,反之。
&和&&都可以运作逻辑与的运算符,表示逻辑与and,当运算符两边的结果都为true时,整个运算的结果才为true否则,反之。

不同点:&&还具有短路的功能,即如果第一个表达式为false则不会再计算第二个表达式。例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。If(x==33 & ++y>0) y会增长,If(x==33 && ++y>0)不会增长
&可以用作位运算符

4.在java中如何跳出当前的多重嵌套循环?
而是让外层的循环条件表达式的结果可以受到里层循环体代码的控制,例如,要在二维数组中查找到某个数字。

int arr[]={{1,2,3},{4,5,6},{7}}int arr[][] = {{1,2,3},{4,5,6,7},{9}};boolean found=false;boolean found = false;for(int i=0;i<arr.length && !found;i++)    {        for(int j=0;j<arr[i].length;j++)        {            System.out.println(“i=” + i + “,j=” + j);            if(arr[i][j]  == 5)             {                found = true;                break;            }        }    } 

5.switch语句能否作用在byte上,能否作用在long上,能否作用在String上?
在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。
在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量整数表达式可以是int基本类型或者Integer包装类型,,由于byte,shot,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的,显然,long和String都不符合switch的语法规定,并且不能被隐式的转换成int类型所以他们不能作用于switch语句中、
在switch (e)中,e只能是一个整数表达式和枚举常量,整数表达式可以是int基本类型和Integer包装类型,由于byte.shot.char都可以隐含转换为int, 所以这些类型的包装类型也是可以的,显然 long和String 都不符合switch的语法规则,并且不能被隐式的转换成int类型所以他们不能用于switch语句中
注意:强制类型转换(显示转换)都会存储精度的损失,使用的时候要慎重。

6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
1、Java规范有这样的规则
[
a.高位转低位需要强制转换
b.低位转高位自动转.
]
2、short s1 = 1; s1 = s1 + 1;中,1 是int 型 s1 short型 通过 + 运算后s1 自动转为int 型 所以错!
3、后面一句没有错是因为Java语言规范中讲到,复合赋值(E1 op=E2)等价于简单赋值(E1=(T)((E1) op (E2))),而(s1 += 1)表达式使用的是复合赋值操作符,复合赋值表达式自动地将所执行计算的结果转型为其左侧变量的类型。如果结果的类型与该变量的类型相同,那么这个转型不会造成任何影响。