以下所有问题的回答是本人总结的回答要点,并没有全部详细写出。
1.java语言有哪些优点?
- 面向对象
- 跨平台(一次编译,到处运行)
- 提供很多内置类库
- 去除了C++中难以理解的特性(指针,虚函数)
2.java与C/C++的异同
- java是解释型语言,C++是编译型语言
- java是纯面向对象,C++是面向过程和面向对象
- java没有指针、不支持多继承
- java提供了垃圾回收器来实现垃圾的自动回收,C++需申请和释放
3.如何实现在main()方法执行前输出helloworld
在java中,静态块在类被加载时就会被调用,因此可以利用静态块来实现。
4.什么是反射机制?
反射机制能够实现在运行时对类装载,可以增加程序的灵活性。功能主要有:
- 得到一个对象所属的类
- 获取一个类的所有成员变量和方法
- 在运行时创建对象
- 在运行时调用对象的方法
反射机制很重要的作用就是可以在运行时动态地创建对象
5.final、finally、finalize区别
- final用于声明属性、方法和类,分别表示属性不可变、方法不可覆盖和类不可被继承(不能再派生出新的子类),被final修饰的变量不可变,并且final表示的是引用不可变(简单来说就是我赖在你家要吃饭不走啦,至于吃什么饭可以随便改,但是我不会离开你家的)所以被final修饰的变量必须初始化,初始化有以下几种 :
- 定义的时候初始化
- final成员变量在初始化块中初始化,但不能在静态初始化块中
- 静态final成员变量可以在静态初始化块中初始化,但不能使初始化块中
- 在类的构造器中初始化
- finally作为异常处理的一部分,用于try、catch语句中,这样不论程序前面是否会有异常都能执行finally的方法,释放资源
- finalize是object类的一个方法,在垃圾回收器执行时会调用被回收对象的finalize()方法,可以覆盖此方法来实现对其他资源的回收,例如关闭文件等
注意:一旦垃圾回收期准备好释放对象占用的空间,将首先调用finalize方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。
6.static有哪些作用?
- 为某特定的数据类型或对象分配单一的存储空间,与创建对象的个数无关
- 实现某个方法或属性与类而不是对象关联在一起
7.java IO流的实现机制是什么?
Java中输入和输出都被称为抽象的流,流可以被看作一组有序的字节集合。流的本质是数据传输,根据处理数据类型的不同,可以分为两类:字符流和字节流
字节流继承与InputStream和OutputStream,字符流继承与Reader和Writer。字节流和字符流最主要的区别在于字节流在处理输入输出时不会用到缓存,而字符流用到了缓存。
8.java Socket是什么?
网络上的两个程序通过一个双向的通信连接来实现数据的交换,这个双向链路的一端称为一个socket,socket也称为套接字,用来实现不同虚拟机或不同计算机之间的通信。任何一个socket都是有ip地址和端口号唯一确定的。