1、& 与 &&的区别
两个都有逻辑与的功能。但是所不同的是,当&两边的表达式不是boolean类型的时候,&具有位与的功能;&&是短路与,当判断到前一个表达式为false的时候,将不会再去计算后面的表达式。
如:
int i = 0; System.out.println((1==0)&(0==(i++))); System.out.println(i);
输出是:
false
1
但是,
int i = 0; System.out.println((1==0)&&(0==(i++))); System.out.println(i);
输出是:
false
0
-----------------------------------------------------------------------------------------------------------------------------------------------
2、一个java源文件中是否可以包含多少个类?
回答:可以,但是只能有一个public的类,并且类名与文件名一致。
-----------------------------------------------------------------------------------------------------------------------------------------------
3、如何跳出多重嵌套循环?
两种方法:
(1)在循环前面可以设置一个标号,格式就是 名字+冒号,如
ok: for (int i = 0; i <2;i++) { for(int j = 0; j < 7; j++) { if(m == 10) { breakok; }else{ m++; } } } System.out.println(m);
(2)设置标志位,让外层循环收到内层循环的影响。
boolean breakFlag =false; for (int i = 0; i< 2 && (!breakFlag); i++) { for(int j = 0; j < 7; j++) { if(j == 6) { breakFlag= true; break; }else { m++; } } }
-----------------------------------------------------------------------------------------------------------------------------------------------
4、switch能否用于byte 、long 或者string上?
回答:switch(expression),expression只能是一个整数表达式或者枚举常量。整数表达式可以是int类型或者Integer包装类型。 byte,char,short 都可以隐含转换成int,因此这三个基本类型以及它们的包装类型都可以。long和string都不能。
-----------------------------------------------------------------------------------------------------------------------------------------------
5、 short m = 1;m = m+1;和m +=1; 有区别么?都能通过编译么?
回答:m = m+1 ,由于1是int型,所以相加时结果自动提升到int类型,把int类型的结果赋给short类型的m,
编译不通过,必须加强制类型转换。而 m += 1;则不一样。+=是java规定的运算符,编译器内部会进行特殊处理,相当于内部已经是强制类型转换了。因此编译通过。
-----------------------------------------------------------------------------------------------------------------------------------------------
6、 char t= '张三';这句有错么?
回答:有错,因为char类型变量使用 Unicode来存储字符,Unicode中包含了中文汉字,所以存储没问题,问题是,char类型变量本身是2个字节,一个Unicode是2个字节,因为char 只能存储一个汉字。
7、使用final 修饰一个变量的时候,是引用不能变,还是引用的对象不能变?
回答:引用变量不能变。如final StringBuilder sb = newStringBuilder("ddd");
如果是下一句是sb = new StringBuilder("cccc");是肯定出现编译错误的。但是可以执行如下语句:
sb.append("ddd") ;
8、== 与 equal的区别?
回答:== 是用于比较两个变量的值是不是相等,如基本类型或者 两个引用变量。 也只能用==操作符,
不能用equal操作符。
equal操作符是比较两个独立对象的内容是不是相等。
如
String a = new String("dd"); String b = new String("dd"); System.out.println(a==b); System.out.println(a.equals(b));
将会输出:
false
true