在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();
Animal animal1 = new Animal();
Tiger tiger1 = (Tiger)animal1; //类型转换异常java.lang.ClassCastException,属于运行时异常,属于不受检查异常
tiger1.say(); //内存中就不是Tiger,就该异常。
Animal animal2 = new Tiger();
Lion lion2 = (Lion)animal2; //类型转换异常,内存中时Tiger,转成Lion,运行时异常
Tiger temp = new Tiger();
try {
temp.say(); //从main方法中的调用看,就算抛出了运行时异常,也需要不用try-catch捕获
}catch(Exception e ) { //当然捕获了也行
e.printStackTrace();
}
}
}
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,编译是就报空指针警告
}
public class Test {
public static void main(String[] args) {
System.out.println(div(1,1)); //返回值是0
}
static double div(double a, double b) {
try {
return 1.0;
}catch(Exception e) {
e.printStackTrace();
}finally { //没有finally会报错。即便return 1.0一定会返回。
return 0;
}
}
}
public static void main(String[] args) {
int x = 4;
System.out.println((x>4)?9.9:9); //9.0
System.out.println((x>4)?9:8); //8
}