1、面向对象与面向过程的区别:
面向过程:
优点:性能高
缺点:不易维护、不易复用、不易拓展
面向对象:
优点:易维护、易复用、易拓展
缺点:性能低
2、Java语言有哪些特点
简单易学、面向对象(封装、继承、多态)、平台无关性、可靠性、安全性、支持多线程、支持网络编程并且很方便、编译与解释并存
3、JVM、JDK、JRE
JVM:Java虚拟机,是运行Java字节码的虚拟机
JDK:拥有JRE的一切,能够创建和编译程序
JRE:Java运行的环境
4、OracleJDK 和 OpenJDK的对比
OracleJDK比OpenJDK稳定、性能更好
5、Java与C++的区别
Java不提供指针访问内存,程序内存更加安全
Java是单继承,但是接口可以多继承。C++是多继承
Java有自动内存管理机制,不需要手动释放无用内存
6、什么是Java程序的主类 应用程序和小程序的主类有什么不同?
包含main()的方法的类是Java的主类。
主类是Java程序执行的入口点。在Java小程序中,主类是继承自系统类JApplet和Applet的子类,应用程序的主类不一定是public,而小程序的主类必须要求是public
7.java应用程序和小程序之间有那些差别
应用程序从mian()方法启动,applet小程序没有main()方法,主要是嵌在浏览器页面调用init()或者run()运行
8、字符型常量和字符串常量的区别
形式上:字符型是单引号括起来的一个字符,字符串是双引号括起来的若干个字符
含义上:字符常量相当于一个ASCII值,可以参加表达式运算。 字符串常量代表一个地址
占内存:字符常量占两个字节,字符串常量占若干个字节
9、构造器Constructor是否可被override(重写)
Constructor不能被重新(overrride)但是可以被重载(overload)
10、重载和重写的区别
重载:发生在同一个类,方法名必须相同,参数类型不同、个数不同、顺序不同、方法返回值和访问修饰符可以不痛,发生在编译时。
重写:发生在父子类中,方法名、参数列表必须相同
11、Java面向对象三大特性:封装、继承、多态
封装:平时我的写的对象类
继承:多态、接口
多态:继承的一种形式
12、String、StringBuffer、StringBuilder的区别
String:对象不可变、常量、线程安全(操作少量数据)
StringBuffer:对方法加了同步锁、线程安全(多线程操作字符)
StringBuilder:没有加同步锁、线程不安全(单线程操作字符)
13、自动装箱与拆箱
装箱:将基本类型用他们对应的引用类型包装起来
拆箱:将包装类型转换为应用类型
14、在一个静态方法内调用一个非静态成员为什么是非法的
由于静态方法可以不通过对象进行调用,因此在静态方法里,不能调用其他非静态变量,也不可以访问非静态变量成员
15、在java中定义一个不做事且没有参数的构造函数的作用
Java程序在执行子类的构造方法之前,如果没有用super()来调用父类特定的构造方法,会调用父类中没有参数的构造方法。没有则编译错误。
16、import java和javax有什么区别
没有区别。
17、接口和抽象类的区别是什么?
接口方法默认是public,所有方法接口中不能有实现,抽象类可以有非抽象方法
接口实例变量默认是final类型,抽象类中不一定
一个类可以有多个接口,但最多能实现一个抽象类
一个类实现接口要调用接口所有的方法,抽象类不一定
接口不能用new实例化
18、成员变量和局部变量的区别
语法上:成员变量属于类。局部变量属于方法,不能被访问控制修饰
存储方式:成员变量是对象的一部分,存在于堆内存,局部变量存在于栈内存
生存时间:成员变量,对象在则在。 局部变量:方法调用完就消失了。
成员变量会默认赋值,局部变量不会自动赋值
19、创建一个对象用什么运算符?对象实体和对象引用有什么不同?
new运算符
对象实体存于堆内存,对象引用存于栈内存
20、什么是方法的返回值?返回值在类的方法里的作用是什么?
方法的返回值是代码执行产生的结果
返回值在类的方法里的作用:接收出结果,使他可以用于其他操作
21、一个类的构造方法的作用是什么 若一个类没有声明构造方法,该程序能正确执行吗?为什么?
主要作用:完成对类对象的初始化工作
可以执行。没有声明构造方法也会默认执行无参的构造方法。
22.构造方法有哪些特性
名字和类名相同
没有返回值且不能用void声明
生成类自动执行,无需调用
23、静态方法和示例方法有何不同?
调用静态方法要创建对象,实例方法不用调用对象
静态方法访问奔雷的成员时,只允许访问静态成员。实例方法无限制。
24、对象相等与指向他们的引用相等,两者有什么不同?
对象相等:比较存在内容
引用相等:比较内存地址
25、在调用子类构造方法之前会先调用父类无参构造方法,目的是?
帮助子类做初始化工作。
26、== 与equals(重要)
==: 作用是判断两个对象地址是不是相等(基本数据类型==比较的是值,引用数据类型==比较的是地址)
equals():作用判断两个对象是否相等。有两种情况
1:类没有覆盖equals(),通过equals()比较该类两个对象时,等价于==比较两个对象
2: 覆盖了,比较两个对象的内容相等,返回true或false
27、hashCode与equals(重要)
hashCode的作用:获取哈希码(散列码)实际上返回一个int整数,这个哈希码的作用是确定该对象的在哈希表的索引位置。散列表存储的键值对(key-value)其特点是快速检索对应的值。
如果两个对象相等,hashCode一定相等
两个对象相等,分别调用equals方法都返回true
两个对象有相同的hashCode值,他们不一定相等
equals被覆盖过,hashCode一定也被覆盖过
hashCode()的默认行为是对堆上的对象产生独特值,如果没有重新hashCode(),该class的两个对象无路如何都不会相等。
28、为什么Java中只有值传递
29、简述线程、程序、进程的概念,以及他们之间的关系?
线程:比进程更小的执行单位,也称为轻量级进程。一个进程进行过程中可以产生多个线程
程序:含有指令和数据的文件,被存储在磁盘或其他数据存储设备中,也是说程序是静态的代码。
进程:是程序的一次进行过程,是系统程序运行的基本单位。
30、线程有哪些基本状态?
31、关于final关键字的一些总结
final关键字只要用在三个地方:变量、方法、类
final变量,初始化后不能再更改
final修饰一个类,该类不能被继承
final能把方法进行锁定,还有就是效率,现在private方法都隐式指定为final
32、java中的异常处理
Throwable有两个重要的子类:Error(不可处理)和Expection(可处理)
Expection用try catch finally执行抛出。若try或catch遇到return语句,finally会提前执行。
在finally出现异常、前面代码执行System.exit()、关闭cpu、程序所在线程死亡,finally不会执行。