2024年150道高频Java面试题(四)

7. String 类的常用方法都有哪些?

Java中的String类提供了丰富的方法用于字符串操作。以下是一些常用的方法:

  1. 长度和判空
    • int length(): 返回字符串的长度。
    • boolean isEmpty(): 判断字符串是否为空。
  2. 获取字符
    • char charAt(int index): 获取指定索引处的字符。
  3. 比较
    • int compareTo(String anotherString): 按字典顺序比较两个字符串。
    • boolean equals(Object anObject): 比较两个字符串内容是否相等。
    • boolean equalsIgnoreCase(String anotherString): 忽略大小写比较两个字符串是否相等。
  4. 查找
    • int indexOf(int ch): 返回指定字符在字符串中首次出现的索引。
    • int lastIndexOf(int ch): 返回指定字符在字符串中最后一次出现的索引。
    • int indexOf(String str): 返回指定字符串在字符串中首次出现的索引。
    • int lastIndexOf(String str): 返回指定字符串在字符串中最后一次出现的索引。
  5. 截取和拆分
    • String substring(int beginIndex): 从指定索引截取到字符串末尾。
    • String substring(int beginIndex, int endIndex): 截取指定索引范围内的字符串。
    • String[] split(String regex): 根据正则表达式拆分字符串。
  6. 转换
    • char[] toCharArray(): 将字符串转换成字符数组。
    • String toLowerCase(): 将字符串转换为小写。
    • String toUpperCase(): 将字符串转换为大写。
    • String trim(): 去除字符串前后的空白。
  7. 替换
    • String replace(char oldChar, char newChar): 替换字符串中的字符。
    • String replaceAll(String regex, String replacement): 根据正则表达式替换字符串中的内容。
  8. 检查是否包含
    • boolean contains(CharSequence s): 检查字符串是否包含指定的字符序列。
    • boolean startsWith(String prefix): 检查字符串是否以指定前缀开始。
    • boolean endsWith(String suffix): 检查字符串是否以指定后缀结束。
  9. 拼接
    • String concat(String str): 将指定的字符串连接到当前字符串的末尾。
  10. 静态方法
  • String join(CharSequence delimiter, CharSequence... elements): 将多个字符串用指定的分隔符连接起来。

以下是部分方法的代码示例:

String str = "Hello, World!";
System.out.println(str.length()); // 输出 13
System.out.println(str.charAt(0)); // 输出 'H'
System.out.println(str.indexOf("World")); // 输出 7
System.out.println(str.substring(7)); // 输出 "World!"
System.out.println(str.replace('l', 'L')); // 输出 "HeLLo, WorLd!"

这些方法覆盖了字符串操作的大部分常见需求,是Java开发中经常使用的基础功能。

8. 抽象类必须要有抽象方法吗?

不一定。在Java中,抽象类并不强制要求必须包含抽象方法。抽象类可以包含0个、1个或者多个抽象方法,也可以不包含任何抽象方法,但包含抽象方法的类必须被声明为抽象类。

下面是一个不包含抽象方法的抽象类的例子:

public abstract class Animal {// 这里没有抽象方法public void eat() {System.out.println("This animal eats food.");}// 抽象类中可以有具体实现的方法public void sleep() {System.out.println("This animal sleeps.");}
}

在这个例子中,Animal类是一个抽象类,但它没有抽象方法。尽管如此,这样的设计也是合法的,它可能用于以下场景:

  1. 阻止实例化:你可能希望这个类不能被实例化,因为它代表的是一个概念或者是一个不完整的设计。
  2. 共享方法实现:通过在抽象类中实现某些方法,你可以为继承它的子类提供通用的功能。
  3. 预留扩展点:即使当前不包含抽象方法,未来也可以在不改变抽象类定义的情况下,向子类中添加抽象方法。

下面是一个继承上述抽象类的具体类示例:

public class Dog extends Animal {// Dog 类可以覆盖Animal中的方法,也可以添加新的方法或者属性@Overridepublic void eat() {System.out.println("This dog eats dog food.");}
}

在这个例子中,尽管Animal类没有抽象方法,但Dog类仍然可以继承自Animal,并可以选择性地覆盖非抽象方法。

总结一下,抽象类并非必须包含抽象方法,抽象类的存在更多的是为了表达一种抽象层次或者为子类提供共有实现。

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

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

相关文章

qtxlsx 学习

简介: QXlsx是一个可以读写Excel文件的库。不依赖office以及wps组件,可以在Qt5支持的任何平台上使用。 QXlsx和QAxObject 比较 QAxObject使用需要系统中安装了offie或wps,这种方法不推荐使用; 因为如果安装了wps,可…

Java基础知识总结(23)

String常量池 String类的对象什么情况会写进常量池? 在JDK当中用双括号括起来的字符串,例如:"abc","def"都是直接存储在“方法区”的“字符串常量池”当中的。 因为字符串在实际开发过程中使用太频繁。为了执行效率&am…

4.Python数据分析—数据分析入门知识图谱索引(知识体系下篇)

4.Python数据分析—数据分析入门知识图谱&索引-知识体系下篇 一个人简介二机器学习基础2.1 监督学习与无监督学习2.1.1 监督学习:2.1.2 无监督学习: 2.2 特征工程2.3 常用机器学习算法概述2.3.1 监督学习算法:2.3.2 无监督学习算法&#…

