来自兰州理工大学Java程序设计期末复习划重点!文章涉及常考知识点。
Java语言有哪些特点?
简单易学、面向对象、平台无关性、可靠性、安全性、支持多线程、支持网络编程、编译与解释并存。
什么是平台无关性?Java语言是怎样实现平台无关性的?
编写的应用程序不用修改就可以在不同的软硬件平台上运行。Java语言是靠JVM在目标代码级实现平台无关性的,可以说JVM是Java平台无关的基础。
环境变量Path和ClassPath的作用是什么?如何设置这两个环境变量?
path环境变量作用是指定命令搜索路径,在命令行下面执行命令如javac编译java程序时,它会到path变量所指定的路径中查找看是否能找到相应的命令程序。classpath环境变量的作用是指定类搜索路径,要使用已经编写好的类,前提是能够找到它们,JVM就是通过classpath来寻找类的。
Java应用程序和小程序之间有哪些差别?
一个程序中可以有多个类,但只能有一个类是主类。 在 Java 应用程序中,这个主类是指包含 main()方法的类。 在 Java 小程序中,这个主类是一个继承自系统类 JApplet 或 Applet 的子类。 应用程序的主类不一定要求是 public 类,但小程序的主类要求必须是 public 类。 主类是 Java 程序执行的入口点。 简单说应用程序是从主线程启动 (也就是 main () 方法)。 applet 小程序没有 main () 方法,主要是嵌在浏览器页面上运行 (调用**init ()或者run ()**来启动),嵌入浏览器这点跟 flash 的小游戏类似。
写出由键盘输入数据的两种基本格式。
在1.5版本之前,Java用BufferedReader来读取输入数据,在1.5版本之后,Java用Scanner来读取输入数据
import java.io.*;
public class Buffer {
public static void main(String[] args) throws IOException {
String str;
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
str = buf.readLine();
}
}
import java.io.*;
import java.util.*;
public class Scan {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
double num = sc.nextDouble();
}
}
编写程序,由键盘输入圆柱体的底半径r和高h,然后计算其体积并输出。
import java.util.*;
public class Exercise {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int r = in.nextInt();
int h = in.nextInt();
System.out.println(Math.PI * r * r * h);
}
}
在键盘上输入数n,编程计算sum = 1 – (1 / 2!) + (1 / 3!) - … + ((-1)^(n - 1))*(1 / n!)。
import java.util.*;
public class Exercise {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
double sum = 0;
int sign = 1, temp = 1;
for (int i = 1; i <= n; i++) {
temp *= i;
sum += sign * (1.0 / temp);
sign = -sign;
}
System.out.println(sum);
}
}
水仙花数是指其个位,十位和百位三个数字的立方和等于这个三位数本身,求出所有的水仙花数。
public class Exercise {
public static void main(String[] args) {
for (int i = 100; i <= 999; i++) {
int temp = i, sum = 0;
while (temp != 0) {
sum += Math.pow(temp % 10, 3);
temp /= 10;
}
if (sum == i)
System.out.println(i);
}
}
}
从键盘输入一个整数,判断该数是不是完全数,完全数是指所有因数(包括1但不包括其本身)的和等于该数自身的数。例如,28=1+2+4+7+14就是一个完全数。
import java.util.*;
public class Exercise {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num = in.nextInt();
int sum = 0;
for (int i = 1; i < num; i++) {
if (num % i == 0)
sum += i;
}
System.out.println(sum == num);
}
}
计算并输出一个整数各位数字之和,如,5423的各位数字之和5+4+2+3。
import java.util.*;
public class Exercise {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num = in.nextInt();
int sum = 0;
while (num != 0) {
sum += num % 10;
num /= 10;
}
System.out.println(sum);
}
}
写Java应用程序,比较命令行中给出的两个字符串是否相等,并输出比较的结果。
public class Exercise {
public static void main(String[] args) {
System.out.println(args[0].equals(args[1]));
}
}
从键盘上输入一个字符串和子串开始的位置与长度,截取该字符串的子串并输出。
import java.util.*;
public class Exercise {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.next();
int start = in.nextInt(), len = in.nextInt();
System.out.println(s.substring(start, start + len));
}
}
从键盘上输入一个字符串和一个字符,从该字符串中删除指定的字符。
import java.util.*;
public class Exercise {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.next();
char c = in.next().charAt(0);
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) != c)
System.out.print(s.charAt(i));
}
}
}
成员变量和局部变量的区别有哪些?
由类和方法的定义可知,在类和方法中均可定义属于自己的变量。类中定义的变量是成员变量,而方法中定义的变量是局部变量。
创建一个对象用什么运算符,对象的实体与对象的引用有什么不同?
创建一个对象使用 new 运算符;对象实体是实在存在于堆内存中的,而对象的引用是管理对象实体的句柄存在于栈内存中。
在成员变量或成员方法前加上关键字this表示什么含义?
this.成员名 表示 对象本身的成员。this 代表调用此成员的对象。
定义一个Student类包含如下内容:
- 成员变量:学号,姓名,性别,班干部否,数学,语文,外语。
- 成员方法:输入,总分,平均分。
编程实现这个类,并调用相应的方法输入数据,计算总分和平均分。
import java.util.*;
public class Student {
private String id;
private String name;
private String gender;
private String isLeader;
private int math;
private int chinese;
private int english;
public void input() {
Scanner in = new Scanner(System.in);
id = in.next();
name = in.next();
gender = in.next();
isLeader = in.next();
math = in.nextInt();
chinese = in.nextInt();
english = in.nextInt();
in.close();
}
public int total() {
return math + chinese + english;
}
public double aver() {
return total() / 3.0;
}
}
什么是方法的重载
重载是指在同一个类内具有相同名称的多个方法,这多个同名方法如果参数个数不同,位置不同或是数据类型不同,则这些同名的方法就具有不同的功能。方法的重载是实现“多态”的一种方法。
对象的相等与指向它们的引用相等,两者有什么不同?
对象的相等指的是对象的内容相等;指向它们的引用相等指的是引用变量指向的地址相同;== 操作符专门用来比较两个变量的值是否相等;equals 方法是用于比较两个独立对象的内容是否相同。
什么是静态初始化器?其作用是什么?静态初始化器由谁在何时执行?它与构造方法有何不同?
静态初始化器是由关键字 static 修饰的一对大括号“{}”括起来的语句组。它是用来完成初始化工作的;静态初始化器有 Java 虚拟机在类初始化的时候一次执行;静态初始化器与构造方法有以下几点不同:
什么是抽象类与抽象方法,使用时应注意哪些问题?
抽象类是以修饰符 abstract 修饰的类,抽象方法是以 abstract 关键字开头的方法,此方法只声明返回值的数据类型、方法名称与所需要的参数,但没有方法体。需要注意的是:
什么是接口,为什么要定义接口?
Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能);
接口实现和类继承的规则不同,为了数据的安全,继承时一个类只有一个直接父类,也就是单继承,但是一个类可以实现多个接口,接口弥补了类的不能多继承缺点,继承和接口的双重设计既保持了类的数据安全也变相实现了多继承。
如何定义接口,接口与抽象类有哪些异同?
接口与抽象类有以下不同:
接口定义的语法格式如下:
[public] interface 接口名称 [extends 父接口列表]
{
[public] [static] [final] 数据类型 成员变量名 = 常量;
[public] [abstract] 返回值的数据类型 方法名(参数表);
}
什么是抛出异常?系统定义的异常如何抛出?用户自定义的异常又如何抛出?
程序在运行过程中,如果发生了异常事件,则产生代表该异常的一个“异常对象”,并把它交给运行系统,再由运行系统寻找相应的代码来处理这一异常。生成异常对象并把它提交给运行系统的过程称为抛出异常;所有系统定义的运行时异常都可以由系统自动抛出;用户自定义的异常不能由系统自动抛出,因而必须借助于 throw 语句来定义何种情况算是产生了此种异常对应的错误,并应该抛出这个异常类的对象。
InputStream,OutputStream,Reader和Writer四个类在功能上有何 异同?
InputStream 和 OutputStream 类通常是用来处理 “字节流” 即 “位流” 的,也就是二进制文件,而Reader 和 Writer 类则是用来处理 “字符流” 的, 也就是文本文件。InputStream、OutputStream、Reader 和 Writer 4 个类均是抽象类,所以不能直接使用这四个类,而是使用它们的子类来创建对象,再利用对象来处理读写操作。
Java程序实现多线程有那两个途径?
Java 语言中实现多线程的方法有两种:一种是继承 java.lang 包中的 Thread 类,另一种是用户在自己定义的类中实现 Runnable 接口。但不管采用哪种方法,都要用到 Java 语言类库中的 Thread 类以及相关的方法。
在什么情况下必须以类实现Runnable接口来创建线程?
如果类本身已经继承了某个父类,由于 Java 语言不允许类的多重继承,所以无法再继承 Thread 类,此时就必须以类实现 Runnable 接口来创建线程。Runnable 接口适合处理多线程访问同一资源的情况,并且可以避免由于 Java 语言的单继承性带来的局限。
什么是事件?简述Java语言的委托事件模型。
所谓事件(Event),就是用户使用鼠标或键盘对窗口中的组件进行交互时所发生的事情。事件用于描述发生了什么事情,对这些事件作出响应的程序称为事件处理程序。在 Java 语言中对事件的处理,采用的是委托事件模型机制。 委托事件模型是将事件源(如命令按钮)和对事件做出的具体处理(利用监听者来对事件进行具体的处理)分离下来。一般情况下,组件(事件源)不处理自己的事件,而是将事件处理委托给外部的处理实体(监听者),这是事件处理模型就是事件的委托处理模型,即事件源将事件处理任务委托给监听者。总的来说,委托事件模型是有产生事件的对象(事件源)、事件对象以及事件监听者对象之间的关系所组成。而其中的 “事件监听者” 就是用来处理事件的对象,也就是说,监听者对象会等待事件的发生,并在事件发生时收到通知。事件源会在事件产生时,将关于该事件的信息封装在一个对象中,这就是 “事件对象”,并将该事件对象作为参数传递给事件监听者,监听者就可以根据该 “事件对象” 内的信息决定适当的处理方式,即调用相应的事件处理程序。