首页 > 编程语言 >Java八股面试整理(2)

Java八股面试整理(2)

时间:2023-11-02 23:12:30浏览次数:40  
标签:八股 Java 对象 子类 方法 面试 父类 重写

11.int和integer有什么区别,两者在做==运算时会得到什么结果?

int是基本数据类型,Integer是int的包装类。

二者在做==运算时,Integer会自动拆箱为int类型,然后再进行比较。如果两个int值相等则返回true,否则就返回false。

12.说一说你对面向对象的理解

面向对象是一种更优秀的程序设计方法,它的基本思想是使用类、对象、继承、封装、消息等基本概念进行程序设计。

它从现实世界中客观存在的事物出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以现实世界中的事物为中心来思考,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的类,作为系统的基本构成单元,这使得软件系统的组件可以直接映像到客观世界,并保持客观世界中事物及其相互关系的本来面貌。

13.面向对象的三大特征是什么?

面向对象的程序设计方法具有三个基本特征:封装、继承、多态。

封装指的是将对象的实现细节隐藏起来,然后通过一些公用方法来暴露该对象的功能;

继承是面向对象实现软件复用的重要手段,当子类继承父类后,将直接获得父类的属性和方法;

多态指的是子类对象可以直接赋给父类变量,但运行时表现出子类的行为特征,这意味着同一个类型的对象在执行同一个方法时,可能表现出多种行为特征。

14.封装的目的是什么,为什么要有封装?

封装是面向对象编程语言对客观世界的模拟,在客观世界里,对象的状态信息都被隐藏在对象内部,外界无法直接操作和修改。

15.说一说你对多态的理解

子类其实是一种特殊的父类,因此Java允许把一个子类对象直接赋给一个父类引用变量,无须任何类型转换,或者被称为向上转型,向上转型由系统自动完成。子类对象直接赋值给父类变量时,运行表现出子类的行为特征,意味着同一个类型的对象在执行同一个方法时,可能表现出多种行为特征。

16.Java中的多态是怎么实现的

多态的实现离不开继承,在设计程序时,我们可以将参数的类型定义为父类型。在调用程序时,则可以根据实际情况,传入该父类型的某个子类型的实例,这样就实现了多态。

17.Java为什么是单继承,为什么不能多继承

首先,Java是单继承的,指的是Java中一个类只能有一个直接的父类。Java不能多继承,则是说Java中一个类不能直接继承多个父类。

Java语言之所以摒弃了多继承的这项特征,是因为多继承容易产生混淆。比如,两个父类中包含相同的方法时,子类在调用该方法或重写该方法时就会迷惑。

18.说一说重写与重载的区别

重载发生在同一个类中,若多个方法之间方法名相同、参数列表不同,则它们构成重载的关系。

重写发生在父类子类中,若子类方法想要和父类方法构成重写关系,则它的方法名、参数列表必须与父类方法相同。另外,返回值要小于等于父类方法,抛出的异常要小于等于父类方法,访问修饰符则要大于等于父类方法。还有,若父类方法的访问修饰符为private,则子类不能对其重写。

19.构造方法能不能重写?

构造方法不能重写。因为构造方法需要和类保持同名,而重写的要求是子类方法要和父类方法保持同名。如果允许重写构造方法的话,那么子类中将会存在与类名不同的构造方法,这与构造方法的要求是矛盾的。

20. ==和equals()有什么区别?

==运算符:

  • 作用于基本数据类型时,是比较两个数值是否相等;
  • 作用于引用数据类型时,是比较两个对象的内存地址是否相同,即判断它们是否为同一个对象;

equals()方法:

  • 没有重写时,Object默认以 == 来实现,即比较两个对象的内存地址是否相同;
  • 进行重写后,一般会按照对象的内容来进行比较,若两个对象内容相同则认为对象相等,否则认为对象不等。

标签:八股,Java,对象,子类,方法,面试,父类,重写
From: https://www.cnblogs.com/sillyfox/p/17806637.html

相关文章

  • Java 基础篇day05
    面向对象编程世间万物皆对象,在Java的观念中,把一切都看作对象,但是你操纵的确是一个对象引用。在Java中一旦创建了一个引用,就希望它能与一个新的对象继续关联,通常使用new操作符来实现这一目的。new的意思是,给我一个新对象,如果你不想相亲,自己new一个对象就好了,祝你下辈子幸福对象本......
  • Java网络编程实现一(服务器)对多(客户端)
    使用多线程+网络编程实现一个服务器对多个客户端在该程序中用到的知识点java的BIOServerSocket和Socket网络编程多线程的知识(个人认为重要)实现的思路服务器端(使用多个线程)在客户端需要有一个集合来存储已经连接上的客户端,如果客户端断开连接则需要从集合中删除创建一......
  • java
    我们先剖析一个完整的Java程序,它的基本结构是什么:/***可以用来自动创建文档的注释*/publicclassHello{publicstaticvoidmain(String[]args){//向屏幕输出文本:System.out.println("Hello,world!");/*多行注释开始注释......
  • java 网络编程之传输文件
    需要建两个类,分别作为服务器(接收文件)和客户端(发送文件) 1.服务器类:1package菜鸟教程.网络编程.网络编程之传输文件;23importjava.io.*;4importjava.net.InetAddress;5importjava.net.ServerSocket;6importjava.net.Socket;78/**9*服......
  • 面试10000次依然会问的【volatile】,你还不会?
    volatile关键字的定义volatile是Java语言提供的一种轻量级的同步机制,主要用于「确保变量的修改对其他线程是立即可见的」,以及「防止指令重排序」。使用volatile修饰的变量,其读写操作直接作用于主存,而不是线程的工作内存。这意味着一旦一个线程修改了volatile变量的值,其他线程立即......
  • java网络编程与多线程
      一、Java 网络编程网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。java.net包中J2SE的API包含有类和接口,它们提供低层次的通信细节。你可以直接使用这些类和接口,来专注于解决问题,而不用关注通信细节。java.net包中提供了两种常见的网络......
  • 在JavaScript中移除字符串中的重音符号/变音符号
    内容来自DOChttps://q.houxu6.top/?s=在JavaScript中移除字符串中的重音符号/变音符号如何从字符串中移除重音符号?特别是在IE6中,我曾经使用过以下代码:accentsTidy=function(s){varr=s.toLowerCase();r=r.replace(newRegExp(/\s/g),"");r=r.replace(......
  • 美团面试:Redis 除了缓存还能做什么?可以做消息队列吗?
    这是一道面试中常见的Redis基础面试题,主要考察求职者对于Redis应用场景的了解。即使不准备面试也建议看看,实际开发中也能够用到。内容概览:Redis除了做缓存,还能做什么?分布式锁:通过Redis来做分布式锁是一种比较常见的方式。通常情况下,我们都是基于Redisson来实现分布......
  • Java NIO包结构简介
    layout:postread_time:trueshow_date:truetitle:JavaNIO包结构date:2023-07-0910:12:10-0600description:JavaNIO包结构简述.img:posts/java-nio/cover.pngtags:[java,IO,JavaNIO,ChannelIO,Buffer,threadsafty,multiplexer,charset]author:尹......
  • Java_消息队列
    消息系统MQ全称MessageQueue(消息队列)消息队列有RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMQ等,而部分数据库如Redis、MySQL以及phxsql也可实现消息队列的功能系统管理者MessageManager包括Apache的ActiveMQ,Apache的Kafka,RabbitMQ、memcacheQ消息类型......