Java基础学习——String类及其方法

news/2024/5/18 14:17:12 标签: java, 面试

String类概述
该类被final修饰,无子类,不可被复写。创建的对象一旦初始化,其内容不可被改变。
String类复写了Object类中的equals()定义了自己的独特内容,该方法用于判断字符串相同。
例:

String s1 = "abc";
String s2 = new String("abc");

System.out.println(s1==s2);
System.out.println(s1.equals(s2));

结果显示
false
true
面试中常考:这里的s1,s2有何区别?
s1在内存中一个对象,s2有两个对象。因为内存中有一个常量池存放字符串。字符串被存放进去以后,以后创建新的字符串时会优先在常量池中寻找并组合而成,而s2是创建一个全新的字符串。如:

String s1 = "abc";
String s3 = "abc";
System.out.println(s1==s2);

结果将是true,即s1和s3指向了同一个对象。

常见方法

1.获取

1.1 字符串长度。

int length():获取长度。

1.2 根据位置获取位置上的某个字符。

char charAt(int index) :返回指定索引处字符。

1.3 根据字符获取该字符在字符串中的位置。如果没有找到返回-1.

int indexOf(int ch):找到该字符第一次出现的位置
int indexOf(int ch,int fromIndex):从fromIndex处开始索引。
int indexOf(String str)
int indexOf(String str,int fromIndex):从fromIndex检索字符串str的位置。

相反的,如果需要反向索引,有类似方法

int lastIndexOf(*) 从右往左索引,然后**输出其在字符串数组中的位置**

2.判断

2.1 字符串中是否包含某一个子串。

 boolean contains(CharSequence str);

★特殊之处:int indexOf(str)也可以检索str是否存在。

2.2 字符串中是否有内容。

boolean isEmpty():原理就是判断length是否为0

2.3 字符串是否是以指定内容开头。

    boolean startWith(String str);

2.4 字符串是否是以指定内容结尾

boolean startWith(String str);

应用场景:通过判断文件名检索所需要的文件

2.5 判断字符串内容是否相同

boolean equals(str)

2.6 判断内容是否相同并忽略大小写

boolean equalsIgnoreCase(str)

3.转换

3.1 将字符数组转成字符串
构造函数

String(char[]) 
String(char[],offset,count)将字符数组一部分转成字符串

例:

char[] arr = {'a','b','c','d','e','f'}; 
String s = new String(arr,1,3);

结果将是 bcd.因为数组下角标从0开始,故这里起始位是b,取3个字符,即为bcd.

静态方法:需要跟在String后使用

static String copyValueOf(char[]);
static String copyValueOf(char[],offset,count);

3.2 将字符串转成字符数组

char[] toCharArray();

3.3 将字节数组转成字符串

String(byte[]); 
String(byte[],offset,count);

3.4 将字符串转成字节数组

byte[] getBytes();

3.5 将基本数据类型转成字符串

static Sting valueOf();

特殊:字符串和字节数组在转换过程中是可以指定编码表的

4.替换

String replace(old char/str,new char/str); 

注意:由于字符串一旦被创建不能被改变,所以这里的替换后将会返回一个新字符串副本,而原来的字符串不会有变换

5.切割

String[] split(regex)  以regex为分割符号进行分割

6.子串

String substring(begin);从指定出开始到结尾 
String substring(begin,end);从begin处开始到end处结束,之间的子串。**包括begin但不包括end.**

String s = "abcdef";
s1 = s.substring(2);
s2 = s.substring(2,4);

结果s1=cdef,s2=cd。

7.转换

7.1 将字符串转成大写或者小写

String toUpperCase();
String toLowerCase();

7.2 将字符串两端多个空格去除

String trim();

7.3 对两个字符串进行自然顺序的比较

int compareTo(str);**比较两个字符串大小,并返回第一个不同的字符之间的ASCII码值差值。**

http://www.niftyadmin.cn/n/1127270.html

相关文章

poj1976A Mini Locomotive(dp)(***)

http://poj.org/problem?id1976 (1)有n节火车,用3个火车头去拉动,每个火车头拉动的车厢是连续的,且上限为m,求最大的载客量。 (2)核心的部分: f[i][j]max(f[i-1][j], f[…

层显示

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"><head> <title>无标题页</title&g…

bandari

如果试过在宁静的夜里沉思&#xff0c;倾听这个世界在转了一天之后究竟想说些什么&#xff0c;那么你该会同意&#xff0c;其实真正的寂静&#xff0c;并非是全然无声的。夜晚的寂静&#xff0c;是由一种如泡沫般细腻、如薄纱般绵密的声响所编织成的。它随着空气存在&#xff0…

Android第一个个人APP(帐号助手)

第一个app上线了&#xff0c;关于帐号保存的一个app。本地保存&#xff0c;无须联网。 下载地址为&#xff1a;http://android.myapp.com/myapp/detail.htm?apkNamecom.weeky.accounthelper app截图例如以下&#xff1a; 请大家多多支持&#xff0c;做的不好&#xff0c;敬请谅…

在OS X安装Docker

2019独角兽企业重金招聘Python工程师标准>>> 在学习Docker的过程中仔细的阅读了官方的入门教程, 为加深学习的印象, 翻译此教程, 也同时方便他人学习使用. 目录 开始使用Docker在OS X安装Docker理解镜像(images)和容器(containers)搜索&运行whalesay镜像构建你自…

HTML的前世今生

HTML的基础知识扫盲 作者&#xff1a;尹正杰 版权声明&#xff1a;原创作品&#xff0c;谢绝转载&#xff01;否则将追究法律责任。 三年前&#xff0c;我就听周围的一些工程师说&#xff0c;python就是一个脚本语言&#xff0c;没啥好学的&#xff0c;学JAVA吧&#xff0c;pyt…

testNG入门详解

TestNG 的注释: DataProvider ExpectedExceptions Factory Test Parameters <suite name"ParametersTest"><test name"Regression1"><classes><class name"com.example.ParameterSample" /><class name"com.exa…

three.js(五) 地形纹理混合

地形生成通常使用高度图&#xff0c; 而高度图的生成可以使用绘图工具&#xff0c;或者通过分形算法生成&#xff0c;例如square-diamond, fbm方法。这里采用简单求平均值随机波动的方法。对于一个2^n1 * 2^n1 的网格&#xff0c; 中心点的高度是四角点的平均值加随机偏移&a…