Java面试题基础篇2:10道基础面试题
目录
- 前言
- 11、浅拷贝和深拷贝
- 12、区别抽象类和接口
- 13、区别Error和Exception
- 14、final关键字用法
- 15、区别Java和C++
- 16、区别final、finally、finalize
- 17、this关键字用法
- 18、super关键字用法
- 19、break ,continue ,return 区别及作用
- 20、面向对象三大特性
前言
亲爱的家人们,创作很不容易,若对您有帮助的话,请点赞收藏加关注哦,您的关注是我持续创作的动力,谢谢大家!有问题请私信或联系邮箱:fn_kobe@163.com
11、浅拷贝和深拷贝
①浅拷贝: 基础数据类型复制值,引用类型复制引用地址,修改一个对象值,另一个对象也随之改变
②深拷贝: 基础数据类型复制值,引用类型在新内存空间复制值,新老对象不共享内存,修改一个值,不影响另一个
12、区别抽象类和接口
抽象类只能单继承,接口实现多个。
抽象类有构造方法,接口没有构造方法。
抽象类有实例变量,接口中没有实例变量,有常量。
抽象类包含非抽象方法,接口在java7之前所有方法都是抽象的,java8之后可以包含非抽象方法。
抽象类中方法是任意修饰符,接口中java8之前都是public,java9支持private。
13、区别Error和Exception
①Error: 程序无法处理,比较严重问题,程序会立即崩溃,jvm停止运行。
②Exception: 程序本身能处理(向上抛出或者捕获)。编译时异常和运行时异常。
14、final关键字用法
①修饰类: 不能被继承。
②修饰方法: 不能被重写。
③修饰变量: 声明时给定初始值,只能读取不能修改。如果是对象引用不能改,但对象属性可修改。
15、区别Java和C++
①相同点:都是面向对象的语言,都支持封装、继承和多态。
②不同点:
Java不提供指针来直接访问内存,程序内存更加安全。
Java的类是单继承的,C++支持多重继承;虽然Java的类不可以多继承,但是接口可以多继承。
Java有自动内存管理机制,不需要程序员手动释放无用内存。
16、区别final、finally、finalize
①final:修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是一个常量不能被重新赋值。
②finally:一般作用在try-catch代码块中,在处理异常的时候,将一定要执行的代码方法finally代码块中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。
③finalize:属于Object类的一个方法,而Object类是所有类的父类,该方法一般由垃圾回收器来调用,当我们调用System.gc() 方法的时候,由垃圾回收器调用finalize(),回收垃圾,一个对象是否可回收的最后判断。
17、this关键字用法
①定义:this是自身的一个对象,代表对象本身,理解为:指向对象本身的一个指针。
②3种用法:
i:普通的直接引用,this相当于是指向当前对象本身。
ii:形参与成员名字重名,用this来区分。
iii:引用本类的构造函数。
18、super关键字用法
①定义:理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。
②3种用法:
i:普通的直接引用与this类似,super相当于是指向当前对象的父类的引用,用super.xxx来引用父类的成员。
ii:子类中的成员变量或方法与父类中的成员变量或方法同名时,用super进行区分
iii:引用父类构造函数
super(参数):调用父类中的某一个构造函数(构造函数中的第一条语句)。
this(参数):调用本类中另一种形式的构造函数(构造函数中的第一条语句)。
19、break ,continue ,return 区别及作用
①break :跳出总上一层循环,不再执行循环(结束当前的循环体)
②continue: 跳出本次循环,继续执行下次循环(结束正在执行的循环 进入下一个循环条件)
③return: 程序返回,不再执行下面的代码(结束当前的方法 直接返回)
20、面向对象三大特性
①抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节。
②封装 : 封装把一个对象的属性私有化,同时提供一些被外界访问的属性的方法,如果属性不想被外界访问,不必提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了。
③继承 : 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义增加新的数据或新的功能,也可用父类的功能,但不能选择性地继承父类。通过使用继承复用以前的代码。