1、一个".java"源文件中是否可以包括多个类?有什么限制?
在一个“*.java”文件中可以有多个class定义,但只能有一个 public class定义,且类名要与文件名一致,否则程序无法编译。
2、请解释 PATH 和 CLASSPATH 区别?
PATH : 是操作系统的环境属性,指的是可以执行命令的程序路径。
CLASSPASTH:是所有 *.class 文件的执行路径,java命令执行时将利用此路径加载所需要的 *.class 文件。
3、Java语言的主要特点?
(1)简洁有效 ; (2)可移植性 ;(3)面向对象;(4)解释型;(5)适合分布式计算;(6)拥有较好的性能;(7)健壮、防患于未然;(8)具有多线程处理能力;(9)具有较高的安全性;(10)是一种动态语言;(11)是一种中性结构。
4、Java基本数据类型的大小、范围和默认值
| 数据类型 | 大小/位 | 可表示的数据范围 | 默认值 |
|---|---|---|---|
| byte(字节) | 8 | -128 ~ 127 | 0 |
| short(短整型) | 16 | -32768 ~ 32767 | 0 |
| int (整型) | 32 | -2147483648 ~ 2147483647 | 0 |
| long(长整型) | 64 | -9223372036854775808 ~ 92233720368547758087 | 0 |
| float(单精度) | 32 | -3.4E38 ~ 3.4E38 | 0.0 |
| double(双精度) | 64 | -1.7E308 ~ 1.7E308 | 0.0 |
| char(字符) | 16 | 0 ~ 255 | ‘ 000’ |
| boolean(布尔) | - | true 或false | false |
5、int 最大值 和 最小值 ?
int最大值:Integer.MAX_VALUE
int最小值:Integer.MIN_VALUE
6、关于int 和 char 转换
C语言中转换的编码是 ASCII 码,其编码范围:
A ~ Z : 65 ~ 90
a ~ z : 97 ~ 122
大写字母 和 小写字母之间相差 32 ,Java的编码同样地继承了这一特性。
7、char型变量能否保持一个中文汉字?为什么?
能够存储一个中文,Java中以 UNICODE 编码,一个char 占 16字节,所以可以保存一个中文。
8、常用的转义字符
| NO. | 转义字符 | 描述 |
|---|---|---|
| 1 | f | 换页 |
| 2 | b | 倒退一格 |
| 3 | r | 归位 |
| 4 | t | 制表符Tab |
| 5 | \ | 反斜线 |
| 6 | ’ | 单引号 |
| 7 | " | 双引号 |
| 8 | n | 换行 |
9、如何可以更快地计算出 2 的 3 次方?
直接采用 “ 2 * 2 * 2 " 显然不是最快的,因为需要数学计算过程,由于计算机的数据都是按位保存的,所以针对此问题移位的速度是最快的。
10、请解释 & 和 && , | 和 || 的区别?
逻辑运算上:
> & : 表示普通与,所有的判断条件都要依次执行;
> && : 表示短路与,若干个条件,如果前面的条件返回了false,那么后面的不再判断,结果就是false;
> | :表示普通或,所有的判断条件都有依次执行;
> || : 表示短路或,若干个条件,如果前面的调剂返回了true,后面的不再判断,结果就是true。
位运算上:
&表示位与计算,|表示或计算。
11、switch是否能作用在 byte 数据上? 是否能作用在 long 上? 是否能作用在String 上?
“switch( expression )”中,expression 是一个整数表达式,传递给 switch 和 case 语句的参数应该是 int、short、char 或 byte,而对于 long 却不可使用。在JDK1.7之前,String 都不能作用于 switch,JDK1.7后switch 支持了String 的判断。
12、类与对象的简单理解
“类是对象的模板,而对象是类的实例”,即对象所具备的所有行为都是由类来定义的,按照这种方式理解,在开发中应该先定义出类的结构,之后再通过对象来使用这个类。
13、请编写一个数组排序操作
基本素质的程序之一,在回答此问题时一定不要直接编写“ java.util.Arrays.sort( 数组 )”语句完成排序。标准做法是自己编写代码实现排序,最后补充一句“ java.util.Arrays.sort( 数组 )”可以完成排序。
public class TestDemo{
public static void main(String args[]){
int data[] = new int[]{1,3,2,6,10,0,5,8};
sort(data);
print(data);
}
public static void sort(int temp[]){
for(int x = 0 ; x < temp.length - 1 ; x++){
for(int y = 0 ; y < temp.length - 1 ;y++){
if(temp[y] > temp[y + 1]){
int t = temp[y];
temp[y] = temp[y + 1];
temp[y + 1] = t;
}
}
}
}
public static void print(int temp[]){
for(int x = 0 ; x < temp.length ; x++){
System.out.print( temp[x] + "、");
}
System.out.println();
}
}
14、请写出二维数组的行列转置
public class TestDemo {
public static void main(String args[]){
int data[][] = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
reverse(data);
print(data);
}
public static void reverse(int temp[][]){
for(int x = 0 ; x < temp.length ; x++){
for(int y = 0 ; y < temp[x].length ; y++){
int t = temp[x][y];
temp[x][y] = temp[temp.length - x - 1][temp.length - y - 1];
temp[temp.length - x - 1][temp.length - y -1] = t;
}
}
}
public static void print(int temp[][]){
for(int x = 0; x < temp.length ; x++){
for(int y = 0; y < temp[x].length; y++){
System.out.print(temp[x][y]+ "、");
}
System.out.println();
}
System.out.println();
}
}
-
15、请解释 String 类中 “ == ” 和 “ equals()” 的区别?
- == :比较的是两个字符串内存地址的数值是否相等,属于数值比较;
- equals() : 比较的是两个字符串的内容,属于内容比较。
16、查看Java的开发文档
17、Java常用内存区域
Java中主要存在四块内存空间,这些内存空间的名称作用如下:
(1)栈内存空间:保存所有对象名称(更准确地说是保存了引用的堆内存空间的地址)。
(2)堆内存空间:保存每个对象的具体属性内容。
(3)全局数据区:保存static类型的属性。
(4)全局代码区: 保存所有的方法定义。
18、请解释Static Nested Class 和 Inner Class 的不同?
Static Nested Class 是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。
实例化比较:
非static定义内部类: 外部类.内部类 内部类对象 = new 外部类().new 内部类();
static定义内部类:外部类.内部类 内部类对象 = new 外部类.内部类();
19、请解释下 this 和 super 的区别?
| 区别 | this | super |
|---|---|---|
| 定义 | 表示本类对象 | 表示父类对象 |
| 使用 | 本类操作:this.属性、this.方法()、this.() | 父类操作:super.属性、super.方法()、super() |
| 调用构造 | 调用本类构造,要放在首行 | 子类调用父类构造,放在首行 |
| 查找范围 | 先从本类查找,找不到再查找父类 | 直接由子类查找父类 |
| 特殊 | 表示当前对象 | - |
20、请解释下方法重载与覆写的区别,当方法重载时能否改变其返回值类型?
方法重载与覆写的区别:
| 区别 | 重载 | 覆写 |
|---|---|---|
| 英文单词 | Overloading | Overriding |
| 定义 | 方法名称相同、参数的类型及个数不同 | 方法名称、参数类型及个数、返回值类型完全相同 |
| 权限 | 没有权限要求 | 被子类所覆写的方法不能拥有比父类更严格的访问控制权限 |
| 范围 | 发生在同一个类中 | 发生在继承关系类中 |
方法重载时可以改变返回值类型,但一般设计中不会这样做,即方法的返回值参数尽量统一。
21、构造方法 Constructor 是否可被 Override ?
构造方法 Constructor 不能被继承,因此不能重写 Ovrriding,但可以被重载 Overloading。



