1、字符定义:
char c=65; System.out.println(c);
输出结果:
A
分析:java中定义字符方式:
- 直接定义字符:char c1=‘A’;
- 用字符对应的ASCII码:char c2=65;
- byte定义范围是-128~127
2、程序输出结果
int a = 5; System.out.println("vlaue is " + ((a < 5) ? 10.9 : 9));
输出结果:
vlaue is 9.0
条件表达式执行说明:
- 先求解表达式1,若值为非0,表示条件为真,则求解表达式2,此时表达式2的值就作为整个条件表达式的值;若表达式1的值为0,表示条件为假,则求解表达式3,表达式3的值就是整个条件表达式的值。
- 条件表达式的优先级别仅高于赋值运算符,而低于前面遇到过的所有运算符。
- 条件运算符的结合方向为"自右至左"。
- 只要一个运算中有不同的类型,涉及到类型转换,那么编译器会往下(基本类型)转型,再进行运算。
- 三目运算中后两个表达式,有一个是常量表达式,另一个是T类型,而常量表达式可以被T类型表示,则输出结果为T类型。
分析:因为前面有一个10.9,所以9会自动提升为9.0,所以最终输出结果是9.0。
3、程序输出结果
char x = 'x'; int i = 10; System.out.println(false ? i : x); System.out.println(false ? 10 : x);
输出结果:
120
x
分析:int i=10;中的i是个变量,所以第一个输出的x被提升为int型,‘x’对应的值是120,所以输出120;当三目运算中后两个表达式,有一个是常量表达式(本题中是10),另一个是T类型(本题中是char),而常量表达式可以被T类型表示,则输出结果为T类型。因为10为常量,且可以表示为char类型,所以输出结果为char。
4、下列输出结果:
public class test1 { private int count; public static void main(String[] args) { // TODO Auto-generated method stub test1 t1 = new test1(99); System.out.println(t1.count); } test1(int ballcount) { count = ballcount; } }
输出结果:
99
分析:count定义为私有属性,并不会阻止构造方法对其进行初始化,当然也可在该类进行调用私有属性,但是如果不在同一个类,则不行。
public class test1 { public static void main(String[] args) { test2 t2 = new test2(88); System.out.println(t2.count); } } class test2 { private int count2; test2(int ballcount) { count2 = ballcount; } }
上述代码会编译出错:The field test2.count2 is not visible
5、关于下面代码片段叙述正确的是:
byte b1 = 1, b2 = 2, b3, b6; final byte b4 = 4, b5 = 6; b6 = b4 + b5; b3 = (b1 + b2); System.out.println(b3 + b6);
A 输出结果:13
B 语句:b6=b4+b5编译出错
C 语句:b3=b1+b2编译出错
D 运行期抛出异常
解析:被final修饰的变量是常量,这里的b6=b4+b5可以看成是b6=10;在编译时就已经变为b6=10了而b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。Java中的byte,short,char进行计算时都会提升为int类型。
6、下列程序输出结果:
public class ZeroTest { public static void main(String[] args) { try { int i = 100 / 0; System.out.print(i); } catch (Exception e) { System.out.print(1); throw new RuntimeException(); } finally { System.out.print(2); } System.out.print(3); } }
输出结果:12
分析:
1)inti = 100/ 0; 会出现异常,会抛出异常,System.out.print(i)不会执行,
2)catch捕捉异常,继续执行System.out.print(1);
3)当执行 thrownewRuntimeException(); 又会抛出异常,这时,除了会执行finally中的代码,其他地方的代码都不会执行
7、 下列程序输出结果:
public static int aMethod(int i) throws Exception { try { return i / 0; } catch (Exception ex) { throw new Exception("exception in a Method"); } finally { System.out.println("finally"); } } public static void main(String[] args) { try { aMethod(0); } catch (Exception ex) { System.out.println("exception in main"); } System.out.println("finished"); }
输出结果:
finally
exception in main
finished