首页 > 编程语言 > 详细

java错题集(1-3)

时间:2019-08-05 19:58:58      阅读:99      评论:0      收藏:0      [点我收藏+]

在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。

 

package com.test;

public class Animal {
    public void say() {
        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 = new Tiger();
        try {
            temp.say();                //从main方法中的调用看,就算抛出了这个异常,也需要不用try-catch捕获
        }catch(Exception e ) {        //捕获了也行
            e.printStackTrace();
        }
        
        Animal animal1 = new Animal();    
        Tiger tiger1 = (Tiger)animal1;   //类型转换异常java.lang.ClassCastException,属于运行时异常,属于不受检查异常
        tiger1.say();                    //内存中就不是Tiger,就该异常。
        
        Animal animal2 = new Tiger();
        Lion lion2 = (Lion)animal2;      //类型转换异常,内存中时Tiger,转成Lion,这种编译时就显示异常,运行时更是
    }
}

class Tiger extends Animal{
    public void say() throws RuntimeException {  //虽然RuntimeException可以不声明,但声明了也行
        System.out.println("Tiger");    
    }
    public void sayHi() {
        System.out.println("Hi");
    }
}

class Lion extends Animal{
    public void say() {
        System.out.println("Lion");
    }
}

 

public static void main(String[] args) {
        String s = null;
        System.out.println(s);        //输出null
        System.out.println(s.toString());    //java.lang.NullPointerException,编译是就报空指针异常,运行后更是
    }

 

java错题集(1-3)

原文:https://www.cnblogs.com/ant-xu/p/11305096.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!