Java基础测试题
2022/1/7 22:04:13
本文主要是介绍Java基础测试题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.基本数据类型
Int short long byte char float double boolean
2.传参数区别
基本类型传参数只传递数值,引用类型传参传得是内存地址
3.Static的含义
static修饰符
静态变量:
static关键字用来声明独立于对象的静态变量,无论一个类实例化多少个对象,它的静态变量只有一份拷贝。静态变量也被称为类变量,局部变量不能被声明为Static变量。
静态方法:
static关键字用来声明独立于对象的静态方法,静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数据。
4.final
final类不能被继承,final方法可以被继承但不能被重写,声明final主要是防止此方法被内容修改且防止冗余。
5.封装
在面向对象程式设计方法中,封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
封装的步骤:
1.修改属性的可见性来限制对属性的访问(一般限制为private)
2. 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问
6.多态
多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作
多态的实现方式
方式一:重写
方式二:接口
方式三:抽象类和抽象方法
7.继承
子类拥有父类非private的属性,方法。
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
子类可以用自己的方式实现父类的方法。
Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 B 类继承 A 类,C 类继承 B 类,所以按照关系就是 B 类是 C 类的父类,A 类是 B 类的父类。
8.抽象类
1. 抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。
2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。
4. 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。
5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。
9.抽象方法
抽象方法没有定义,方法名后面直接跟一个分号,而不是花括号。
如果一个类包含抽象方法,那么该类必须是抽象类。
任何子类必须重写父类的抽象方法,或者声明自身为抽象类。
10.普通类和抽象类的区别
普通类可以去实例化调用;抽象类不能被实例化,因为它是存在于一种概念而并非具体。
普通类和抽象类都可以被继承,但是抽象类被继承后子类必须重写继承的方法,除非自类也是抽象类。
普通类中不能有抽象方法,抽象类中可以有抽象方法也可以有非抽象方法。
11.接口和抽象类的区别
接口中只能有抽象方法,抽象类中可以有抽象方法也可以有非抽象方法。
普通类一次只能继承一个抽象类,普通类一次可以实现多个接口。
抽象类和接口都是用来抽象具体对象的,但是接口的抽象级别最高。
抽象类可以有具体的方法和属性。接口只能有抽象方法和不可变常量。
抽象类主要是抽象类别,接口主要是来抽象功能。
12.四种访问修饰符
default(即默认,什么也不写):在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
private:在同一类内可见,使用对象:变量、方法。注意不能修饰类(外部类)
public:对所有类可见。使用对象:类、接口、变量、方法
procteted:对同一包内的类和所有子类可见。使用对象:变量、方法。注意:不能修饰类。(外部类)。
13.ArrayList和LinkedList区别
1)数组在内存中连续;
使用数组之前,必须事先固定数组长度,不支持动态改变数组大小;
数组增删时需要移动其它元素
链表采用动态内存分配的方式,在内存中不连续
支持动态增加或者删除元素
数组在内存中顺序存储,可通过下标访问,访问效率高
数组的大小是固定的,所以存在访问索引越界的风险
链表访问效率低,如果想要访问某个元素,需要从头遍历
二者实现结构不同arraylist是基于数组,linkedlist是基于链表,他们的特性也是由其数据结构决定的。
随机遍历访问时linkedlist的性能要低于arraylist.
arraylist的初始化时默认10容量,而linkedlist默认初始化为空。
linkedlist的增删要优于arraylist
只要可以申请得到链表空间,链表就无越界风险
public static void main(String[] args) { List ls = new ArrayList(); ls.get(0); }
如上代码运行肯定是会报错的,java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
14.list和Set的区别
List是数组或链表,具有有序性不具有唯一性
Set是,具有唯一性不具有有序性
15.ArrayList常用方法
Add,size,remove,get,contains,isEmpty indexOf
16.HashSet的常用方法
Add,size,remove,isEmpty
17.如何给List<Person>中的数据按照年龄进行升序排序
public class Test implements Comparable<Test>{ public int age; public void setAge(int age){ this.age = age; } public int getAge(){ return age; } public int compareTo(Test o){ return this.age-o.age;} }
18.HashMap的底层数据结构是什么?
数组+链表+红黑树
19.List中移除下标是2的元素
第一种方法
List.remove(2)
第二种方法
List.remove(list.get(2))
20.手写一个方法,判断集合List<Person>中是否存在name是“张三”的人,如果存在,返回下标;如果不存在,返回-1。
public int isExist(List<Person> persons,String name){ for(int i = 0; i < persons.size; i++ ){ if(persons.get(i).getName().equals(name)){ return i } } return -1; }
这篇关于Java基础测试题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25Java编程面试题详解与解答
- 2024-12-25TS基础知识详解:初学者必看教程
- 2024-12-252024面试题解析与攻略:从零开始的面试准备指南
- 2024-12-25数据结构与算法学习:新手入门教程
- 2024-12-25初学者必备:订单系统资料详解与实操教程
- 2024-12-24内网穿透资料入门教程
- 2024-12-24微服务资料入门指南
- 2024-12-24微信支付系统资料入门教程
- 2024-12-24微信支付资料详解:新手入门指南
- 2024-12-24Hbase资料:新手入门教程