第一题
下面代码的输出是
class C {
public static void main (String [] args) {
int x = 1;
System.out.print((x > 1) & (x++ > 1));
System.out.print(“ ”);
System.out.print((x > 1) && (x++ > 1));
}
}
//输出结果:false true
&和&&的区别
&会判断两个表达式,非短路运算符
&&针对boolean类型的进行判断,“短路”运算符,判断第一个为false则不再判断
2. Java中所有的方法都必须在类内定义
3. C++中的布尔类型关键字是bool,而Java的类型关键字是boolean,它只能取true和false
4.
class C {
public static void main(String[] args) {
String s = “Welcome to ”;
concat(s);
System.out.print(s);
}
public static void concat(String s) {
s += “Java”;
}
}
输出结果为:Welcome to
解析:
concate方法传递是是引用,所以尽管局部变量都是s,但是concate中的s和调用者的s是不同的两个对象,它们只是都引用自常量池中的一个字符串。s+="Java"等价于下面的语句:
String foo=s+“Java”;
s=foo;
又因为String是一个不可变对象,因此foo是一个新的String,而s=foo改变了s的引用指向,但是这不影响调用者的s变量。也就是说,此时二者指向的是不同的两个常量池字符串引用,这和C++是不同的。
这就要从java底层的机制讲起了,java的内存模型分为 堆 和 栈 。
1.基本类型的变量放在栈里;
2.封装类型中,对象放在堆里,对象的引用放在栈里
第五题:
class C {
public static void main(String[] args) {
String s = “null”;
if(s == null)
System.out.print(“a”);
else if(s.length() == 0)
System.out.print(“b”);
else
System.out.print(“c”);
}
}
结果:c
解析:字符串是值是四个字符组成的串:‘n’,‘u’,‘l’,‘l’,和null这个特殊值不一样
第六题:
java中,浮点数字面量的类型是double,不能直接赋值给float,否则需要加后缀f:
float f=100.0f;
第七题:
Java中存在一种基本的数据类型,该类型定义的变量不能与其他类型转换,定义该类型用boolean
第八题:
1.Java语言中有4种基本的整数类型,哪种类型所占的内存空间最大,写出定义该类型的关键字 long 8字节
Java语言中有4种基本的整数类型,哪种类型所占的内存空间最小,写出定义该类型的关键字 byte 1字节
四种基本整数类型是byte,short,int,long,分别占内存大小位1,2,4,8字节
2.switch不能够接受long类型的值,只能接受char、byte、short、int,以及他们的装箱类型,此外还有String和enum类型的变量
3.布尔型定义的成员变量是有默认值的,它的值是false;
4.声明一个值为3.14的double型常量PI的语句为
final double PI=3.14;
第九题:
1.假设StringBuffer s = new StringBuffer(“Welcome to JAVA”);
将s的内容清空的语句是:
s=new StringBuffer();;s.setLength(0);;s.delete(0,s.length());
2.Java源程序经过编译后生成被称为(字节码;byte code)的特殊机器语言码,然后经过(
虚拟机;JVM;Java虚拟机)解释运行。