Java

1、 Java语言有哪些特点?
简单易学、面向对象、平台无关性、可靠性、安全性、支持多线程、支持网络编程、编译与解释并存。
2、 什么是平台无关性?Java语言是怎样实现平台无关性的?
编写的应用程序不用修改就可以在不同的软硬件平台上运行。Java语言是靠JVM在目标代码级实现平台无关性的,可以说JVM是Java平台无关的基础。
3、 应用程序与小程序的主类有何不同?
Java应用程序的主类必须包含一个定义为public static void main(String[] args);Java小程序的主类必须是一个继承自系统JApplet或Applet的子类,且该类必须是public类。
4、 什么是JDK?
JDK是 Java 语言的软件开发工具包,是整个java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库。
5、 环境变量Path和ClassPath的作用是什么?如何设置这两个环境变量?
path环境变量作用是指定命令搜索路径,在命令行下面执行命令如javac编译java程序时,它会到path变量所指定的路径中查找看是否能找到相应的命令程序。classpath环境变量的作用是指定类搜索路径,要使用已经编写好的类,前提是能够找到它们,JVM就是通过classpath来寻找类的。
6、 由键盘输入数据的两种基本格式。
(1)BufferedReader类
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();
}
}
(2)Scanner类
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();

}
}
7、 类与对象的区别是什么?
类是对某一类事物的描述,是抽象的、概念上的定义;对象则是实际存在的属该类事物的具体的个体,对象是类的实例化,因而也称为实例。
8、 如何定义一个类?类的结构是怎样的?
定义类实际上就是定义类的属性与方法。
类的一般结构如下:
[类修饰符] class 类名称{
[修饰符] 数据类型 成员变量名称;
[修饰符] 返回值的数据类型 方法名(参数1, 参数2, ......){

   语句;
   return [表达式];

}
}

9、 定义一个类时所使用的修饰符有哪几个?每个修饰符的作用是什么?是否可以混用?
定义一个类时所使用的修饰符有 4 个,一个类可以有多个修饰符,且无先后顺序之分,但 abstract 和 final 相互独立,所以不能同时应用在一个类的定义中,每个修饰符的作用如下:
修饰符
含义
public
将一个类声明为公共类,它可以被任何对象访问
abstract
将一个类声明为抽象类,没有实现方法,需要子类提供方法的实现,所以不能创建该类的实例
final
将一个类声明为最终类即非继承类,表示它不能被其他类所继承
缺省
缺省修饰符时,则表示只有在相同包中的对象才能使用这样的类

10、 成员变量和局部变量的区别有哪些?
由类和方法的定义可知,在类和方法中均可定义属于自己的变量。类中定义的变量是成员变量,而方法中定义的变量是局部变量。
(1) 从语法形式上看,成员变量是属于类的,而局部变量是在方法中定义的或是方法的参数;成员变量可以被 public、private、static 等修饰符所修饰,而局部变量则不能被访问控制符及 static 所修饰;成员变量和局部变量都可以被 final 修饰。
(2) 从变量在内存中的存储方式上看,成员变量是对象的一部分,而对象是存在与堆内存中的,而局部变量是存在与栈内存中的。
(3) 从变量在内存中的生存时间上看,成员变量是对象的一部分,它随着对象的创建而存在,而局部变量随着方法的调用而产生,随着方法调用的结束而自动消失。
(4) 成员变量如果没有被赋初值,则会自动以类型的默认值赋值(有一种情况例外,被 final 修饰但没有被 static 修饰的成员变量必须显式的赋值);而局部变量则不会自动赋值,必须显式地赋值后才能使用。

11、 创建一个对象用什么运算符,对象的实体与对象的引用有什么不同?
创建一个对象使用 new 运算符;对象实体是实在存在于堆内存中的,而对象的引用是管理对象实体的句柄存在于栈内存中。
12、 在成员变量或成员方法前加上关键字this表示什么含义?
this.成员名 表示 对象本身的成员。this代表调用此成员的对象。
13、 方法的“覆盖”与方法的“重载”有何不同?
重载是指在同一个类,内定义多个名称相同,但参数个数或类型不同的方法,从而,Java 系统便可根据参数的个数或类型,调用相对应的方法;
覆盖是指在子类中,定义名称、参数个数与类型均与父类完全相同的方法,用来重写父类中同名方法的操作。
14、 this 和 super 分别有什么特殊含义?
super 是从子类调用调用父类的成员,包括构造方法、成员变量和成员方法。
this 是用来调用同一类内的成员,包括构造方法、成员变量和成员方法。
15、 什么是最终类与最终方法?它们的作用是什么?
在默认情况下,所有的成员变量和成员方法都可以被覆盖,如果父类的成员不希望被子类的成员所覆盖就可以将它们声明为 final。如果用 final 修饰成员变量,则成员变量是最终变量,即常量;如果用 final 修饰成员方法,则该方法为最终方法;如果一个类被 final 修饰符所修饰,则说明这个类不能被其他类所继承,即该类不可能有子类,这种类被称为最终类。
16、 什么是抽象类与抽象方法?使用时应注意哪些问题?
抽象类是以修饰符 abstract 修饰的类,抽象方法是以 abstract 关键字开头的方法,此方法只声明返回值的数据类型、方法名称与所需要的参数,但没有方法体。
需要注意的是:

  1. 由于抽象类是需要被继承的,所以 abstract 类不能用 final 来修饰。也就是说,一个类不能既是最终类,又是抽象类,即关键字 abstract 与 final 不能合用。
  2. abstract 不能与 private、static、final 或 native 并列修饰同一方法。

