1.方法重载和方法重写的区别?
|
英文 |
位置不同 |
作用不同 |
重载 |
overload |
同一个类中 |
在一个类里面为一种行为提供多种实现方式并提高可读性 |
重写 |
override |
子类和父类间 |
父类方法无法满足子类的要求,子类通过方法重写满足要求 |
|
修饰符 |
返回值 |
方法名 |
参数 |
抛出异常 |
重载 |
无关 |
无关 |
相同 |
不同 |
无关 |
重写 |
大于等于 |
小于等于 |
相同 |
相同 |
小于等于 |
2. 什么是JVM?什么是JDK?什么是JRE?
1).JVM是java虚拟机,所有的java程序都在java虚拟机中运行
2).JRE是java运行时环境,包含了java虚拟机,java核心类库,是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。
3).JDK是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的.
JDK包含了JRE
JDK基本组件,bin目录下:
1.编译java源码的编译器javac
2.jar包,打包工具,将相关类似的文件打包成一个文件
3.文档生成器,javadoc。提取文档
4.jdb java调试器 查错工具
3.说说Collection集合的继承结构及其子类的特点
Collection
|--List 有序,可重复
|--ArrayList
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高
|--Vector
底层数据结构是数组,查询快,增删慢。
线程安全,效率低
|--LinkedList
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高
|--Set 无序,唯一
|--HashSet
底层数据结构是哈希表。
如何保证元素唯一性的呢?
依赖两个方法:hashCode()和equals()
开发中自动生成这两个方法即可
|--LinkedHashSet
底层数据结构是链表和哈希表
由链表保证元素有序
由哈希表保证元素唯一
|--TreeSet
底层数据结构是红黑树。
如何保证元素排序的呢?
自然排序
比较器排序
如何保证元素唯一性的呢?
根据比较的返回值是否是0来决定
4. 什么是注释?注释分为几种?注释有什么作用?
注释是一种对代码的说明 分为 单行注释 // 多行注释 /* */ 和文档注释 /** */
作用:能够方便更好的阅读
5.Java语言的执行过程。(*****)
Java编译生成字节码文件,生成的字节码在所有操作系统都是一样的
不同的操作系统,其java虚拟机不一样。虚拟机将java字节码转换为对应系统的相关
指令,保证其正常运行解释器在java虚拟机中,编译器在jdk或jre中
6.Final,finally,finalize的区别?
final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
内部类要访问局部变量,局部变量必须定义成final类型。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方
法,可以覆盖此方法提高垃圾收集时的其他资源回收,例如关闭文件等。JVM不保证
此方法总被调用.
7. Java是一种强类型语言,说明Java的数据类型分类。
Java分为基本数据类型和引用数据类型;
基本数据类型分为整数型:byte short Int long ;
浮点型: float double ;
布尔型boolean :true false ;
字符型:char (character);
引用类型举例:比如String 数组 集合 自定义对象
8. i++和++i的异同之处?运算符||和|的异同之处?
1).i++和++i如果单独在语句中使用没有什么区别;不是单独的语句,i++先使用iba的
值再加1;++i是先加1再使用i的值!
2).||的是逻辑运算符,|是位运算符!
条件“或”运算符 (||) 执行 bool 操作数的逻辑“或”运算,但仅在必要时才计算第二个操
作数。如表达式X||Y和X|Y,如果X为true,Y为false。则第一个表达式只计算X,不计
算Y,因为不论Y为何值,“或”操作的结果都是true。这种情况被称作“短路”计算。
| 运算符是为整型和 bool 预定义的。 对于整型, |计算操作数的按位“或”,就是对
0/1,当且仅当两个操作数中的一个为1,结果就是1。
9 接口和抽象类的区别是什么?
1. 抽象类可以有构造方法,接口中不能有构造方法。
2. 抽象类中可以有普通成员变量,接口中没有普通成员变量
3. 抽象类中可以包含非抽象的普通方法。JDK1.8以前,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法;JDK1.8以后,接口可以定义普通方法,需要加关键字default。
4. 抽象类中的抽象方法的访问类型可以使public、protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认修饰即为public abstract类型。
5. 抽象类中可以包含静态方法,JDK1.8以前接口中不能包含静态方法,JDk1.8以后可以包含静态方法
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
7. 一个类可以实现多个接口,但只能继承一个抽象类。
10. Java中基本数据类型转换的规则是什么?
布尔型和其它基本数据类型之间不能相互转换;
byte型可以转换为short、int、、long、float和double;
short可转换为int、long、float和double;
char可转换为int、long、float和double;
int可转换为long、float和double;
long可转换为float和double;
float可转换为double
11. if多分支语句和switch语句的异同之处?while和do-while语句的异同之处?
switch只能用在比较特殊的情况下,就是表达式能得到一个整数值;而if语句比较自
由,可以写各种条件。
都是进行循环语句;do-while是先执行后判断,至少要循环一次;而
while是先判断再执行,如果条件不满足,则一次循环体也不执行
12 Collection 和 Collections 的区别?
Collection 是集合类的上级接口,继承与他的接口主要有 Set 和 List。
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜
索、排序、线程安全化等操作
13. break和continue语句的作用
答:使流程跳出switch结构可以用来从循环体内跳出循环体,即提前结束循环,接着
执行循环下面的语句;结束本次循环,即忽略循环体中continue语句下面尚未执行的
语句,接着进行下一次是否执行循环的判定。
14. 方法重载的定义、作用和判断依据是啥?
方法重载是指在一个类中定义多个同名的方法,但要求们每个方法具有
不同的参数类型或参数的个数
作用:方法的重载是让类以统一的方式处理不同类型数据的一中手段
判断依据:方法名一定要相同
方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法
体。
15.递归的定义和优缺点