首页 > 其他分享 >String相关内容

String相关内容

时间:2024-06-21 15:00:41浏览次数:10  
标签:1234test String 对象 System 内容 println 相关 out

一、String的常用方法

1、获取字符串长度

String s = "1234test";
System.out.println(s.length());
====执行结果====
8

2、判断两个字符串是否相同

String s = "1234test";
System.out.println(s.equals("123"));
====执行结果====
false

3、获取当前字符串的哈希值

String s = "1234test";
System.out.println(s.hashCode());
====执行结果====
-1859429420

4、去除字符串前后空格

System.out.println(" 1234 test ".trim());
====执行结果====
1234 test

5、获取指定索引的字符

String s = "1234test";
System.out.println(s.charAt(6));
====执行结果====
s

6、获取字符序列中该字符第一次出现的索引

String s = "1234test";
System.out.println(s.indexOf("2"));
====执行结果====
1

7、获取字符序列中该字符最后一次出现的索引

String s = "1234test";
System.out.println(s.lastIndexOf("2"));
====执行结果====
1

8、根据正则表达式切割

String s = "1234test";
String[] split = s.split("3");
System.out.println(Arrays.toString(split));
====执行结果====
[12, 4test]

9、获取指定索引后的字符串内容,或者从那个索引到那个索引之间内容

String substring = s.substring(2);
System.out.println(substring);
====执行结果====
34test

10、判断字符串是否匹配给定的正则表达式

String s = "1234test";
System.out.println(s.matches("^d"));
====执行结果====
false

11、判断当前字符串是否包含指定字符串

String s = "1234test";
System.out.println(s.contains("123"));
====执行结果====
true

12、获取字符串所有字符阿斯克码表数组

String s = "1234test";
byte[] bytes = s.getBytes(StandardCharsets.UTF_8);
System.out.println(Arrays.toString(bytes));
====执行结果====
[49, 50, 51, 52, 116, 101, 115, 116]

13、将字符串转换为字符数组

String s = "1234test";
char[] chars = s.toCharArray();
for (char aChar : chars) {
    System.out.print(aChar + " ");
}
====执行结果====
1 2 3 4 t e s t

14、将字符串转成大写字母

String s = "1234Test";
String toUpperCase = s.toUpperCase();
System.out.println(toUpperCase);
====执行结果====
1234TEST

15、将字符串转成小写字母

String s = "1234Test";
String toLowerCase = s.toLowerCase();
System.out.println(toLowerCase);
====执行结果====
1234test

16、查询当前对象是否存在于字符串常量池中

String s = "1234test";
/**
* 如果存在直接返回该常量池地址;如果不在,则将该字符串加入常量池,并返回该对象常量池地址
* 由于String重写了Object类的toString方法,所以执行结果为对象本身
*/
System.out.println(s.intern());
====执行结果====
1234test

二、常见面试题

1、String 属于基础的数据类型吗?

String不属于基础类型,String属于对象。
基础类型有 8 种:byte、short、int、long、float、double、boolean、char

2、Java中操作字符串都有哪些类?他们之间有什么区别?

操作字符串的类有:String、StringBuffer、StringBuilder。
	====String和StringBuffer、StringBuilder的区别====
String声明的是不可变的对象,每次操作都会生成新的String对象,然后将指针指向新的String对象。
StringBuffer、StringBuilder声明的是可变对象,可以在原有对象的基础上进行操作,因此在经常改变字符串内容的情况下选用StringBuffer或者StringBuilder。
	====StringBuffer和StringBuilder的区别====
StringBuffer是线程安全的,而StringBuilder是非线程安全的,但StringBuilder的性能却高于StringBuffer,所以在单线程环境下推荐使用StringBuilder,多线程环境下推荐使用StringBuffer。

3、如何将字符串反转?

//使用StringBuilder的reverse()方法
String s = "1234test";
StringBuilder stringBuilder = new StringBuilder(s);
String reverse = stringBuilder.reverse().toString();
System.out.println(reverse);
====执行结果====
tset4321
//使用stringBuffer的reverse()方法
String s = "1234test";
StringBuffer stringBuffer = new StringBuffer(s);
String reverse = stringBuffer.reverse().toString();
System.out.println(reverse);
====执行结果====
tset4321

4、"=="和"equals()方法"的区别是什么?

	====性质不同====
"=="是一个运算符,用于比较两个对象的值是否相等。对于基本数据类型,它比较的是值本身;对于引用数据类型,它比较的是两个引用是否指向同一个对象,即它们的内存地址是否相同。
"equals()方法"是Object类中定义的一个方法,用于比较两个对象的“内容”是否相等。这个方法可以被子类重写以定义自己的比较逻辑。例如,String类的equals方法比较的是字符串的内容是否相同。
	====比较的对象不同====
"=="比较的是值或内存地址。
"equals()方法"比较的是对象的内容。
	====运行速度不同====
"=="通常比调用equals()方法快,因为它只是简单地比较引用,不需要执行任何额外的逻辑或方法调用。
"equals()方法"可能需要执行额外的逻辑来判断对象的内容是否相等,这取决于该方法是否被子类重写,因此它的运行速度通常较慢。

5、判断两个字符串是否相等

使用String 对象名称 = "内容";方式创建String对象,该对象会直接进入常量池,常量池内容不会重复,多次创建相同内容只会指向同一常量池地址。

String sTest = "1234test";
String sTemp = "1234test";
System.out.println(sTemp == sTest);
System.out.println(sTemp.equals(sTest));
====执行结果====
true
true

