本期主题:
3天掌握《Java编程与面试2024》的核心篇章19问,即Java基础面试题篇19问。
下面,先来介绍一下,本篇章的核心19问:
第一章【Java基础面试题篇】(19问)
1、Java语言,有哪些特点?
2、char类型变量,是否能保存一个汉字?
3、==和equals()的区别?
4、final、finally、finalize的区别?
5、一个.java源文件中,是否可以包含多个类(不是内部类)呢?又有什么限制呢?
6、&与&&的区别?
7、JAVA中的保留字,都有什么?
8、Colle和Colles的区别?
9、如何去掉Vector集合中的重复元素?
10、ArrayList和Vector的区别?
11、HashMap和Hashtable的区别?
12、说说ArrayList,Vector, LinkedList三者的存储性能和特性?
13、HashMap与TreeMap的区别?
14、List、Map、Set三个接口,在存储元素时,各有什么特点?
15、在Java中,List是个接口,那实现List接口的类有哪些,它们又有什么区别?
16、判断下列语句是否正确,如果有错误,请指出错误所在?
17、A=10, B=20使得两值互换?
18、只移动一个数字,使62 - 63 = 1成立(不能移动符号)?
19、字符串面试的经典源码示例?
......
第一章【Java基础面试题篇】
1、Java语言,有哪些特点?
答:
简单性(Simple);
结构体系中立(Architecture ral);
面向对象(Object Oriented);
易于移植(Portable);
分布式(Distributed);
高性能(High Performantce);
多线程(Multithreaded);
健壮性(Robust);
动态性(Dynamic);
安全性(Secure)。
...
2、char类型变量,是否能保存一个汉字?
答:可以。
在Java语言中,一个char类型变量占16位bit(即2个字节byte)的存储空间。
由于Java语言,使用Unicode字符集对字符进行编码...
因此,char类型变量可以存储任何字符;
这些字符,可以是英文字符、汉字、日文片断,以及其它国家的许多字符。
相关详细知识点:
在计算机中的存储单位,是以字节为单位的。
常见的磁盘大小和文件大小,分别以GB、MB、KB等来表示...
它们之间的换算单位是1GB=1024MB,1MB=1024KB,1KB=1024byte(即字节)。
每个字节的取值范围是-128到127,它可以保存一个英文字符,包括字母、数字和英文标点。
而汉字的存储,是由2个字节保存的。
因为汉字的数量太多,它的编码范围,远远超过一个字节的取值范围...
所以,必须要使用双字节来表示。在Java语言中...
使用Unicode字符集,对字符进行编码,可以存储65535个字符。
所以Java字符类型,被定义为双字节。
因此,在Java语言中,可以使用char类型变量,来存储汉字。
...
3、==和equals()的区别?
答:有2点区别,即...
(1)==,是用于比较基本数据类型的值,以及比较引用数据类型,在内存中存放的地址。
(2)equals方法,在比较引用数据类型时...
如果没有覆盖Object类的equals方法,则同==一样,比较内存中的存放地址;
反之,则像String字符串等类的equals方法一样,去比较引用数据类型的内容了。
...
4、final、finally、finalize的区别?
答:
final,用于声明属性,方法和类...
分别表示属性不可变,方法不可覆盖,类不可继承。
\tfinally,是异常处理语句结构的一部分,表示总是执行。
finalize,是Object类的一个方法...
在垃圾收集器执行的时候,会调用被回收对象的此方法;
可以覆盖此方法,以提供垃圾收集时的其它资源回收,例如关闭文件等。
...
5、一个.java源文件中,是否可以包含多个类(不是内部类)呢?又有什么限制呢?
答:可以包含多个类。
但,只能有一个public类,且public的类名,必须与文件名一致。
...
6、&与&&的区别?
答:主要有点区别,即...
(1)&和&&都可以用作逻辑与(and)运算;
(2)&&还具有短路的功能;
(3)&还可以按位运算。
下面,详细说明下以上3点区别:
(1)&和&&用作逻辑与运算符
&和&&,都可以用作逻辑与的运算符,表示逻辑与(and)。
当运算符,两边表达式的结果,都为true时...
整个运算结果才为true;
否则,只要有一方为false,则结果为false。
(2)&&有短路功能
&&除了可作逻辑与运算符外,还具有短路的功能...
即如果第一个表达式为false,则不再计算第二个表达式。
例如,对于if(str != null &&!str.equals(“”))表达式...
当str为null时,后面的表达式不会执行;
所以不会出现NullPointerException空指针异常。
而如果将&&改为&,此时则会抛出NullPointerException异常了。
在If(x==33 &++y>0)中,y会增长;
而在If(x==33 &&++y>0)中,则不会增长。
(3)&用作位运算符
&还可以用作位运算符。
当&操作符两边的表达式,不是boolean类型时...
&表示“按位与”操作。
我们通常使用0x0f,来与一个整数进行&运算...
来获取该整数的最低4个bit位。
例如,“0x31 & 0x0f”的结果为“0x01”。
...
7、JAVA中的保留字,都有什么?
答:goto,st。
关键字Keyword:
Java的关键字,对Java的编译器有特殊的意义...
它们用来表示一种数据类型,或者表示程序的结构等。
保留字Reserved word:
保留字,是为java预留的关键字。
它们虽然现在没有作为关键字,但在以后的升级版本中,有可能作为关键字。
...
8、Colle和Colles的区别?
答:主要2点区别,即...
(1)Colle是集合类的上级接口,继承于它的主要接口有List和Set;
(2)Colles是针对集合类的一个帮助类...
它提供了,一系列静态方法,以实现对各集合的搜索、排序、线程安全化等操作。
...
9、如何去掉Vector集合中的重复元素?
答:有两种方式可以去掉Vector集合中的重复元素。
下面,我来具体说说这两种方式...
方式一:
Vector or = new Vector();
for(int i = 0; i < vector.size(); i++){
Object obj = vectet(i);
if(!or.tains(obj)){
or.add(obj);
}
}
方式二:
HashSet set = new HashSet(vector);
因为,HashSet集合中允许存在重复元素。
...
10、ArrayList和Vector的区别?
答:两者的同步性和数据增长不同。
一、同步性不同
Vector是线程安全的,也就是同步的。
而ArrayList,则是线程不安全的,不是同步。
二、数据增长不同
当需要增长时,Vector默认增长为原来的一倍。
而ArrayList,却是原来的一半。
...
11、HashMap和Hashtable的区别?
答:两者主要有三点区别,即...
一、历史来源不同
Hashtable,是基于陈旧的Diary类的。
而HashMap,则是Java 1.2引进的Map接口的一个实现类。
二、同步性不同
Hashtable是线程安全的,也就是同步的。
而HashMap,不是线程安全的,不是同步的。
三、是否允许“空值”不同
只有HashMap,可以让你将一个空值,作为一个表条目的key或value。
...
12、说说ArrayList,Vector, LinkedList三者的存储性能和特性?
答:
ArrayList和Vector,都是使用数组方式存储数据...
此数组元素数,大于实际存储的数据,以便增加和插入元素。
它们都允许,直接按序号索引元素...
但插入元素,要涉及数组元素移动等内存操作;
所以,索引数据快,而插入数据慢。
Vector,由于使用了synized方法(线程安全)...
通常在性能上,较ArrayList差。
而LinkedList,是使用双向链表实现存储的...
按序号索引数据,需要进行前向或后向遍历;
但插入数据时,只需要记录本项的前后项即可,所以插入速度较快。
...
13、HashMap与TreeMap的区别?
答:
HashMap是通过hashcode,对其内容进行快速查找的。
而TreeMap中所有的元素,都保持着某种固定的顺序。
所以,如果你需要得到一个有序的结果...
那么,你就应该使用TreeMap。
因为,HashMap中元素的排列顺序,是不固定的。