标签:
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 classtest1 {private intcount;public static voidmain(String[] args) {//TODO Auto-generated method stub
test1 t1= new test1(99);
System.out.println(t1.count);
}
test1(intballcount) {
count=ballcount;
}
}
输出结果:
99
分析:count定义为私有属性,并不会阻止构造方法对其进行初始化,当然也可在该类进行调用私有属性,但是如果不在同一个类,则不行。
public classtest1 {public static voidmain(String[] args) {
test2 t2= new test2(88);
System.out.println(t2.count);
}
}classtest2 {private intcount2;
test2(intballcount) {
count2=ballcount;
}
}
上述代码会编译出错:The field test2.count2 is not visible
标签: