首页 > 编程语言 >Java八股文

Java八股文

时间:2024-03-05 16:35:46浏览次数:28  
标签:八股文 String 对象 成员 equals 修饰 字符串 Java

什么是面向对象

对比面向过程注重事情的步骤顺序,面向对象更关注有哪些参与者(对象),各种需要做什么,易于扩展。

封装

内部对外部来说是透明的,无需修改关心内部实现

例如:

操作数据库,不需要关心连接简历,sql执行,引入mybatis,调方法即可
JavaBean 属性私有,不能由外部随意修改。

继承

继承基类方法,并做出自己的改变、拓展
子类共性的方法或者属性直接使用父类的、拓展自己的个性

多态

对同一个方法引用会有不同效果
继承、方法重写、父类引用指向子类对象
(无法调用子类特有功能,必须父类也有)

JDK JRE JVM

JDK java开发工具,JDK包括JRE 和 Java工具
JRE 运行环境 JRE包括JVM
JVM 虚拟机 适配操作系统(一次编译,到处运行)调用类库lib解释.class文件,再映射到系统调用

==和equals

==对比栈中的值,基本数据类型是变量值,引用数据类型是堆中内存对象的地址,equals()方法用于比较对象的内容是否相等,通常被类重写以实现特定的比较逻辑。

final

修饰类:表示类不可被继承
修饰方法:方法不可被子类覆盖,但是可以重载
修饰变量:一旦赋值不可以更改值

抽象类和接口的异同点

相同:两者不能实例化,可以定义抽象方法
区别:定义的关键字不同,抽象类用的是abstract,接口用的是interface。子类拓展抽象类时用的时extend,拓展接口时用的implete。一个类只能继承一个父类,但可以实现多个接口。接口相比抽象类,少了成员属性和构造器。需要子类继承成员变量,或者需要控制子类实例化时,用抽象类,否则用接口

static

Java类中包含了成员变量、方法、构造器、初始化块和内部类(包括接口、枚举)5种成员,static关键字可以修饰除了构造器外的其他4种成员。static关键字修饰的成员被称为类成员。类成员属于整个类,不属于单个对象。 static关键字有一条非常重要的规则,即类成员不能访问实例成员,因为类成员属于类的,类成员的作用域比实例成员的作用域更大,很容易出现类成员初始化完成时,但实例成员还没被初始化,这时如果类成员访问实力成员就会引起大量错误。 static修饰的部分会和类同时被加载。被static修饰的成员先于对象存在,因此,当一个类加载完毕,即使没有创建对象也可以去访问被static修饰的部分。 静态方法中没有this关键词,因为静态方法是和类同时被加载的,而this是随着对象的创建存在的。静态比对象优先存在。也就是说,静态可以访问静态,但静态不能访问非静态而非静态可以访问静态。

请你说说String类,以及new和字符串直接量的区别

String是Java中常见的API,被final修饰,提供了很多对字符串操作的方法, - char charAt(int index):返回指定索引处的字符; - String substring(int beginIndex, int endIndex):从此字符串中截取出一部分子字符串; - String trim():删除字符串前导和后置的空格; - int indexOf(String str):返回子串在此字符串首次出现的索引; - int lastIndexOf(String str):返回子串在此字符串最后出现的索引; - boolean startsWith(String prefix):判断此字符串是否以指定的前缀开头; - boolean endsWith(String suffix):判断此字符串是否以指定的后缀结尾; - String toUpperCase():将此字符串中所有的字符大写; - String toLowerCase():将此字符串中所有的字符小写; - String replaceFirst(String regex, String replacement):用指定字符串替换第一个匹配的子串; - String replaceAll(String regex, String replacement):用指定字符串替换所有的匹配的子串。

  • new :JVM会用常量池来管理,再调用String类的构造器来创建一个新的String对象,新创建的String对象会被保存在堆内存中。
  • 字符串直接量:JVM会用常量池来管理,节省内存空间

String StringBuffer StringBuilder

  • String:不可变类型,增删效率低,复用率高
  • StringBuffer:可变类型,线程安全,更改效率高
  • StringBuilder:可变类型,线程不安全,性能比Buffer更高

