[size=medium]1、super与this的区别?
super是我们在子类中想使用被子类隐藏的父类的成员变量或方法时,可以使用的关键字。
this出现在类的实例方法中,代表使用该方法的当前对象。也可以出现在类的构造方法中,代表使用该构造方法所创建的对象。
this()代表当前类对象,super()代表父类对象。
表示在子类访问父类的成员和行为,必须受到类继承规则的约束。
在子类的构造函数中,如果第一行没有写super(),编译器会自动插入。但是如果父类没有不带参数的构造函数,或这个构造函数被私有化了,此时必须加入对父类的实例化构造。而this就没有这个要求,因为其本身就进行了实例化构造。
在方法中super和this的使用就差不多了,只不过super要考虑是否访问其父类的资源。
2、继承的时类的执行顺序问题:
请看源码:
A.父类[/size]
[/size]
[size=medium] 请写出B中子类执行后的输出结果。
程序执行首先找的是main方法,而其第一句执行的结果是:FatherClass Create。
由于子类的构造方法中的第一行隐藏着super(),所以执行第二句时,首先还是调用父类的构造方法,所以又输出:FatherClass Create,最后才调用子类自己的构造方法,输出:ChildClass Create
所以答案为:
FatherClass Create
FatherClass Create
ChildClass Create
3、String与StringBuffer的区别
String:长度给定,内容不可变,当多个字符串联合时要先转换为StringBuffer,然后再联合,速度较慢。
StringBuffer:长度可变,内容也可以修改。如:可以在任意位置添加、删除、替换、截取内容,还能反转内容,查找指定内容是否存在。其中添加append)、反转(reverse)是String所没有的。
还可以将多个字符串值直接联合,效率高。
总的来说,在频繁修改字符串内容的地方,最好使用StringBuffer来完成,因为它效能高!
4、编程:使用冒泡法排序一个数组。
[/size]
[size=medium]
5、String是最基本的数据类型吗?
答:不是,他是java.lang包中一个final类,因此不能继承或则修改该类。
基本的数据类型包括:byte、short、int、long、float、double、char和boolean。
6、int和Integer有什么区别?
答:int是基本数据类型,不是对象、占用一个内存空间,没有方法。基本数据类型还有:long、byte、short、float、double、char以及boolean。
Integer是封装类,有方法以及属性。基本数据类型中相对应的类还有:Long、Double以及Float。
7、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,
输出为按字节截取的字符串。 但是要保证汉字不被截半个,
如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,
应该输出为"我ABC"而不是"我ABC+汉的半个"。[/size]
[size=medium]
8、"&"与"&&"的区别是什么?
"&"可以代表位运算符"按位与",也可以代表逻辑运算符"与",此时表示符号两边的条件语句都不判断,即第一个条件为false,第二条件还是要执行。
"&&"代表逻辑运算符"短路与",表示如果第一个条件为false的话,第二个条件就不执行了。
9、float f = 3.4是否正确?
答:错误,因为实数在java中默认的类型为double,即双精度型,长度为64字节,而float为浮点型,长度为32字节,3.4是double型的,赋值个float会损失精度,会内存溢出。应该写为:float f = 3.4F,也可以用自动类型转换:float f = 3;
10、编程:用最有效的方法算出2乘以8等于几?
[/size]
[size=medium]11、char类型变量中能不能存储一个中文汉字,为什么?
答:可以,因为java中是以unicode编码的,一个char占2个字节,而一个中文汉字也占2个字节,所以完全能放的下。
12、数组有没有length()这个方法? String有没有length()这个方法?
答:数组没有length()这个方法,有length这个属性
String有length()这个方法.[/size]
super是我们在子类中想使用被子类隐藏的父类的成员变量或方法时,可以使用的关键字。
this出现在类的实例方法中,代表使用该方法的当前对象。也可以出现在类的构造方法中,代表使用该构造方法所创建的对象。
this()代表当前类对象,super()代表父类对象。
表示在子类访问父类的成员和行为,必须受到类继承规则的约束。
在子类的构造函数中,如果第一行没有写super(),编译器会自动插入。但是如果父类没有不带参数的构造函数,或这个构造函数被私有化了,此时必须加入对父类的实例化构造。而this就没有这个要求,因为其本身就进行了实例化构造。
在方法中super和this的使用就差不多了,只不过super要考虑是否访问其父类的资源。
2、继承的时类的执行顺序问题:
请看源码:
A.父类[/size]
package test;
public class FatherClass{
public FatherClass(){
System.out.println("FatherClass Create");
}
}
[size=medium]B.子类
[/size]
package test;
import test.FatherClass;
public class ChildClass extends FatherClass{
public ChildClass(){
System.out.println("ChildClass Create");
}
public static void main(String[] args){
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
[size=medium] 请写出B中子类执行后的输出结果。
程序执行首先找的是main方法,而其第一句执行的结果是:FatherClass Create。
由于子类的构造方法中的第一行隐藏着super(),所以执行第二句时,首先还是调用父类的构造方法,所以又输出:FatherClass Create,最后才调用子类自己的构造方法,输出:ChildClass Create
所以答案为:
FatherClass Create
FatherClass Create
ChildClass Create
3、String与StringBuffer的区别
String:长度给定,内容不可变,当多个字符串联合时要先转换为StringBuffer,然后再联合,速度较慢。
StringBuffer:长度可变,内容也可以修改。如:可以在任意位置添加、删除、替换、截取内容,还能反转内容,查找指定内容是否存在。其中添加append)、反转(reverse)是String所没有的。
还可以将多个字符串值直接联合,效率高。
总的来说,在频繁修改字符串内容的地方,最好使用StringBuffer来完成,因为它效能高!
4、编程:使用冒泡法排序一个数组。
[/size]
public class BubbleSort{
private static int al[] = {55,25,3,4,22,9};
public static void main(String[] args) {
BubbleSort bs = new BubbleSort();
System.out.println("排序前:");
display(al);
for(int i=1;i<al.length;i++) {
for (int j = 0; j < al.length; j++) {
if(al[j]>al[i]) {
swap(i,j);
}
}
}
System.out.println();
System.out.println("排序后:");
display(al);
}
private static void display(int[] al2) {
for (int i = 0; i < al2.length; i++) {
System.out.print(al2[i]+" ");
}
}
private static void swap(int i, int j) {
int temp = al[i];
al[i]= al[j];
al[j] = temp;
}
}
[size=medium]
5、String是最基本的数据类型吗?
答:不是,他是java.lang包中一个final类,因此不能继承或则修改该类。
基本的数据类型包括:byte、short、int、long、float、double、char和boolean。
6、int和Integer有什么区别?
答:int是基本数据类型,不是对象、占用一个内存空间,没有方法。基本数据类型还有:long、byte、short、float、double、char以及boolean。
Integer是封装类,有方法以及属性。基本数据类型中相对应的类还有:Long、Double以及Float。
7、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,
输出为按字节截取的字符串。 但是要保证汉字不被截半个,
如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,
应该输出为"我ABC"而不是"我ABC+汉的半个"。[/size]
public class quiz{
public static void main(String args[])throws Exception{
String str = "我ABC汉DEF";
String str2 = split1(str,1);
System.out.println(str2);
}
public static String split1(String source,int num) throws Exception{
int k=0;
String temp="";
for (int i = 0; i <source.length(); i++){ //将源字符串拆分为字符数组
byte[] b=(source.charAt(i)+"").getBytes();
k=k+b.length;
if(k>num){
break;
}
temp=temp+source.charAt(i);
}
return temp;
//System.out.println(temp);
}
}
[size=medium]
8、"&"与"&&"的区别是什么?
"&"可以代表位运算符"按位与",也可以代表逻辑运算符"与",此时表示符号两边的条件语句都不判断,即第一个条件为false,第二条件还是要执行。
"&&"代表逻辑运算符"短路与",表示如果第一个条件为false的话,第二个条件就不执行了。
9、float f = 3.4是否正确?
答:错误,因为实数在java中默认的类型为double,即双精度型,长度为64字节,而float为浮点型,长度为32字节,3.4是double型的,赋值个float会损失精度,会内存溢出。应该写为:float f = 3.4F,也可以用自动类型转换:float f = 3;
10、编程:用最有效的方法算出2乘以8等于几?
[/size]
public int Multiple(){
int a = 2;
int b = 3;
int result = 0;
result = a << b;
return result;
}
[size=medium]11、char类型变量中能不能存储一个中文汉字,为什么?
答:可以,因为java中是以unicode编码的,一个char占2个字节,而一个中文汉字也占2个字节,所以完全能放的下。
12、数组有没有length()这个方法? String有没有length()这个方法?
答:数组没有length()这个方法,有length这个属性
String有length()这个方法.[/size]