首页 > 编程语言 >Java面试题小练(一)

Java面试题小练(一)

时间:2023-10-29 16:45:27浏览次数:37  
标签:面试题 Java LinkedList 继承 子类 小练 抽象类 父类 方法

java面向对象的三大特征
封装,继承,多态
封装说明一个类行为和属性与其他类的关系,低耦合,高内聚;继承是父类和子类的关系,多态说的是类与类的关系
封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。外界对他的内部细节是隐藏的,暴露在外界的只是它的访问方法。属性的封装:使用者只能通过事先定制好的方法来访问数据,可以方便的加入逻辑控制,限制对属性的不合理操作;方法的封装:使用者按照既定的方式调用方法,不必关系方法的内部实现,便于使用;便于修改,增强代码的可维护性;
继承是从已有的类中派生出的类,新的类能够吸收已有类的数据属性和行为,并能拓展新的能力。在本质上子类继承父类,表明子类是一种特殊的父类,并且具有父类所不具备的一些属性和方法。从多种实现类中抽象出一个基类,使其具备多个实现类的共同特性,当实现类用extends关键字继承了基类后,实现类就具备了这些相同的属性。继承的类叫做子类,被继承的类叫做父类。父类中通过private定义的变量和方法不会被继承,不能在子类中直接操作父类通过private定义的变量以及方法。
相比封装和继承,java多态是三大特性中比较难的一个,封装和继承最后归结于多态,多态指的是类和类的关系,两个类由继承关系,存在有方法的重写,故而可以在调用时有父类引用指向子类对象。多态必备三个要素:继承,重写,父类引用指向子类对象。

ArrayList和LinkedList的区别
数据结构上的差别,动态数组和双向链表
ArrayList是一个容量能够动态增长的动态数组,继承自AbstractList,实现了List接口,底层基于数组实现容量大小动态变化,允许null的存在。
LinkedList从数据结构上来看的话,是一个双向链表,每个节点包含数据元素和指向前一个节点和后一个节点的引用。
随机访问效率
ArrayList比LinkedList在随机访问的时候效率要高,因为LinkedList是线性的数据存储方式,所以需要移动指针从前往后依次查找
增加和删除效率
LinkedList比ArrayList效率要高,因为ArrayList增删操作要影响数组内的其他数据下标
内存空间占用
LinkedList更加占用内存,因为LinkedList的节点除了存储数据,还存储了两个引用,一个指向前一个元素,一个指向后一个元素。
综合来说,在频繁读取集合中的元素的时候,更加推荐使用ArratList,而在插入和删除操作较多时,更加推荐使用LinkedList。

JDK1.8的新特性有哪些?
java8允许我们给接口添加一个非抽象的方法实现,只需要使用default关键字,这个特征又叫扩展方法

点击查看代码
 interface Formula {double calculate(int a);
default double sqrt(int a){return Math.sqrt(a);}}

Formula接口在拥有calculate方法之外同时还定义了sqrt方法,实现了Formula接口的子类只需要实现一个calculate方法,默认方法sqrt将在子类可以直接使用。
Lambda表达式
在老版的java中排序字符串,只需要给静态方法Collections.sort传入一个List对象以及一个比较器来指定顺序排列,通常做法都是创建一个匿名的比较器对象然后将其传递给sort方法。
在java8中提供了更简洁的语法,lambda表达式
Collections.sort(names,(a,b)->b.compareTo(a));
java编译器可以自动推导出参数类型,所以你可以不用再写一次类型。
Lambda表达式中访问外层作用域和老版本的匿名对象中的方式很相似,你可以直接访问标记了final的外层局部变量,或者实例的字段以及静态变量
并且我们可以直接在lambda表达式中访问外层的局部变量

Java中的抽象类和接口?

相同:
1.不能够实例化
2.可以将抽象类和接口类型作为引用类型
3.一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。

不同:
抽象类:
1.抽象类中可以定义构造器
2.可以有抽象方法和具体方法
3.接口中的成员全部是public的
4.抽象类中可以定义成员变量
5.有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法
6.抽象类中可以包含静态方法
7.一个类只能继承一个抽象类

接口:
1.接口中不能定义构造器
2.方法中全部都是抽象方法
3.抽象类中的成员可以是private,默认,protected,public
4.接口定义的成员变量实际上都是常量
5.接口中不能有静态方法
6.一个类可以实现多个接口

标签:面试题,Java,LinkedList,继承,子类,小练,抽象类,父类,方法
From: https://www.cnblogs.com/yifan0820/p/17796010.html

相关文章

  • java实现多线程下载器
    前言:......
  • JAVA培训
    类类名对象名=new类名();面向对象的三种特性*封装原理:利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。用户无需知道对象内部的细节,但可以......
  • java基础漏洞学习----SSRF漏洞
    java基础漏洞学习----SSRF漏洞JAVA的SSRF常见利用协议仅支持sun.net.www.protocol下所有的协议:http,https,file,ftp,mailto,jar及netdoc传入的URL必须和重定向后的URL协议一致,JAVA中的SSRF不能和PHP中一样使用gother协议来扩展攻击面常见的可以发起网络请求,并且会导致SSRF......
  • JAVA 多版本切换失效
    更改Path环境变量中的优先级正确的优先级:2.重启cmd,查看版本参考:https://blog.csdn.net/weixin_44248000/article/details/130345724......
  • java学习-API
    APIjava中的API:就是jdk中提供的各种功能的java类,这些类将底层的实现封装了起来,使用的时候直接调用即可类的例子键盘录入:Scanner类next():遇到了空格就不会继续录入数据nextLine():可以将数据完整的接受过来,结束的标志就是回车换行符号例子packagecom.mystudy.APIlei;im......
  • javaweb--数据库连接池
    数据库连接池是一个容器,负责分配、管理数据库连接(Connection)它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏好处:资源重用提升系统响应速度避免数据库连接遗漏......
  • 系统架构案例分析( java项目架构填空题)
    20年connectionpool数据库连接池viewlayer视图层Controllerlayer控制层businesslayer业务层19年18年17年16年SiteMesh是一个网页布局和装饰框架以及Web应用程序集成框架jQuery是一个快速、小巧且功能丰富的JavaScript库Struts2是一个基于MVC设计模式的Web应用程序......
  • JavaScript ES6 类的继承和构造函数图
        https://www.bilibili.com/video/BV15S4y1N7Mu?p=13&vd_source=f47173c6ece362dfbe9a439ae6addcce   ......
  • java——redis随笔——实战——优惠券秒杀——分布式锁——基于redisson
            Redisson入门导入依赖XML12345<dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.13.6</version></dependency>配置Redisson客户端,在......
  • Java 中的 Default 关键字
    default关键字:是在Java8中引入的新概念,也可称为Virtualextensionmethods——虚拟扩展方法与public、private等都属于修饰符关键字,与其它两个关键字不同之处在于default关键字大部分都用于修饰接口。default修饰方法时只能在接口类中使用,在接口中被default标记的方法可以......