天天看点

关于Java的几个问题

由于本人java学的不好,最近在几经挣扎之下终于下定决心找回之前的课本,并在图书馆找个本《java编程思想》。一定要补回这个短板!

下面是几个比较容易混淆或忽略的问题,趁这次复习就自己总结了一下,来加深一下理解,如果能给别人带来些许帮助就更好了。如果路过的兄弟姐妹发现了错误的地方,还请指出来。

1、一个“.java”源文件中是否可以包括多个类?有什么限制?

答案是肯定的,一个java源文件是有若干个相互独立的类组成;说到限制的话,一个java源文件中只能有一个public类,且源文件的名字和public类的名字保持一致。

2、&和&&的区别:

&是按位“与”运算符,操作对象只能是整形数据;

&&是逻辑操纵符,操作对象是boolean型数据或者表达式。

3、java有没有goto?

Java没有goto。(尽管goto是Java中的一个保留字,但是在语言中并未使用它。当然,java中是可以完成一些类似于跳转的操作,这里要用到break和continue关键字了。并且,这里所说的类似于跳转的操作实质上是中断迭代语句,和便签一起使用,具体使用方法百度吧!)

4、switch是否可以作用在byte、long和String上?

switch()括号里面必须为整形或者枚举型。

但是,short、char,byte型数据也可以,以为它们可以通过自动类型转换变为int型;long型变量是不可以的,long不能自动转换为int.

5、char型变量能不能存贮一个中文汉字,为什么?

首先,先看下char的定义,char是用单引号引起的unicode表中的一个字符。unicode表中有汉字,所以char是可以存贮汉字的。

6、“==”和equal()方法的区别?

“==”关系操作符适用于所有的基本数据类型和所有的对象,注意:比较对象是比较的是对象的引用而非对象的内容。

equal方法适用于对象,用于比较对象的内容是否相等。

7、静态变量和实例变量的区别?

静态变量存储在方法区(方法区是一个独立区域,既不属于堆也不属于栈,在类加载时只运行一次)

视力变量存储在stack栈中。

分配内存时:不同对象的实例分配不同的内存空间;而静态变量分配相同的一处内存(即对象共享静态变量)。

8、是否可以从一个static方法内部发出对非static方法的调用?

一般情况下是不可以的。static修饰的方法可以直接通过类名调用,非static修饰的方法必须用类new出对象后才能调用。当我们用类名直接调用时,可能这个类的对象并没有new,如果这时候static方法里调用非static的方法就会出现空指针异常。

9、Integer和int的区别。

int是一个数据类型;Integer是int的包装类,是一个类。包装类可以方便数据类型间的转换。

10、作用域public、private、protected,以及不写时的区别。

public、private、protected都是java中的访问权限修饰词。

public:公共访问权限,加上这个修饰的类或属性、方法,可以被同一个包或者其他包里的对象访问;

private:私有访问权限,加上这个修饰的类或属性、方法,只能被该类中的 对象访问;

protected:保护访问权限,加上这个修饰的类或属性,只能被该类和它的子类访问;

不写时默认包访问权限,只能被同一个包中的对象访问。

访问权限 当前类 同一package 子类 其他package
public
protected
private
包访问权限

11、overload和override的区别,构造方法Constructor是否可以被override?

overload是指一个类中可有有多个名字相同的方法,但是这些方法必须拥有不同的参数(要么参数类型不同要么参数数目不同)。

override 是和继承有关的多态,子类可以重写从父类继承而来的方法(方法 的名字、参数个数、参数类型和父类的方法完全相同)

不能,因为子类不继承父类的Constructor,因此,就没有权限重写,只能通过super关键字来进行调用。

12、接口是否可以继承接口,抽象类是否可实现接口?

接口可以继承接口,可以通过extends关键字声明一个接口是另一个接口的子接口。(由于接口中的方法和常量都是public的,子类将继承接口中的全部方法和常量。

抽象类可以实现接口,但是抽象类不必像普通类那样重写接口中的所有方法。

13、java实现多态的机制是什么?

Java中的多态总是子类型的多态。java中实现多态的机制靠的是父类或者接口定义的引用变量可以指向子类或者具体的实现类的实例对象,而程序调的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法。

14、abstract class和interface有什么区别?

1、abstract class中可以有变量也可以有常量,interface只能有常量不能有变量;

2、abstract class中可以有abstract方法也可以有非abstract方法,但是interface不可以非abstract方法;

3、每个类只能从一个抽象类继承,但是每个类可以实现多个接口

4、它定义了它所有的subclass(子类)应该有的特性,就是在Abstract Class 中声明方法和变量;Interface 则用来定义一个协议,所有的方法都可以实现它。

15、什么是内部类?

内部类就是写在类中或方法中的类。它还是一个类,与其他类的不同就是他只为这个外部类(包含内部类的类)类所用。(内部类可以调用外部类的成员变量和方法)。

16、String是最基本的数据类型吗?

不是,java有8种基本数据类型:boolean、byte、short、int、long、float、double、char。String不在其中。

实质上String是引用类型,本质上是一个对象。

17、是否可以继承String类?

String类是final类故不可以继承。(一切由final修饰过的都不能被继承)