hashCode和equals()

  • hashCode():获取哈希码,equals():比较两个对象是否相等。
  • 二者两个约定:如果两个对象相等,它们必须有相同的哈希码;若两个对象的哈希码相同,他们却不一定相等。也就是说,equals()比较两个对象相等时hashCode()一定相等,hashCode()相等的两个对象equqls()不一定相等。
  • 加分回答:由于hashCode()与equals()具有联动关系,equals()重写时,hashCode()进行重写,使得这两个方法始终满足相关的约定。

标签:八股文,String,对象,成员,equals,修饰,字符串,Java
From: https://www.cnblogs.com/luoyaokun/p/18054327

相关文章

  • 基于JAVA的2048小游戏的二次开发
    引言《2048Numberpuzzlegame》是一款数字益智游戏,而《2048》的初始数字则是由2+2组成的基数4。在操作方面的不同则表现为一步一格的移动,变成更为爽快的一次到底。相同数字的方框在靠拢、相撞时会相加。系统给予的数字方块不是2就是4,玩家要想办法在这小小的16格范围中凑出「2048」......
  • 基于JAVA的康威生命游戏二次开发
    引言:       康威生命游戏(Conway'sGameofLife)是一种基于细胞自动机的零玩家游戏,由数学家约翰·康威(JohnConway)于1970年创建。这个游戏并不是传统意义上的游戏,而是一种模拟生命演变的规则系统。康威生命游戏的“宇宙”是一个由无限的二维网格组成的平面,每个格子被称为......
  • linux下的java部署
    jar命令简介java部署jar包可以使用java-jar命令,比如:java-jardemo.jar执行上述命令后,JAR包中的程序将在Linux系统中运行。注:在运行JAR包之前,确保你的JAR文件是可执行的,并且包含了正确的类和依赖项。如果JAR包依赖于其他库或配置文件,确保它们也在正确的位置可用。......
  • Java数组
    Java数组数组是一种容器,可以用来存储同种类型的多个值。数组的定义两种形式int[]arrayintarray[]数组的初始化在内存中为数组开辟空间,并将数据存入容器的过程。静态初始化//完整格式int[]array=newint[]{11,22,33};//简化格式int[]array={11,22,33};......
  • Java学习笔记——第六天
    案例练习案例一:买飞机票需求用户购买机票时,机票原价会按照是淡季还是旺季,是头等舱还是经济舱的情况进行相应的优惠,优惠方案如下:5-10月为旺季,头等舱9折,经济舱8.5折;11月到来年4月为淡季,头等舱7折,经济舱6.5折,请开发程序计算出用户当前机票的优惠价。分析方法是否需要接收数据?......
  • JAVA项目 贪吃蛇游戏二次开发
    基于java实现贪吃蛇小游戏,主要通过绘制不同的图片并以一定速度一帧一帧地在窗体上进行展示。原代码地址:https://gitee.com/jay_musu/games-and-tools.gitpackagecom.snake.view;importjava.awt.Color;importjava.awt.EventQueue;importjava.awt.Font;importjava.awt......
  • java 异常初识
    什么是异常◆实际工作中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求、你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数据,数据可能是空的等。我们的程序再跑着,内存或硬盘可能满了。等等◆软件程序在运行过程中,非......
  • JAVA基础--JavaDos生成文档
    JavaDos生成文档法一:通过命令行生成信息输入(例子)/***@authorAAA*@version1.0*@since1.8*/publicclassDos{Stringname;/***@authorAAA*@paramname*@return*@throwsException*///方法前输入/**则会自......
  • javaweb04-maven&web入门
    maven依赖管理:管理项目依赖的jar包,避免版本冲突统一项目结构:提供标准统一的项目结构标准的项目构建:标准跨平台的自动化项目构建方式maven坐标groupid:定义当前项目隶属组织名称artifactid:定义当前项目名称version:定义当前项目版本号依赖依赖传递排除依赖<exclusion>......
  • javaweb03-前端工程
    Ajax异步的Javascript和XML数据交换异步交互:在不重载页面的情况下,与服务器交换数据并更新部分网页Axios入门前后端分离开发需求分析->接口定义->前后端并行开发->测试->前后端联调开发YAPI接口管理平台前端工程化规范化、标准化前端开发环境准备vue-cli脚手架Vu......