在Test.java中下面类的定义错在哪里?
protected class test extends T1, T2{}
1、外部类的访问修饰符只有public和默认(friendly)。
2、如果该类的定义是public则和源文件名不同,如果源文件中没有被public修饰的类,文件名可以任意不用与任一个类相同。
3、java只有单继承。
给出下面的代码段:
public class Base{
int w, x, y, z;
public Base(int a, int b){
x = a; y = b;
}
public Base(int a, int b, int c, int d){
//assignment x = a, y=b
w = d; z = c;
}
}
在注释的内容处可以填写哪些内容。(c,d)
A: Base(a,b); B: x=a,y=b; C: x=a;y=b; D: this(a,b);
其中A的报错信息为,该方法没有定义。应该是只能通过this调用。一条语句只能有一个赋值语句。
像B选项只能出现在声明语句中。并且this和super必须为第一句话,所以它俩不能共存。
a = 20 的返回值是20,即赋值语句的返回值是该值。
下面那个函数是public void example(){}的重载函数。(a,d)
A: public void example(int m){} B: public int example(){}
C: public void example2(){} D: public int example(itn m, float f){}
java函数重载有三条
1、函数名相同
2、参数个数不同或者参数类型不同
3、函数重载和返回值类型无关(即只改变返回值不算重载,但是重载可以改变返回值)
String [] strs = new String[3]{"a", "b", "c"}; 该语句错误,不能这样写。
类名 对象名; 这样的对象声明只会分配一个指针。并没有分配内存对象空间。
显然,private和abstract是不能同时修饰一个函数的。
局部变量不能有访问修饰符,因为局部代码执行过后局部变量就不存在了。
局部变量没有默认值,但是数组在new后其中的元素会被初始化为0值(包括对象数组)。
double可以用%,37.2%10==7.2。
public static void main(String args []),这个args可以换成别的,随心情。
java对象的三个特点:封装、继承、多态,四个特点就加一个抽象。
float m = 5/2。此时m的值为2.0。
api就是人家提供的很多已经写好的类,简化我们的开发。
i+1>i不一定为真,i可能溢出。整形溢出时变成-0。
静态方法或者静态代码块中不能有this、super。
packagecom.test;public classAnimal {public voidsay() {
System.out.println("Animal");
}public static void main(String[] args) { //下面部分所有的代码都不会报错
Animal animal = (Animal)new Tiger(); //赋值右边的类型转换毫无意义,不加也会上转型的。
animal.say(); //输出Tiger,调用的时候,看内存中到底是谁,是谁就是谁的方法。//animal.sayHi();//注释内容会报错,父类没有子类中自己定义的方法。
Tiger tiger = (Tiger)animal; //原本就是Tiger类的对象,向下转型没毛病。
tiger.say();
Tiger temp= newTiger();try{
temp.say();//从main方法中的调用看,就算抛出了这个异常,也需要不用try-catch捕获
}catch(Exception e ) { //捕获了也行
e.printStackTrace();
}
Animal animal1= newAnimal();
Tiger tiger1= (Tiger)animal1; //类型转换异常java.lang.ClassCastException,属于运行时异常,属于不受检查异常
tiger1.say(); //内存中就不是Tiger,就该异常。
Animal animal2= newTiger();
Lion lion2= (Lion)animal2; //类型转换异常,内存中时Tiger,转成Lion,这种编译时就显示异常,运行时更是
}
}class Tiger extendsAnimal{public void say() throws RuntimeException { //虽然RuntimeException可以不声明,但声明了也行
System.out.println("Tiger");
}public voidsayHi() {
System.out.println("Hi");
}
}class Lion extendsAnimal{public voidsay() {
System.out.println("Lion");
}
}
public static voidmain(String[] args) {
String s= null;
System.out.println(s);        //输出null
System.out.println(s.toString());//java.lang.NullPointerException,编译是就报空指针异常,运行后更是
}