17、 什么是接口?为什么要定义接口?
Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能);
接口实现和类继承的规则不同,为了数据的安全,继承时一个类只有一个直接父类,也就是单继承,但是一个类可以实现多个接口,接口弥补了类的不能多继承缺点,继承和接口的双重设计既保持了类的数据安全也变相实现了多继承。
18、 如何定义接口?接口与抽象类有哪些异同?
接口与抽象类有以下不同:

  1. 接口的数据成员都是静态的,并且必须初始化。
  2. 接口中的方法必须全部都声明为 abstract 的,也就是说,接口不能像抽象类一样拥有一般的方法,而必须全部是抽象方法。
    接口定义的语法格式如下:
    [public] interface 接口名称 [extends 父接口列表]
    {
    [public] [static] [final] 数据类型 成员变量名 = 常量;
    [public] [abstract] 返回值的数据类型 方法名(参数表);
    }

19、 什么是异常?简述 Java 语言的异常处理机制。
异常是指在程序运行中由代码产生的一种错误;
Java语言的异常处理机制:

  1. 发现异常:程序在运行过程中发生由与算法考虑不周或软件设计错误等导致的程序异常事件。
  2. 抛出异常:程序在运行过程中,如果发生了异常事件,则产生代表该异常的一个“异常对象”,并把它交给运行系统,再由运行系统寻找相应的代码来处理这一异常。生成异常对象并把它提交给运行系统的过程称为抛出异常。
  3. 捕获异常:抛出异常后,运行系统从生成异常对象的代码开始,沿方法的调用栈逐层回溯查找,直到找到包含相应异常处理的方法,并把异常对象提交给该方法为止,这个过程称为捕获异常。
    20、 若 try 语句结构中有多个 catch() 子句,这些子句的排列顺序与程序执行效果是否有关?为什么?
    有关;由于异常对象与 catch 块的匹配是按照 catch 块的先后排列顺序进行的。若将子类异常的 catch 语句块放在父类异常 catch 语句块的后面,则编译不能通过。
    21、 流的概念
    流是指计算机各部件之间的数据流动。
    ​按照数据的传输方向,流可分为输入流与输出流。
    ​对于输入流只能从其读取数据而不能向其写入数据;
    ​对于输出流只能向其写入数据而不能从其读取数据。
    22、 InputStream,OutputStream,Reader和Writer四个类在功能上有何 异同?
    InputStream 和 OutputStream 类通常是用来处理 “字节流” 即 “位流” 的,也就是二进制文件,而Reader 和 Writer 类则是用来处理 “字符流” 的, 也就是文本文件。InputStream、OutputStream、Reader 和 Writer 4 个类均是抽象类,所以不能直接使用这四个类,而是使用它们的子类来创建对象,再利用对象来处理读写操作。
    23、 Java程序实现多线程有那两个途径?
    Java 语言中实现多线程的方法有两种:一种是继承 java.lang 包中的 Thread 类,另一种是用户在自己定义的类中实现 Runnable 接口。但不管采用哪种方法,都要用到 Java 语言类库中的 Thread 类以及相关的方法。
    24、 在什么情况下必须以类实现Runnable接口来创建线程?
    如果类本身已经继承了某个父类,由于 Java 语言不允许类的多重继承,所以无法再继承 Thread 类,此时就必须以类实现 Runnable 接口来创建线程。Runnable 接口适合处理多线程访问同一资源的情况,并且可以避免由于 Java 语言的单继承性带来的局限。
    25、 简述线程的基本概念,程序、进程、线程的关系是什么?
    程序是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。
    进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。简单来说,一个进程就是一个执行中的程序,它在计算机中一个指令接着一个指令地执行着。
    线程是进程划分成的更小的运行单位。线程和进程最大的不同在于基本上各进程是独立的,而各线程则不一定,因为同一进程中的线程极有可能会相互影响。从另一角度来说,进程属于操作系统的范畴,主要是同一段时间内,可以同时执行一个以上的程序,而线程则是在同一程序内几乎同时执行一个以上的程序段。

26、 有哪几个常用的布局管理器?
流式布局管理器,边界式布局管理器,网格式布局管理器,卡片式布局管理器,网格包布局管理器,盒式布局管理器,重叠布局管理器,弹簧布局管理器
27、 什么是事件?简述Java语言的委托事件模型。
所谓事件,就是用户使用鼠标或键盘对窗口中的组件进行交互时所发生的事情。
委托事件模型是将事件源和对事件做出的具体处理分离开。一般情况下,组件不处理自己的事件,而是将事件处理委托给外部的处理实体,即事件源将事件处理任务委托给监听者。总的来说,委托事件模型是由产生事件的对象(事件源)、事件对象以及事件监听者对象之间的关系所组成。而其中的 “事件监听者” 就是用来处理事件的对象,也就是说,监听者对象会等待事件的发生,并在事件发生时收到通知。事件源会在事件产生时,将关于该事件的信息封装在一个对象中,这就是 “事件对象”,并将该事件对象作为参数传递给事件监听者,监听者就可以根据该 “事件对象” 内的信息决定适当的处理方式,即调用相应的事件处理程序。
28、 简述Graphics类的特征
Graphics类是java.awt包中一个特殊的抽象类,当要在屏幕上绘制时,并不需要直接使用new运算符来创建一个Graphics类的对象实例,而是可以直接使用,Graphics类所产生的对象就是被称为绘画环境的“绘图区域”。与一般类不同的是,被称为“绘图区域”的对象并不需要通过Graphics类的构造方法来创建,而是通过getGraphics()方法来取得。
29、 Java语言中提供的用于显示和重画图形的方法有哪几个?
图形显示:public void paint(Graphics g);
更新图形:public void update(Graphics g);
重画图形:public void repaint(); public void repaint(int x, int y, int width, int height);

TAG:none

发表新评论