Phoenix伪分布安装

引言 Phoenix是构建在HBase上的一个SQL层,能让我们用标准的JDBC APIs而不是HBase客户端APIs来创建表,插入数据和对HBase数据进行查询。Phoenix完全使用Java编写,作为HBase内嵌的JDBC驱动。Phoenix查询引擎会将SQL查询转换为一个或多个HBase扫…

python 条件循环语句

python 条件循环语句 一、条件控制语句1. Python3 条件控制2. if 语句3. if 嵌套4. match...case5. 注意: 二、循环控制语句1. Python3 循环语句2. while 循环3. 无限循环4. while 循环使用 else 语句5. 简单语句组6. for 语句7. for...else8. break 和 continue 语…

【保姆级讲解如何构建Python虚拟环境】

🔥博主:程序员不想YY啊🔥 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家💫 🤗点赞🎈收藏⭐再看💫养成习惯 🌈希望本文对您有所裨益,如有…

FolkMQ v1.3.2 发布(消息中间件、事件总线)

功能简表 角色功能生产者(客户端)发布消息、定时消息(或叫延时)、顺序消息、可过期消息、事务消息。支持 Qos0、Qos1消费者(客户端)订阅、取消订阅。消费-ACK(自动、手动)服务端发布…

SAP 前台处理:CO主数据之成本要素组创建-<KAH1>

一、背景 本章是成本要素主数据创建的续章,后续会用到成本费用的分摊分配,费用的统计中。 也是成本控制篇的内容之一 成本控制分主数据篇和业务篇: 主数据篇主要内容: 成本要素、成本中心、订单、作业类型、统计指标、工作中…

微服务(基础篇-006-Docker)

Docker是一个开源的应用容器引擎,它让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间没有任何接口(类似 iPhone 的 app&…

【一】TensorFlow神经网络模型构建之神经元函数及优化方法

TensorFlow神经网络模型构建主要涉及如下几块:神经元函数、卷积函数、池化函数、分类函数、优化方法。下面分别对这几块进行展开说明: 神经元函数及优化方法 神经网络之所以能解决非线性问题(如语音、图像识别等),本…

google第三方登录接入

资料 ​​​​​​​How to do Google sign-in with Go | Ramblings of a cloud engineer

CentOS常用功能命令集合

1、删除指定目录下所有的空目录 find /xxx -type d -empty -exec rmdir {} 2、删除指定目录下近7天之前的日志文件 find /xxx -name "*.log" -type f -mtime 7 -exec rm -f {} \; 3、查询指定目录下所有的指定格式文件(比如PDF文件) find…

互联网公司裁员现象调查:探寻背后原因与应对策略

近年来,随着互联网行业的快速发展,裁员现象日益引起广泛关注。本文通过对互联网公司裁员现象的调查,分析背后原因,探讨应对策略,以期为互联网企业和求职者提供参考。 近年来,我国互联网行业历经高速发展&am…

Uibot6.0 (RPA财务机器人师资培训第4天 )批量开票机器人案例实战

类似于小北之前发布的一篇博客(不能说很像,只能说是一模一样) Uibot (RPA设计软件)财务会计Web应用自动化(批量开票机器人)-CSDN博客https://blog.csdn.net/Zhiyilang/article/details/136782171?spm1001.2014.3001.…

软考中级——软件设计师真题中的一些知识总结

2023年5月考过了软考中级——软件设计师,一次通过,两科成绩分别是入下。 做上午真题的时候积累了一些易错题,分享一下~~ 2014年5月 1、木马程序:是一种寻找计算机后门,伺机窃取被控计算机中的密码和重要文件等&#…

Apache Hive的基本使用语法

一、数据库操作 创建数据库 create database if not exists myhive;查看数据库 use myhive; desc database myhive;创建数据库并指定hdfs存储 create database myhive2 location /myhive2;删除空数据库(如果有表会报错) drop database myhive;…

[STM32] Keil 创建 HAL 库的工程模板

Keil 创建 HAL 库的工程模板 跟着100ASK_STM32F103_MINI用户手册V1.1.pdf的第7章步骤进行Keil工程的创建。 文章目录 1 创建相关文件夹2 创建“main.c/h”和“stm32f1xx_clk.c/h”3 复制CMSIS和HAL库4 创建新的Keil工程5 添加组文件夹和工程文件6 配置Keil设置 1 创建相关文件…

Vue常用命令

v-for 元素需要多次出现,将v-for添加到元素上 例: <tr v-for "(article,index) in articleList"><td>{{article.title}}</td><td>{{article.title}}</td><td>{{article.category}}</td><td>{{article.time}}</…

Python处理文件系统路径库之pathlib使用详解

概要 Python的pathlib库提供了一种面向对象的方法来处理文件系统路径。它使得路径操作更加直观和易于管理,相比于传统的os.path模块,pathlib提供了更为丰富和灵活的API。 pathlib库 pathlib模块在Python中用于处理文件系统路径。通过使用面向对象的方法,它允许路径表示为P…

蓝桥杯刷题--python-32

4964. 子矩阵 - AcWing题库 from collections import deque n, m, a, b map(int, input().split()) mod 998244353 nums [] for _ in range(n): nums.append(list(map(int, input().split()))) rmin [[0 for i in range(m)] for i in range(n)] rmax [[0 for i in ran…