使用String 对象名称 = new String("内容");方式创建String对象,将会创建两个对象,一个为堆内存对象,另一个为常量池对象,堆内存对象是常量池对象的一个拷贝副本,但是当前创建的对象指向的为堆内存。

String sTest = new String("1234test");
String sTemp = "1234test";
System.out.println(sTemp == sTest);
System.out.println(sTemp.equals(sTest));
====执行结果====
false
true

常量进行拼接会直接生成进入常量池的常量

String sTest = "1234" + "test";
String sTemp = "1234test";
System.out.println(sTemp == sTest);
System.out.println(sTemp.equals(sTest));
====执行结果====
true
true

因为String为不可变对象,对象进行拼接过程中会转换为StringBuilder或者StringBuffer对象进行拼接操作,然后通过toString()方法转换为String对象赋值给拼接后的对象。拼接后的对象指向的为堆内存中的对象。

String sTest = "1234";
String sTemp = "1234test";
String result = sTest + "test";
System.out.println(sTemp == result);
System.out.println(sTemp.equals(result));
====执行结果====
false
true

通过new创建字符串对象并立即调用.intern()方法进入常量池,因此创建的对象指向的是常量池对象。

String sTest = new String("1234test").intern();
String sTemp = "1234test";
System.out.println(sTemp == sTest);
System.out.println(sTemp.equals(sTest));
====执行结果====
true
true

标签:1234test,String,对象,System,内容,println,相关,out
From: https://blog.csdn.net/qq_33063699/article/details/139860832

相关文章

  • 软件测试相关知识点
    什么是软件测试?定义:软件质量保证的一种手段目的:发现错误以及避免这些错误的发生,使产品达到完美概念:是软件工程中的一个非常重要的环节,是开发项目整体的一部分。是有计划有组织的,是伴随软件工程的诞生而诞生的,软件测试不是万能的,不可能发现全部缺陷,软件测试是有局限性的。......
  • Windows的Gitlab Runner搭配的PowerShell脚本:自动下载Directory.Build.props相关文件
    简介GitlabRunner在Windows上运行之后,我们在.gitlab-ci.yml中编写script语句,思路和Linux是一样。但是考虑到Windows的特点,为了让程序员少接触一些知识点,以及给未来执行作业的时候预留更多的操作空间。简单说就是未来修改执行作业时候的逻辑,但是每个软件仓库根目录下的.gitlab-ci......
  • Windows的Gitlab Runner搭配的PowerShell脚本:自动下载Directory.Build.props相关文件
    简介GitlabRunner在Windows上运行之后,我们在.gitlab-ci.yml中编写script语句,思路和Linux是一样。但是考虑到Windows的特点,为了让程序员少接触一些知识点,以及给未来执行作业的时候预留更多的操作空间。简单说就是未来修改执行作业时候的逻辑,但是每个软件仓库根目录下的.gitlab-ci......
  • (2024)豆瓣电影详情页内容爬虫详解和源码
    (2024)豆瓣电影详情页内容爬虫详解和源码这是一个Python爬虫程序,用于抓取豆瓣电影详情页面如https://movie.douban.com/subject/1291560/的数据。它首先发送GET请求,使用PyQuery解析DOM,然后根据<br>标签分割HTML内容,提取电影信息如导演、演员、类型等,并将中文键转换为英文键......
  • React+TS前台项目实战(十四)-- 响应式头部导航+切换语言相关组件封装
    文章目录前言Header头部相关组件1.功能分析2.相关组件代码+详细注释3.使用方式4.Gif图效果展示总结前言在这篇博客中,我们将封装一个头部组件,根据不同设备类型来显示不同的导航菜单,会继续使用Reacthooks和styled-components库来构建这个组件,此外,也会实现切换......
  • 解决页面刷新后firefox浏览器中iframe内容不更新的问题
    最近遇到了一个问题:使用firefox浏览切换2层iframe下的某个页面后iframe内容未更新,Chrome和Edge浏览器并无这个问题。在这个项目中,最外层的iframe用于隐藏url,里层的iframe用于给不同参数的url提供一个统一地址以便于权限路由等控制。 由于项目比较复杂,用简单的代码很难去复现这个......
  • selenium框架学习之获取文本框内容和Xpath元素不唯一
    本周一直写创建简历的测试用例,由于元素和内容过多,只能把各个方法单独封装,然后在测试用例里面使用,以此优化用例。在封装的时候遇到的一些问题,和大家说下怎么解决~1. 获取文本框输入---新增了一个【输入微信号】的功能模块,需要同时测试点击【同手机】和输入文本的功能。于是......
  • svg标签内容导出为svg文件问题
     原本的代码://大概代码层级//html代码<divref="svgContainer"><div>//js代码//1、div中添加svgconstsvg=d3.select(svgContainer.value).append("svg).attr("id",svgElement").attr("xmlns","http://www......
  • 小说爬虫-02 爬取小说详细内容和章节列表 推送至RabbitMQ 消费ACK确认 Scrapy爬取 SQL
    代码仓库代码我已经上传到Github,大家需要的可以顺手点个Star!https://github.com/turbo-duck/biquge_fiction_spider背景介绍上一节已经拿到了每个小说的编码:fiction_code,并且写入了数据库表。接下来,我们写一个小工具,将数据表中的数据,都推送到RabbitMQ中。为了保......
  • 浅挖一下String类,解决String常见的面试题
    详解Java中的String类1.String是Java基本数据类型吗?许多同学在学习String类时,会误认为String类是基本数据类型,因为实实在在好像有点像C语言中的字符数组,字符,那不就是基本数据类型吗?可实际上不是的.在Java中String是个表示字符串的一个类,它是由字符组成的不可变......