Java基础2.0

news2024/11/27 7:43:01

7.String,StringBuffer,StringBuilder的区别

7.1 String

String时不可变的,一旦String对象被创建以后,包含在这个对象中的字符序列时不可改变的,直到这个对象被销毁。

7.2 StringBuffer

StringBuffer对象则代表一个字符序列可变的字符串,当一个StringBuffer对象被创建后,可以通过StringBuffer对象提供的append(),insert(),等方法改变这个字符串对象的字符序列。

7.3 StringBuilder

StringBuilder对象也可以改变字符序列,基本用法跟StringBuffer相似,两个类的构造器和方法也基本相同,但是StringBuffer是线程安全的,StringBuilder没有线程安全功能,性能略高。

如果要求线程安全(多线程)的场景,就使用StringBuffer,如果对线程安全要求没那么高,要求性能多一点,可以使用StringBuilder。注意:三者都是final类,不允许被继承。

7.4 StringBuffer是如何实现线程安全的?

StringBuffer类中的方法都添加了synchronized关键字,这个方法添加了一个锁,来保证线程安全

 8.反射

在运行过程中,对于任何一个类都能获取它的属性和方法,任何一个对象都能调用其方法,这种动态获取信息和动态调用对象,就是反射。

比如当我们new一个student类的对象时,jvm会去本地磁盘找student.class文件并且加载到jvm内存中,同时会自动创建一个class对象,一个类只能有一个class对象。

本质就是得到class对象后,反向获取Student对象的各种信息。

Java获取反射的三种方法:

  1. 通过new对象实现反射
  2. 通过路径实现反射
  3. 通过类名实现反射

9.浅拷贝和深拷贝的区别

主要区别在于拷贝的程度和对原始对象内部结构的影响。

浅拷贝

浅拷贝创建一个对象,如果字段是基本数据类型,则这些字段会被复制到新对象中,如果字段是引用类型,则新对象和原始对象中的引用指向相同对象(因为只复制了引用地址,不复制引用指向的对象);从而导致对新对象进行修改会影响到原始对象。

深拷贝

深拷贝创建一个新的对象,会递归的复制整个对象结构,确保和原始对象之间所有关系都是独立的。

10.抽象类和接口的区别

  1. 抽象类有构造方法,但接口没有
  2. 抽象类可以有实例变量,但接口没有实例变量,有常量
  3. 抽象类只能单继承,但是接口可以实现多个
  4. 抽象类可以包含非抽象方法,接口在java7之前所有方法都是抽象的,java8之后也可以包含非抽象方法
  5. 抽象类中的方法可以是任意修饰符,但是接口java8之前都是public,java9支持private

11.Error和Exception有什么区别?

Error:程序无法处理,程序会立即崩溃,jvm停止运行。

Exception:程序可以向上抛出或者捕获。

12.final关键字的作用

  1. 修饰类:修饰一个类时,表示该类不能被继承。
  2. 修饰方法:把方法锁定,防止任何继承类修改它的含义,此处需要注意的一点是:因为重写的前提是子类可以从父类中继承此方法,如果父类中final修饰的方法同时访问控制权限为private,将会导致子类中不能直接继承到此方法,因此,此时可以在子类中定义相同的方法名和参数,此时不再产生重写与final的矛盾,而是在子类中重新定义了新的方法。
  3. 修饰变量:当final修饰一个基本数据类型时,表示该基本数据类型的值一旦在初始化后便不能发生变化;如果final修饰一个引用类型时,则在对其初始化之后便不能再让其指向其他对象了,但该引用所指向的对象的内容是可以发生变化的。

13.this关键字的作用

可以理解为指向的对象本身的一个指针。

用法大体可以分为三种:

  1. 当成员方法的成员变量和形参名称重名时,可以用this来区分,表示调用本类中的成员变量。
  2. 调用成员方法和构造方法。
  3. 返回类的引用,可以使用return this来返回某个类的引用,this此时就表示类的名称。

14.super关键字的用法

super可以理解为是指向自己父类对象的一个指针,这个父类是指离自己最近的一个父类。

  1. 调用子类中重写的父类的方法
  2. 如果父类和子类都有同名的属性,则访问父类的属性
  3. 从子类构造函数显示地调用父类无参数化构造函数和有参数化构造函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2248284.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何寻找适合的HTTP代理IP资源?

一、怎么找代理IP资源? 在选择代理IP资源的时候,很多小伙伴往往将可用率作为首要的参考指标。事实上,市面上的住宅IP或拨号VPS代理IP资源,其可用率普遍在95%以上,因此IP可用率并不是唯一的评判标准 其实更应该关注的…

idea_卸载与安装

卸载与安装 卸载1、设置 -> 应用2、查找到应用,点击卸载3、把删除记录和设置都勾选上4、删除其它几个位置的残留 安装1、下载安装包2、欢迎安装 -> Next3、选择安装目录 -> Next4、创建快捷图标和添加到环境变量5、确认文件夹的名称 -> Install6、完成安…

【Axure高保真原型】天气模板

今天和大家分享天气模板的原型模板,里面包括晴天、多云、阴天、小雨、大雨、暴雨、强雷阵雨、小雪、中雪、大雪、暴雪、雨夹雪、微风、强风、狂风、龙卷风、轻雾、大雾等,后续也可以自行添加。 这个模板是用中继器制作的,所以使用也很方便&a…

深度学习模型:循环神经网络(RNN)

