一.JDK和JRE的区别:
JDK:java开发工具包,里边包含了java开发工具(比如说javac,java,javadoc) 和 JRE。
JRE:java运行环境,里边包括 运行java程序所需要的核心类库 和 JVM。
JVM:Java虚拟机,用来保证java程序跨平台的。
JDK包含了JRE。
二.什么是保留字,你知道的保留字有哪些?
保留字:现在还不是关键字,但是在以后的JDK升级版本中可能会升级为关键字的单词。
goto,const都是保留字。
三.Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
可以。因为Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节。中文也是占的两个字节
所以,Java中的字符可以存储一个中文汉字
四.&&和&的区别 及 ||和|的区别。
&&和&的区别:
&&:短路与,有短路效应,前边出现false,后边不执行。
&:逻辑与,无论前边是false还是true,后边都会执行。
他们的运行结果是一样的。
||和|的区别:
||:短路或,有短路效应,前边出现true,后边不执行。
|:逻辑或,无论前边是true还是false,后边都执行。
他们的运行结果是一样的。
五.局部变量和成员变量的区别:
1、在类中的定义位置不同。
局部变量:方法中,或者方法形参上。
成员变量:类中,方法外。
2、在内存中的存储位置不同。
局部变量:栈
成员变量:堆
3、生命周期不同。
局部变量:和方法相关。
成员变量:和对象相关。
4、初始化值不同。
局部变量:没有默认值,必须先定义,在赋值,然后才能使用。
成员变量:有默认值。
整型:0
浮点型:0.0
字符:'\u0000'
布尔:false
引用类型:null
六.静态变量和成员变量的区别:
1、所属不同。
静态变量:类。 类变量。
成员变量:对象。 对象(实例)变量。
2、在内存中的存储位置不同。
静态变量:静态区。
成员变量:堆。
3、在内存中的出现时机不同:
静态变量:类加载。
成员变量:对象的创建。
4、调用方式不同。
静态变量:类名. 或者是 对象名.
成员变量:只能通过 对象名. 的方式来调用。
七.方法重写Override和方法重载Overload有什么区别?
方法重写Override:
子类出现和父类一模一样的方法时,称为方法重写,返回值类型也必须完全一样(或者有子父类关系
方法重载Overload:
同一个类中,出现方法名相同,参数列表不同(个数,对应的类型)的两个或两个以上的方法时称为方法重载,方法重载与返回值的数据类型无关。
八.一个抽象类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
答:可以,这么做的目的只有一个,就是不让其他的类来创建该类的对象。
九.abstract关键字不能和哪些关键字共存?
(1).private:被private修饰的内容,子类是没有办法继承的,但是抽象方法是要求子类必须重写的,所以他们互相矛盾
(2).final:被final修饰的内容,子类是没有办法重写的,但是抽象方法是要求子类必须重写的,所以他们互相矛盾
(3).static:被static修饰的内容可以通过类名.的形式调用,但是我们知道抽象方法是没有方法体的,所以及时可以通过类名.的方式去调用,也是没有任何意义的,所以他们不能共存。
十.package,import,class之间有无顺序关系?
答:有:
从上到下: package --》 import --》 class
注意:
一个java文件中,package语句只能有一个,而import,class可以也多个(class一般一个java文件中只会写一个。
十一.在内部类的成员方法中,如何使用局部变量,内部类的成员变量,以及外部类的成员变量?
局部变量:直接用。
内部类的成员变量:通过 this. 的形式调用。
外部类的成员变量:通过 外部类名.this. 的形式调用。
注意:(内部类之所以能使用外部类的成员,是因为内部类能获取到外部类的引用: 外部类名.this)
十二.==号和equals()方法的区别:
共同点:都可以用来做比较,返回值都是boolean类型。
区别:
1、==号可以用来比较基本类型,也可以用来比较引用类型,
如果比较的是基本类型,比较的是值是否相等,
如果比较的是引用类型,比较的是地址值是否相等。
2、equals()方法只能用来比较引用类型,
Object类中的equals()方法默认比较的对象的地址值是否相等,这样是没有意义的,
子类一般会重写该方法,用来比较: 各个属性值是否相等。
十三.数组,字符串,集合如何获取长度?
数组:length属性
字符串:length()方法
集合:size()方法
十四.JDK1.5以后的新特性:
自动装箱:把基本类型包装成其对应的包装类。
注意:-128~127是byte的取值范围,如果是在这个范围取值,自动装箱就不会创建对象,
如果超出了这个范围,自动装箱才会去新创建对象。
自动拆箱:把包装类拆成其对应的基本类型。
注意:如果对象是null,不能进拆装箱操作。 |
|