(1)
局部变量可以和成员变量重名,不加“this”修饰时,优先使用最近的变量。
(2)
static修饰的变量为静态成员变量;
static修饰的方法为静态方法;
静态成员变量,静态方法可以直接通过类名或对象名去调用;
因此A,B,C对;
非静态方法,必须通过对象名去调用;
(3)
抽象方法不能有方法体,仔细点可以看到有大括号。
B 接口里的方法只能用 public 和 abstract 修饰,如果你不写也没关系,默认的也是 public abstract 修饰.
(4)
有以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
请问输出的结果是: false
解析:
因为== 表示的是否指向的是同一个内存。
System.out.println(classa.equals(classb)); 如果这这样输出 答案也是错误的 因为子类没有覆盖Object
的equals()方法,而默认调用==的这个方法 判断两个对象是否相等需要覆盖equals()方法和hashcaode()方法
(5)
在Java中修饰符总共有一下几种:
1.访问控制修饰符
分别有:public private protected,缺省
2.其它修饰符
分别有:abstract,final,static,native,synchronized,transient,volatile等
对于形式参数只能用final修饰符,其它任何修饰符都会引起编译器错误 。但是用这个修饰符也有一定的限制,就是在方法中不能对参数做任何修改。
不过一般情况下,一个方法的形参不用final修饰。只有在特殊情况下,那就是:方法内部类。
一个方法内的内部类如果使用了这个方法的参数或者局部变量的话,这个参数或局部变量应该是final。
通过以上分析,你应该知道答案了吧。
因为字段修饰符包括很多(上面写的),但是方法修饰符只能用final这一个修饰符。
所以说这句话不对。
参数可以是值也可以是对象,且实参才是真正被传递的参数,形参就像局部变量
(6)
子类的构造方法总是先调用父类的构造方法,如果子类的构造方法没有明显地指明使用父类的哪个构造方法,子类就调用父类不带参数的构造方法。
而父类没有无参的构造函数,所以子类需要在自己的构造函数中显示的调用父类的构造,如果没有调用的话,那么就会进行报错
(7)
java中 String str = "hello world"下列语句错误的是?
str+=' a'//str += 'a' 和 str +="a"都是对的,但是如果a前面加一个空格,那么只能用双引号了。代表字符串
int strlen = str.length//这句会出错,数组有length属性,字符串只有length()方法
str=100//int 无法直接转成String类型
(8)
Java程序的种类有:
(a)内嵌于Web文件中,由浏览器来观看的_Applet
(b)可独立运行的 Application
(c)服务器端的 Servlets
(9)
java是类C语言,从C++改进而来
去掉了指针和多继承,采用自动垃圾回收等
(10)
abstract可以修饰方法和类,不能修饰属性。抽象方法没有方法体,即没有大括号{}
(11)
父类静态代码块-->子类静态代码块-->父类普通代码块-->父类构造方法-->子类代码块-->子类构造方法;
类加载的顺序
(12)
重写是父类与子类之间多态性的一种表现
重载是一个类中多态性的一种表现
(13)
给出下面的代码段:
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;
}}
在代码说明// assignment x=a, y=b处写入如下哪几个代码是正确的?()
x=a; y=b;
this(a,b);
new Base(a,b);
不能直接使用Base(a,b);//这个他不是普通方法