编程语言
首页 > 编程语言> > Java基础测试题

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,测试题,继承,子类,基础,接口,抽象,抽象类,方法
来源: https://blog.csdn.net/Wxiaozhong/article/details/122370769