Java面试题——基础篇二

简介: Java面试题——基础篇二

💞 写出this和super的用法。


       This:由于Java中成员变量名与局部变量名重复时,成员变量就会失效而不报错,为避免此种情况,就有了this关键字。在成员变量与局部变量相同时,this.a其实就是调用本类的成员变量a;若没有用this,就是a1=a,只是将方法中局部变量a的值赋给a1。而a2=this.a就是将成员变量a的值赋给a2。(调用成员变量)


       Super:1.调用父类的对象,当子类需要调用父类属性时,可以使用super.变量 调用父类;2.调用父类的构造方法,当子类需要使用父类的构造方法时,可以不用重新定义而使用super直接调用父类构造方法。


       Super调用父类的构造方法一般为:


       Public 类名(父类构造方法所有属性,新加属性1,新加属性2,…){


               Super(按顺序写入父类构造方法中所有变量名用“,”隔开);


               this.新加属性1 = 新加属性1;


               this.新加属性2 = 新加属性2;


               ……


       }


       在继承父类构造方法的同时也可以添加子类本身属性共同构成构造方法。


💞 写出static和final的用法


       final:修饰的成员变量表示常量,修饰的类不能被继承,修饰的方法不能被被重写。


       static:表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态ststic代码块,但是Java语言中没有全局变量的概念。


       注:static final用来修饰成员变量和成员方法,可以简单的理解为“全局常量”。

💞 为什么要重写toString()方法


       若不重写toString,输出的则是:包名.类名.@.hash码值,是地址;若重写之后则输出对象本身的值.



💞 为什么要重写equals()方法


      “equals”表示比较两个对象,若不重写,输出的是对象的地址,若重写之后则输出对象本身的值。

💞 写出重载与重写的区别


       重载:是让类以统一的方式,处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载的时候,方法名要一样,但参数类型和个数不一样,返回值类型可以相同也可以不同。


       重写:是当父类的方法不能满足子类需求的时候,子类需要重写这个方法达到所需的功能。


方法的重载发生在同一个类中,方法的从写发生在不同的类中。


💞 请写出Java基本数据类型及对应的封装类型,并说明封装类的作用


byte----> Byte


short----> Short


int---->Integer


long----> Long


double----> Double


float----> Float


boolean----> Boolean


char----> Characater


封装类的作用:


       (1)Java中封装的实质就是将类的状态信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。


       (2)封装反映了事物的相对独立性,有效避免了外部错误对此对象的影响,并且能够对对象使用者由于大意产生的错误起到预防作用。


       (3)面向对象编程提倡对象之间实现松耦合关系。


       (4)封装的好处在于隐藏类的实现细节,让使用者只能通过程序员规定的方法来访问数据,可以方便地加入存取控制修饰符,来限制不合理操作。


       (5)松耦合就是指尽量减少对象之间的关联性,以降低它们之间的复杂性和依赖性。


💞 写出“==”和equals的区别


 “==”比较的是基本数据类型;比较的是值。


  “equals”比较的是引用数据类型;比较的地址。


💞 Java对内存的划分分为几类


  划分一:运行时数据区域; 程序计数器; Java虚拟机栈; 本地方法栈; 堆; 方法区;运行时常量池; 对象访问。


  划分二:栈区、堆区、静态区、代码区。


💞 堆和栈的区别


  堆:存放的是引用数据类型;


  栈: 存放的是基本数据类型;容量小、速度快、适合存放小型数据。

💞 static关键字是什么意思?Java中是否可以覆盖一个private或者是static的方法?


       如果一个类的变量或者方法前面有static修饰,那么表明这个方法或者变量属于这个类,也就是说可以在不创建对象的情况下直接使用。


       当父类的方法被private修饰时,表明该方法为父类私有,对其他任何类都是不可见的,因此如果子类定了一个与父类一样的方法,这对于子类来说相当于是一个新的私有方法,且如果要进行向上转型,然后去调用该“覆盖方法”,会产生编译错误。


       static方法时编译时静态绑定的,属于类,而覆盖是运行时动态绑定的(动态绑定的多态),因此不能覆盖。

💞 Java支持多继承么


  在java中是单继承的,也就是说一个类只能继承一个父类。


  java中实现多继承有两种方式,一是接口,而是内部类.



相关文章
|
27天前
|
缓存 Java 关系型数据库
【Java面试题汇总】ElasticSearch篇(2023版)
倒排索引、MySQL和ES一致性、ES近实时、ES集群的节点、分片、搭建、脑裂、调优。
【Java面试题汇总】ElasticSearch篇(2023版)
|
27天前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
223 37
|
2天前
|
缓存 安全 Java
三万字长文Java面试题——基础篇(注:该篇博客将会一直维护 最新维护时间:2024年9月18日)
本文是一篇全面的Java面试题指南,涵盖了Java基础、数据类型、面向对象、异常处理、IO流、反射、代理模式、泛型、枚举、Lambda表达式、Stream流等多个方面的知识点,并提供了详细的解析和代码示例。
14 0
三万字长文Java面试题——基础篇(注:该篇博客将会一直维护 最新维护时间:2024年9月18日)
|
27天前
|
设计模式 安全 算法
【Java面试题汇总】设计模式篇(2023版)
谈谈你对设计模式的理解、七大原则、单例模式、工厂模式、代理模式、模板模式、观察者模式、JDK中用到的设计模式、Spring中用到的设计模式
【Java面试题汇总】设计模式篇(2023版)
|
27天前
|
存储 关系型数据库 MySQL
【Java面试题汇总】MySQL数据库篇(2023版)
聚簇索引和非聚簇索引、索引的底层数据结构、B树和B+树、MySQL为什么不用红黑树而用B+树、数据库引擎有哪些、InnoDB的MVCC、乐观锁和悲观锁、ACID、事务隔离级别、MySQL主从同步、MySQL调优
【Java面试题汇总】MySQL数据库篇(2023版)
|
27天前
|
存储 缓存 NoSQL
【Java面试题汇总】Redis篇(2023版)
Redis的数据类型、zset底层实现、持久化策略、分布式锁、缓存穿透、击穿、雪崩的区别、双写一致性、主从同步机制、单线程架构、高可用、缓存淘汰策略、Redis事务是否满足ACID、如何排查Redis中的慢查询
【Java面试题汇总】Redis篇(2023版)
|
27天前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
27天前
|
缓存 Java 数据库
【Java面试题汇总】Spring篇(2023版)
IoC、DI、aop、事务、为什么不建议@Transactional、事务传播级别、@Autowired和@Resource注解的区别、BeanFactory和FactoryBean的区别、Bean的作用域,以及默认的作用域、Bean的生命周期、循环依赖、三级缓存、
【Java面试题汇总】Spring篇(2023版)
|
27天前
|
存储 缓存 监控
【Java面试题汇总】JVM篇(2023版)
JVM内存模型、双亲委派模型、类加载机制、内存溢出、垃圾回收机制、内存泄漏、垃圾回收流程、垃圾回收器、G1、CMS、JVM调优
【Java面试题汇总】JVM篇(2023版)
|
27天前
|
存储 缓存 安全
【Java面试题汇总】多线程、JUC、锁篇(2023版)
线程和进程的区别、CAS的ABA问题、AQS、哪些地方使用了CAS、怎么保证线程安全、线程同步方式、synchronized的用法及原理、Lock、volatile、线程的六个状态、ThreadLocal、线程通信方式、创建方式、两种创建线程池的方法、线程池设置合适的线程数、线程安全的集合?ConcurrentHashMap、JUC
【Java面试题汇总】多线程、JUC、锁篇(2023版)