一、引言 在深度学习的浩瀚海洋里,循环神经网络(RNN)宛如一颗独特的明珠,专门用于剖析序列数据,如文本、语音、时间序列等。无论是预测股票走势,还是理解自然语言,RNN 都发挥着举足轻重的作用。…

Prometheus告警带图完美解决方案

需求背景 告警分析处理流程 通常我们收到 Prometheus 告警事件通知后,往往都需要登录 Alertmanager 页面查看当前激活的告警,如果需要分析告警历史数据信息,还需要登录 Prometheus 页面的在 Alerts 中查询告警 promQL 表达式,然…

深入理解 Java 基本语法之运算符

(一)研究背景 在 Java 编程中,运算符是处理数据和变量的基本工具,掌握各种运算符的使用方法对于提高编程效率至关重要。 (二)研究目的 深入理解 Java 基础运算符的概念、分类和作用,通过具体…

iOS 17.4 Not Installed

0x00 系统警告 没有安装 17.4 的模拟器,任何操作都无法进行! 点击 OK 去下载,完成之后,依旧是原样! 0x01 解决办法 1、先去官网下载对应的模拟器: https://developer.apple.com/download/all/?q17.4 …

Flink细粒度的资源管理

Apache Flink致力于为所有应用程序自动导出合理的默认资源需求。对于希望根据其特定场景微调其资源消耗的用户,Flink提供了细粒度的资源管理。这里我们就来看下细粒度的资源管理如何使用。(注意该功能目前仅对DataStream API有用) 1. 适用场景 使用细粒度的资源管理的可能…

Ubuntu20.04运行msckf_vio

文章目录 环境配置修改编译项目运行MSCKF_VIO运行 Launch 文件运行 rviz播放 ROSBAG 数据集 运行结果修改mskcf 保存轨迹EVO轨迹评价EVO轨迹评估流程实操先把euroc的真值转换为tum,保存为data.tum正式评估 报错1问题描述 报错2问题描述问题分析问题解决 参考 环境配…

计算机网络 第4章 网络层

计算机网络 (第八版)谢希仁 第 4 章 网络层4.2.2 IP地址**无分类编址CIDR**IP地址的特点 4.2.3 IP地址与MAC地址4.2.4 ARP 地址解析协议4.2.5 IP数据报的格式题目2:IP数据报分片与重组题目:计算IP数据报的首部校验和(不正确未改) …

Angular面试题汇总系列一

1. 如何理解Angular Signal Angular Signals is a system that granularly tracks how and where your state is used throughout an application, allowing the framework to optimize rendering updates. 什么是信号 信号是一个值的包装器,可以在该值发生变化时…

SAR ADC系列15:基于Vcm-Base的开关切换策略

VCM-Based开关切换策略:采样~第一次比较 简单说明: 电容上下极板分别接Vcm(一般Vcm1/2Vref)。采样断开瞬间电荷锁定,进行第一次比较。 当VIP > VIN 时,同时 减小VIP 并 增大VIN 。P阵列最高权重电容从Vcm(1/2Vref)…

实现Excel文件和其他文件导出为压缩包,并导入

导出 后端&#xff1a; PostMapping("/exportExcelData")public void exportExcelData(HttpServletRequest request, HttpServletResponse response, RequestBody ResData resData) throws IOException {List<Long> menuIds resData.getMenuIds();List<Co…

某车企ASW面试笔试题

01--背景 去年由于工作岗位的动荡&#xff0c;于是面试了一家知名车企&#xff0c;上来进行了一番简单的介绍之后&#xff0c;被告知需要进入笔试环节&#xff0c;以往单位面试都是简单聊聊技术问题&#xff0c;比如对软件开发的流程或者使用的工具等待问题的交流&#xff0c;…

计算(a+b)/c的值

计算&#xff08;ab&#xff09;/c的值 C语言代码C语言代码Java语言代码Python语言代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 给定3个整数a、b、c&#xff0c;计算表达式(ab)/c的值&#xff0c;/是整除运算。 输入 输入仅一行&…

【在Linux世界中追寻伟大的One Piece】多线程(二)

目录 1 -> 分离线程 2 -> Linux线程互斥 2.1 -> 进程线程间的互斥相关背景概念 2.2 -> 互斥量mutex 2.3 -> 互斥量的接口 2.4 -> 互斥量实现原理探究 3 -> 可重入VS线程安全 3.1 -> 概念 3.2 -> 常见的线程不安全的情况 3.3 -> 常见的…

【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化?

【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化&#xff1f; 重要性&#xff1a;★★ NLP Github 项目&#xff1a; NLP 项目实践&#xff1a;fasterai/nlp-project-practice 介绍&#xff1a;该仓库围绕着 NLP 任务模型的设计、训练、优化、部署和应用&am…

AIGC--AIGC与人机协作:新的创作模式

AIGC与人机协作&#xff1a;新的创作模式 引言 人工智能生成内容&#xff08;AIGC&#xff09;正在以惊人的速度渗透到创作的各个领域。从生成文本、音乐、到图像和视频&#xff0c;AIGC使得创作过程变得更加快捷和高效。然而&#xff0c;AIGC并非完全取代了人类的创作角色&am…

C++11特性(详解)

目录 1.C11简介 2.列表初始化 3.声明 1.auto 2.decltype 3.nullptr 4.范围for循环 5.智能指针 6.STL的一些变化 7.右值引用和移动语义 1.左值引用和右值引用 2.左值引用和右值引用的比较 3.右值引用的使用场景和意义 4.右值引用引用左值及其一些更深入的使用场景分…