JAVA面试-语法基础- A01

news/2023/12/4 20:44:42

语法基础

  • 面向对象
    • 封装
    • 继承
    • 多态

面向对象

面向对象特性

封装

利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分隔的独立实体,数据被保护在抽象数据类型的内部,尽可能的隐藏内部的细节,只保留一些对外的接口,用户无需对对象的内部了解过多,但是可以通过对象提供的接口来访问对象。

优点 \color{#FF00FF}{优点} 优点

  • 减少耦合:独立开发,测试,优化,理解和修改
  • 减轻维护的负担:可以更加容易被程序员理解,并且在调试的时候可以不影响其他的模块
  • 提高软件的重用性
  • 降低来构建大型系统的风险:即使整个系统不可用,但是其他的模块是可以使用的

下面People类封装nameagesex等属性,外界只能通过get()方法获取其相关对象的属性,但是相应的其中wealth属性是无法获取的,但是这个属性是可以通过owner来获取的

package com.Jragon.Base.object;/*** Created by jdx on 2023/5/18 下午12:05*/
public class People {private String name;private int wealth;private int age;private int sex;public String getName() {return name;}public int getAge() {return age;}public String getSex() {return sex == 0 ? "man" : "woman";}public void owner() {if (18 <= wealth && wealth <= 28) {System.out.println("You who have youth are the richest!!!");} else {System.out.println("Don't waste your time in vain!!!");}}
}

继承

继承体现了 IS-A 的关系,例如 DogAnimal就是一种 IS-A 的关系,因此Cat可以继承 Animal,从而获得 Animal 的对应属性。注意:继承应该遵循里式替换原则,子类对象必须能够替换掉所有的父类对象。

对于父类引用子类对象称为向上转型的深入理解

Dog 可以当做 Animal 来使用,也就是说可以使用 Animal 引用 Dog 对象。父类引用指向子类对象称为 向上转型 。

Animal animal = new Dog();

多态

多态运行时有三个条件:

  • 继承
  • 重写
  • 向上转型

计算类

  1. 4*0.1 == 0.4 将会返回true or false
  • false,因为有一些浮点数并不能精确的反馈出来
  1. a=a+b和a+=b的区别
  • +=隐式的将操作结果先进行类型准换,然后在对结果进行计算,这是区别于a=a+b的根本

基本面试相关问题

1、对equals()和hashCode()的理解

  • 在重写equals方法的时候需要重写hashCode()方法,原因就是有强制规范,在此过程中需要注意不同的对象可能会有相同的hashCode但是相同的对象就一定不会有相同的HashCode 这是强制规范所定

2、String、StringBuffer和StringBuilder的区别

  • 从适用范围角度来看,String对象是不可变的,但是StringBuffer和StringBuilder是可变字符串操作,对于String来说,他是final修饰的、每次对对象的操作都会生成一个新的对象,但是对于另外俩个来说他们本身是对对象进行操作,所以在对字符进行频繁操作的时候可以考虑抛弃String防止对系统性能进行产生影响
  • 从线程安全角度来说:StringBuilder回更快但是这就意味着他的安全性能比较低,因为从线程安全角度来看确实如此

3、this()&super()在构造方法中的区别

  • 本质来说this是指向对象的指针(假想),super就是一个关键字
  • 调用super方法来说,必须将super放在第一行否则idea将会飙红,象征编译不通过
  • this和super不能在同一个构造器中
  • 适用以上this和super方法时,不可用在static环境中

4、接口和抽象类的区别

  • 抽象类中可以有构造方法,接口没有构造方法(java8以后接口也是可以有构造方法的【default 关键字】)
  • 抽象类中可以有普通成员变量,接口没有普通成员变量
  • 一个子类可以智能继承一个抽象类,但是可以实现多个接口

http://www.ppmy.cn/news/70448.html

相关文章

前端通信-服务端发送事件: SSE(Server-Sent Events)

在日常开发中&#xff0c;我们经常会遇到需要实时获取数据的情况&#xff0c;之前实现这种相似的功能通常都是用ajax长轮询&#xff0c;在HTML5规范中定义了新的通信方式&#xff0c;WebSocket和SSE。websocket相对SSE更常用一些&#xff0c;本文着重来介绍SSE的应用。 SSE AP…

滨州申请专利需要准备哪些材料?

如果你想保护你的一些发明和设计&#xff0c;你可以申请专利。申请专利时&#xff0c;需要提前了解程序和相关流程。那么&#xff0c;申请专利需要准备哪些材料呢&#xff1f;让我们一起仔细看看。 首先&#xff0c;申请专利需要准备哪些材料&#xff1f; (1)外观专利&#xff…

C++学习 Day14

目录 1. 泛型编程 2. 函数模板 2.1 函数模板概念 2.2 函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.5 模板参数的匹配原则 3. 类模板 3.1 类模板的定义格式 3.2 类模板的实例化 1. 泛型编程 如何实现一个通用的交换函数呢&#xff1f; void Swap(int&a…

德尔玛IPO首日破发,市值蒸发超4亿

今日&#xff08;5月18日&#xff09;&#xff0c;小米“代工厂”广东德尔玛科技股份有限公司&#xff08;下称“德尔玛”&#xff0c;301332.SZ&#xff09;正式在深交所挂牌上市。 德尔玛此次IPO募资净额为12.31亿元&#xff0c;开盘价为14.81元/股&#xff0c;与发行价持平…

【Linux内核解析-linux-5.14.10】文件系统知识点以及解答(建议收藏)

什么是Linux文件系统&#xff1f; 答&#xff1a;Linux文件系统是一种用于管理和组织计算机上数据的方法。它提供了一个层次结构&#xff0c;使用户能够轻松地访问他们的数据&#xff0c;并且支持对数据进行备份、恢复和保护。 Linux中有哪些常见的文件系统类型&#xff1f; 答…

使用 SpringBoot 访问 MySQL 数据库

一、目标 创建一个 MySQL 数据库&#xff0c;构建一个 Spring 应用程序&#xff0c;并将其连接到新创建的数据库。 二、准备工作 1、最喜欢的文本编辑器或 IDE 2、Java 17或更高版本 3、Gradle 7.5或Maven 3.5 三、初始化项目 1、 导航到https://start.spring.io。该服务…

HTTPTomcatServlet学习

HTTP&Tomcat 今日目标&#xff1a; 了解JavaWeb开发的技术栈理解HTTP协议和HTTP请求与响应数据的格式掌握Tomcat的使用掌握在IDEA中使用Tomcat插件理解Servlet的执行流程和生命周期掌握Servlet的使用和相关配置 1. Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网&…

freeswitch的2833和inband对接方案

概述 freeswitch支持三种模式的DTMF传输方式&#xff0c;分别时inband、INFO、2833。 在传统的PSTN网络中&#xff0c;所有的DTMF码都是inband模式&#xff0c;所以VOIP网络和PSTN网络对接中&#xff0c;需要将DTMF码做格式转换&#xff0c;通常是2833和inband之间的转换。 …

Makefile 简易教程

如果你是命令行重度使用者&#xff0c;学习 Makefile 将可以大大提高你的开发效率&#xff0c;下面简单介绍一下 Makefile 的知识和使用方式。 Makefile 是一种包含一组指令来编译和构建软件项目的文件。 Makefile 文件通常包含一组规则和依赖关系&#xff0c;以指定如何将源…

Netty核心组件模块(一)

1.Bootstrap和ServerBootstrap 1>.Bootstrap意思是引导,一个Netty应用通常由一个Bootstrap开始,主要作用是配置整个Netty程序,串联各个组件,Netty中Bootstrap类是客户端程序的启动引导类,ServerBootstrap是服务端启动引导类; 2>.常见的方法有: ①.public ServerBootstr…

【笔试强训选择题】Day13.习题(错题)解析

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;笔试强训选择题 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01; 文章目录…

spring项目里的大事务优化

编程型事务更加灵活 声明式事务只需要加在方法头加Transactional注解即可开启事务&#xff0c;但是还是不太灵活&#xff0c;意味着整个方法所进行对数据库操作都要加进事务&#xff0c;当然一次查询也要进入事务&#xff0c;这并不是我们想要的&#xff0c;我们在update、ins…

SpringMVC 执行流程

视图阶段&#xff08;老旧JSP等) DispatcherServlet&#xff1a;接收请求、响应结果&#xff0c;所有的请求都要经过它&#xff0c;它是被Tomcat容器初始化的当这个类加载时会加载一些组件类HandlerMapping、HandlerAdapter、ViewResolver等等。 HandlerMapping&#xff1a;根…

mybatis-plus 自动填充的时间跟真实时间相差8小时

项目中 用到了以下两个字段,分别是插入数据时间和更新数据时间&#xff0c;用的mybatis-plus自动填充,结果发现填充的时间跟真实时间相差很多。查了一些资料&#xff0c;找到了解决方案&#xff1a; 1. 下图是我的mysql没有进行配置之前的时区配置,这里的CST包括了4个时区,分别…

泛型类和泛型类是并列的关系

package com.test.test05;import java.util.ArrayList;class Demo{public static void main(String[] args) {Object obj new Object();String s new String();obj s; //多态的一种形式Object[] objArr new Object[10];Object[] strArr new String[10];objArr st…

一种基于非均匀分簇和建立簇间路由的算法的无线传感器网络路由协议(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 本文准备了一种路由方法&#xff0c;该方法使传感器通过有效地使用能量将数据从发送方加载到接收器&#xff0c;因为它在 LEAC…

修为 - 人生感悟

人不为己&#xff0c;天诛地灭。 说明一下&#xff0c;上面说的为己&#xff0c;指的是人的修为。 一个人&#xff0c;在成年之后&#xff0c;需要不断的对自己进行修为的提高。在经历了世事之后&#xff0c;对人生的感悟要不断地进行总结&#xff0c;提高自己的修为。 老祖宗给…

基于ArcGIS实现陕西省1:250000比例尺地形图分幅和编号

1地形图的分幅与编号原理 我国1:1000000地形图的分幅采用国际1:1000000地图分幅标准&#xff0c;而其他比例尺地形图分幅以1:1000000比例尺地形图为基准进行分幅。每幅1:1000000地形图范围是经差6、纬差4&#xff1b;纬度60~ 76之间经差12、纬差4&#xff1b;纬度76~ 88之间经…

H5性能测试怎么做?这些关键指标你得搞清楚

目录 01、Http相关 02、组件是否压缩 03、图片格式和大小是否合适 04、CSS放在顶部 05、JS放在底部 06、JS &CSS压缩 07、是否添加缓存 08、避免非200返回值 09、使用CDN 03、WebView相关 学习资源分享 软件测试面试小程序 01、Http相关 01、Http请求个数 有…

调用系统分享图片,多图到微信二次分享无效解决

直接上代码&#xff1a;List<String> files为文件路径列表public static void shareMoreWxFile(Context context, List<String> files) {try {ArrayList uriArrayList new ArrayList<Uri>();for (String path : files) {File file new File(path);if (file…
最新文章