最新Java面试题 每一题都是经典
- Java语言有哪些特点?
1,简单易学;
2,面向对象(封装,继承,多态);
- 平台无关性(Java虚拟机实现平台无关性);
一次编译,处处运行
4,可靠性;
5,安全性;
6,支持多线程
7,支持网络编程并且很方便
- jvm jre jdk 分别是什么
jvm是java虚拟机,所有的java程序必须运行在java虚拟机上
jre是java运行环境,包含jvm和java常用类库
jdk是java开发工具,包含jre和java开发工具,
如:java.exe 运行工具;javac.exe编译工具
- 写出所有的基本数据类型和对应的字节数
1.整型:byte(1个字节)、short(2个字节)、int(4个字节) 、long(8个字节)
2.浮点型:float(4个字节)、double(8个字节)
3.字符型:char(2个字节)
4.布尔型:boolean(1个字节)
- 写出所有的基本数据类型和对应的包装类型
1.整型:byte(Byte)、short(Short)、int(Integer) 、long(Long)
2.浮点型:float(Float)、double(Double)
3.字符型:char(Character)
4.布尔型:boolean(Boolean)
- 说出 i++和++i的区别
"++i":先自增,后赋值
"i++":先赋值,后自增
- & 和 &&的区别
& 位运算符,也可以进行逻辑运算,表达式左边为false,表达式右边继续执行。
&& 逻辑运算符,短路与,表达式左边为false,整个表达式结果为false,因此表达式右边不执行。
- Java中 下面运算符的运算规则 && || ! ^
&& 同真则真,有假则假
|| 有真则真,同假则假
! 取相反
^ 不同为真,相同则假
- 写出三种程序运行的结构
1、顺序结构
顺序结构表示程序中的操作是按照代码先后顺序执行的。
2、选择结构
选择结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行。
3、循环结构
循环结构表示程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环。
- 列举5种常见的运行时异常(写全英文单词)
(1)java.lang.NullPointerException 【空指针异常】
(2)java.lang.ClassNotFoundException 【类找不到异常】
(3)java.lang.NumberFormatException 【数字格式化异常】
(4)java.lang.IndexOutOfBoundsException 【数组索引越界异常】
(6)java.lang.ClassCastException 【类型转换异常】
- break和continue的区别
(1)break:
常用于循环中,含义:结束循环,跳出循环体
其他应用场景:switch语句中,结束语句。
(2)continue:
跳出本次循环,进行下一次循环;(注意:如果,循环进行到最后一次,continue执行,结束本次循环, 继续进行循环逻辑判断结束循环。循环结束与continue无关)
- while循环和do while循环有什么不同?
while结构在循环的开始判断下一次循环是否应该继续。
do/while结构在循环的结尾来判断是否将继续下一次循环。do结构至少会执行一次循环体。
- Integer与int的区别
1.int是Java的基本数据类型之一,Integer是Java为int提供的包装类;
2.int的初始化值为0,而Integer的初始化值为null。
- JAVA的自动拆箱装箱
自动装箱就是将基本数据类型自动的转换为对应的对象包装类型;
拆箱就是将对象包装类型转换为基本数据类型。
- 什么是自动类型强转,什么是强制类型转换
自动类型强转 范围小的数据类型自动转为为范围大的数据类型
强制类型转换,范围大的数据类型需要强制转换为范围小的数据类型
- 一维数组的三种创建方式
- 数据类型[] 数组名=new数据类型[长度];
- 数据类型[] 数组名={元素1,元素2,…,元素N};
- 数据类型[] 数组名=new数据类型[]{元素1,元素2,…,元素N};
- 二维数组的两种创建方式
数据类型[][] 数组名= new 数据类型[长度][长度];
数据类型[][] 数组名= {
{元素1,元素2,…,元素N },
{元素1,元素2,…,元素N }
};
- 什么是方法重载
方法重载: 发生在同一个类中,方法名必须相同,参数列表不同(参数类型不同、个数不同、顺序不同),方法返回值和访问修饰符可以不同,发生在编译时。
- 数组和ArrayList的区别
1. 数组的长度是固定的,ArrayList的长度可以变化
2. 数组初始化必须指定长度,ArrayList初始化不需要指定长度。
3. 数组的元素可以是基本类型和引用数据类型,ArrayList的元素只能是引用数据类型。
- List、 Set和Map的区别
1、List中的元素,有序、可重复、可为空;
2、Set中的元素,无序、不重复、只有一个空元素;
3、Map中的元素,无序、键不重,值可重、可一个空键、多个空值;
- break和continue
break和continue都是用来控制循环的语句、
break:1.用于switch语句中,从中途退出switch语句。 2.用于循环语句中,从循环体内直接退出当前循环
continue用户跳过本次循环,执行下次循环
- 什么是面向对象
面向对象是一种编程思想。面向对象把现实生活中的事物抽象成类,事物的行为抽象成方法,事物的信息封装成属性。对象是指具体的某个事物,对象通过类创建出来的,完成某项功能则通过调用对象的方法。
- 什么是多态
多态是父类或接口定义的引用变量指向子类或具体实现类的实例对象。
前提:实现或继承关系;覆写父类方法。
好处:提高了程序的扩展性。
- final关键字可以修饰什么,被修饰后的特点
final关键字可以修饰 类,成员方法,成员变量
final修饰的类 无法被继承。
final修饰的方法 无法被重写。
final修饰的变量 无法被二次赋值。
- 面向对象的三大特性
面向对象具有三大特性,分别是:封装、继承、多态
封装:是指隐藏内部实现的细节,仅对外提供公共访问方式。
继承:子类继承父类就拥有了父类所有的成员变量和成员方法。
多态:父类引用,指向子类对象。
- 接口和抽象类的区别
抽象类:
- 抽象类可以定义构造方法
- 可以有抽象方法和具体方法
- 抽象类的中的成员可以用public private 缺省和protected修饰
- 抽象类中可以定义普通成员变量
- 一个类只能继承一个抽象类
接口:
- 接口不能定义构造方法
- 方法全部是抽象方法
- 接口中的成员都是public修饰的
- 接口中定义的变量都是常量
- 一个类可以实现多个接口
- 什么是方法重写
子类根据自己的需求重新定义父类继承过来的方法叫做方法重写。
方法重写有以下几个注意实现:
- 方法名相同
- 方法参数列表相同
- 方法返回值相同或者是比父类小
- 子类方法访问权限>=父类方法的访问权限
- 子类重写方法异常范围要小于父类方法异常或没有异常
- 方法重载和方法重写的区别
- 重载是在同一个类,重写是在父子类中
- 重载的参数列表不同,重写参数列表相同
- 重载和返回值无关, 重写的返回值相同或者是父类方法返回值的子类
- 重载可以使用任意访问修饰符,重写访问修饰符大于等于父类方法修饰符
- 重载可以抛出不同异常,重写异常小于等于父类方法异常
- 四种修饰符的访问范围
public 公共的 任意位置都可以访问
protected 受保护的,本类、子类和同一个包 可以访问
缺省 ,本类和同一个包 可以访问
private 私有的,本类中可以访问
- 静态变量和普通成员变量的区别
静态变量是被static修饰的变量,也称为类变量,它属于类,不属于类的任何一个对象,一个类不管创建多少个对象,静态变量在内存中有且仅有一个拷贝。静态变量可以实现让多个对象共享内存。
普通成员变量必须依存于某一个对象,需要先创建对象然后通过对象才能访问到它
- HashMap和HashTable的区别
1、HashMap是非线程安全的,HashTable是线程安全的。
2、HashMap的键和值都允许有null值存在,而HashTable则不行。
3、HashMap效率比HashTable的要高。
文章来源: blog.csdn.net,作者:陶然同学,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_45481821/article/details/123214304
- 点赞
- 收藏
- 关注作者
评论(0)