上篇

1.给方法传递数组参数与传递基本数据类型变量的值有何不同?

答:对于基本数据类型参数,传递的是实参的值;对于数组类型的参数,参数值是数组的引用,给方法传递的是这个引用。

2.简述线程的基本概念、线程的基本状态。

答:在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行。

3.启动一个线程是用 run() 还是 start()? 为什么 ?

答:启动一个线程用 start()方法,使线程所代表的虚拟处理机处于可运行的状态,这意味着它可以有 JVM(java 虚拟机 )来调度和执行, 这并不意味着线程就会立即执行。 run()方法可以产生必须退出的标志来停止一个线程。

4.线程的控制方法 sleep()和 wait() 有什么区别 ?

答:sleep() 方法让线程进入睡眠状态,睡眠过后自动醒来;wait() 方法让线程进入等待状态,直到被另一线程唤醒。

5. Java 中有几种方法可以实现一个线程?用什么关键字修饰同步方法 ?

答:3 种:继承 Thread,实现 Runnable 接口,实现 Callable 接口。使用synchronized 修饰同步方法。

6. Java流被分为字节流和字符流,两者有什么区别?

答:区 别 是 它 们 处 理 数 据 的 类 型 不 同 。读写的时候一个是按字节读写,一个是按字符。

7.什么是流?流式输入输出有什么特点?

答:流:流是根据连续传输特性命名的一种信息序列,也可以认为是一种抽象的数据结构

特点: ①先进先出。先被写入的数据,在读取时先被读取;

②顺序存取。不能随机访问中间的数据;

③只读或只写。要么是输出流,要么是输入流。

8.异常没有被捕获将会发生什么?

答:未捕获的异常最终会导致程序非正常终止。

9.简述 Java 语言的异常处理机制的优点?

答:可以预防错误的程序代码或系统错误所造成的不可预期的结果发生, 增加了程序的灵活性,增加程序的可读性和健壮性。

10.简述基于 Java 技术实现 TCP 网络通信的基本步骤。

答:先连接 TCP 中的 socket,如果正常连接上之后, socket 的对象可以获得 InputStream 和OutputStreame,然后就可以进行通信了完成通信之后,执行 socket 对象的 close()方法关闭连接,完成一次完整的 socket 连接。

11.举例说明方法重载和重写的区别?

答:重载就是在同一个类中, 方法名相同, 参数列表不同。 参数列表不同包括, 参数的个数不同,参数类型不同等。 重写就是子类重写父类的方法,在调用的时候,子类的方法会覆盖父类的方法,也就是会调用子类的方法。

12.Thread 和 Runnable 有什么不同?

答:首先 Runnable 是接口, Thread 是类并且实现了接口 Runnable。 第二 Runnable 没有 **start()**方法,要想启动线程必须调用 Thread 中的 start() 方法,例如** new Thread(r).start()** 。 自定义线程时, Runnable 是比较灵活的。

13.String 和 StringBuffer 类的区别?

答:(1):在连接字符串连接操作中StringBuffer效率会比String的效率高。

(2):String改变的时候是改变的地址,而 StringBuffer 才是改变的值。

14.float 和 Float 的区别是什么?

答:float 是基本数据类型, Float 是包装类(封装类)。封装类可将接本数据类型封装后当作对象进行操作,并为各种基本数据类型提供各种转换功能。

15.Java线程编程中,run()方法的作用与 start()方法的作用有什么不同?

答:Thread 类 中 run() 和 start() 方 法 的 区 别 如 下 :

run() 方法 : 在本线程内调用该 Runnable 对象的 run() 方法,可以重复多次调用;

start() 方法 : 启动一个线程, 调用该 Runnable 对象的 run() 方法, 不能多次启动一个线程;

16、简要叙述 int 和 Integer 的区别?

答:Intjava的原始数据类型,Integer java int 提供的封装类

17.什么是方法的重载?方法重载的规则是什么?

