java面试题
1. Java的特点有哪些
Java 语言是一种分布式的面向对象语言,具有
面向对象、
平台无关性、
简单性、
解释执行、
多线程、
安全性等很多特点
2. JDK和JRE和JVM的区别
JDK:java se development kit
jre:java runtime eviroment
jvm:java virtual machine
3.
4 引用数据类型分3种:类,接口,数组
基本数据类型:数据存储在 栈 中
引用数据类型:栈中存储地址,堆中存储内容
判断是否相等:
基本:++ !=
引用:equals()方法
==和!=是比较数值的。而equals()方法是比较内存地址的。
5. a=a+b与a+=b有什么区别吗?
+= 操作符会隐式的进行自动类型转换,此处a+=b隐式的将加操作的结果类型强制转换为持有结果的类型,而a=a+b则不会自动进行类型转换
+= 操作符会对右边的表达式结果强转匹配左边的数据类型
6. final 在 Java 中有什么作用?
final作为Java中的关键字可以用于三个地方。用于修饰类、类属性和类方法。
特征:凡是引用final关键字的地方都不可以改变!
(1)修饰类:表示该类不能被继承;
(2)修饰方法:表示方法不能被重写;
(3)修饰变量:表示变量赋值后不可修改(常量)。
(如果修饰引用,那么表示引用不可变,引用指向的内容可变
被final修饰的方法,JVM会尝试将其内联,以提高运行效率
被final修饰的常量,在编译阶段会存入常量池中)
7. static都有哪些用法?
修饰类:静态内部类,可以直接通过类来调用,而不需要new
修饰变量:静态变量,分配在内存堆上,所有实例都会指向这一个地址而不会重新分配内存
修饰方法:静态方法
也就是被static所修饰的变量/方法都属于类的静态资源,类实例所共享
修饰块:静态块,多用于初始化操作
修饰包:静态导包,可以用来指定导入某个类中的静态资源,并且不需要使用类名,可以直接使用资源名
8.==和equals()的区别
== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而 equals 默认情况下是引用比较,只是很多类重写了equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下equals 比较的是值是否相等。
9.hashCode()
hashCode方法可以这样理解:它返回的就是根据对象的内存地址换算出的一个值。这样一来,当集合要添加新的元素时,先调用这个元素的hashCode方法,就一下子能定位到它应该放置的物理位置上。如果这个位置上没有元素,它就可以直接存储在这个位置上,不用再进行任何比较了;如果这个位置上已经有元素了,就调用它的equals方法与新元素进行比较,相同的话就不存了,不相同就散列其它的地址。这样一来实际调用equals方法的次数就大大降低了,几乎只需要一两次
10. 面向对象的特征
抽风极多:抽象,封装,继承,多态
11.访问修饰符
原文地址:https://www.cnblogs.com/midiyu/p/15096598.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释