答:方法重载指的是在同一个类里面,有两个或两个以上具有相同的方法名,不同参数序列的方法。

规则:重载的方法参数列表各不相同,体现在参数的个数,类型,顺序的不同,重载方法的返回值类型,访问限制没有特别的要求,可以相同也可以不同。

18.重载方法是如何进行匹配的?

  • 在方法调用进行匹配的时候,首先选择直接匹配的方法;

  • 如果没有则将参数进行提升转换后再匹配方法,总是匹配最接近的方法

    • 对于基本数据类型而言,就是按照基本数据类型间的自动转换关系,将传递的参数进行自动转换,并寻找最匹配的一个方法

    • 对于对象引用类型而言,则按照继承树向上转型的方式,将传递的参数进行自动转换,并寻找最匹配的一个方法

19.一个引用类型的变量可以指向哪些对象?

一个引用类型的变量可以指向由其本类所构造出来的对象, 还可以指向由其子类及子孙类所构造出来的对象。

20.什么是抽象类?请说出抽象类所具有的特点?

使用abstract修饰的类叫抽象类

特点:

  • 抽象类必须被继承

  • 抽象类不能直接实例化,它只能作为其他类的超类,这一点与最终类(final类)正好相反。

21.什么是抽象方法?抽象方法的特点?抽象方法:

abstract来修饰一个方法时,该方法叫抽象方法,只有方法声明,没有方法体。

特点:

  • 抽象方法必须被重写

  • 抽象方法只有声明,不能有实现定义了抽象方法的类必须是抽象类

22.什么是接口?使用接口的好处?

接口( interface)就是方法定义和常量值的集合。从语法上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义(抽象方法),而没有方法的实现。

特点:

  • 通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系

  • 通过接口可以指明多个类需要实现的方法

  • 通过接口可以了解对象的交互界面,而不需要了解对象所对应的类

23.请写出抽象类、接口的相同点和不同点?

  • 相同点:

    • 都不能被实例化

    • 都必须通过其他类实现才能使用

  • 不同点:

    • 抽象类是类,其中可包含变量及(抽象、非抽象)方法的定义接口实质并不是类,其中只包含类常量及抽象方法的定义

24.子类重写方法的规则是怎么样的?重写方法的目的是什么?

重写:存在于继承中,子类实现一个与父类方法在方法声明上完全相同的方法。

规则:1.子类的方法的返回值类型为父类方法的返回值类型或其子类型;2.子类方法访问权限范围大于等于父类;3.子类方法抛出的异常为父类异常或其子类型。

目的:改变父类行为。

25.java的“一次编写,次次运行”是如何实行的?

Java之所以能实现“一次编写,次次运行”,是因为Java在每个系统平台上都有java虚拟机(JVM),Java编译的中间文件class是由Java虚拟机在运行时动态转换为对应平台的机器代码。

26.为什么Java没有全局变量?

Globalvariables(全局变量) 是指可以全局访问的变量, Java不支持全局变量,原因如下:

  1. 全局变量破坏了引用的透明性。

  2. 全局变量制造了命名空间冲突。

可以使用properties类将想要全局有效的变量值写在properties文件中,那么在何处用时都从此properties文件中读取这个变量的值就可以了,此值在任何时候都可以修改的。

说明:我们平时在类中声明的只是相对类而言是全局变量,不是真正意义的全局变量

27.构造器(constructor)是否可被重写(override),其规范是什么?

构造器(构造方法)Constructor不能被继承,因此不能重写Override,但可以被重载Overload(不同参数即可)。

每一个类必须有自己的构造函数,在创建对象时自动调用,如果添加有参构造函数后,默认无参构造函数则被覆盖。子类不会覆盖父类的构造函数,但是在创建子类对象的时候,会自动调用父类构造函数。

28.Java基础类型?

byte(字节)、short(短整型)、int(整型)、long(长整型)、float(浮点型)、double(双精度)、char(字符型)、boolean(布尔型)