黑马程序员--Java基础学习第十三天_weixin_34026276的博客-程序员秘密

技术标签: java  移动开发  

---------------------- android培训、java培训、期待与您交流! ----------------------

一、String类概述

String类被final修饰,不能被继承。字符串一旦被初始化就不能被改变。

字符串在内存中的存储请参考:http://www.cnblogs.com/heima/archive/2012/03/25/2417253.html

二、String类常用方法

char charAt(int index)  返回指定索引处的 char 值。

int compareTo(String anotherString) 按字典顺序比较两个字符串。

String concat(String str) 将指定字符串连接到此字符串的结尾。

boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结束

boolean equals(Object anObject) 将此字符串与指定的对象比较。

boolean equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比较,不考虑大小写。

void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将字符从此字符串复制到目标字符数组。

int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。

int indexOf(int ch, int fromIndex) 返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。

int indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引。

int indexOf(String str, int fromIndex) 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。

boolean isEmpty() 当且仅当 length() 为 0 时返回 true。

int lastIndexOf(int ch) 返回指定字符在此字符串中最后一次出现处的索引。

int lastIndexOf(int ch, int fromIndex) 返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。

int lastIndexOf(String str) 返回指定子字符串在此字符串中最右边出现处的索引。

int lastIndexOf(String str, int fromIndex) 返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。

int length() 返回此字符串的长度。

String replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。

String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串。

boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开始。

String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。

String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。

char[] toCharArray() 将此字符串转换为一个新的字符数组。

String toLowerCase()  使用默认语言环境的规则将此 String 中的所有字符都转换为小写

String toString() 返回此对象本身(它已经是一个字符串!)。

String toUpperCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为大写。

String trim() 返回字符串的副本,忽略前导空白和尾部空白。

三、String类练习

1、练习一、去除字符串两端的空格

    public String trim(String s)
{
int start=0;
int end=s.length()-1;
while(start<=end&&s.charAt(start)==' ')
start++;
while(start<=end&&s.charAt(end)==' ')
end--;
return s.substring(start,end+1);
}

2、练习二、字符串翻转

思路:将字符串转换成数组,翻转数组后将数组再转换成字符串

    public String reverse(String s,int start,int end)
{
char[] arr=s.toCharArray();
reverseCharArray(arr,start,end);
return new String(arr);
}

public void reverseCharArray(char[] arr,int start,int end)
{
for(;start<end;start++,end--)
swap(arr,start,end);
}

public void swap(char[] arr,int m,int n)
{
char temp=arr[m];
arr[m]=arr[n];
arr[n]=temp;
}

3、练习三、获取一个字符串在另一个字符串中出现的次数(不建议使用切割)

    public int getSubstringCount(String s1,String s2)
{
int index=0;
int count=0;
while((index=s1.indexOf(s2,index))!=-1)
{
count++;
index++;
}
return count;
}

4、练习四、获取两个字符串的最大相同子串

    public String getMaxSubstring(String s1,String s2)
{
String max=s1.length()>s2.length()?s1:s2;
String min=(max==s1)?s2:s1;
for(int i=0;i<min.length();i++)
{
for(int j=0,k=min.length()-i-1;k<min.length();j++,k++)
{
//System.out.println(min.substring(j,k+1));
String s=min.substring(j,k+1);
if(max.contains(s))
return s;
}
}
return "";
}

 

四、StringBuffer类概述

StringBuffer类被final修饰,不能被继承。StringBuffer和数组都是容器。

StringBuffer作为容器类的特点:

1、长度是可变的。

2、可以操作多个数据类型。

3、最终使用toString()转换成字符串。

五、StringBuffer类常用方法

StringBuffer append(参数列表) 将参数的字符串表示形式追加到序列。

char charAt(int index) 返回此序列中指定索引处的 char 值。

StringBuffer delete(int start, int end) 移除此序列的子字符串中的字符。

StringBuffer deleteCharAt(int index) 移除此序列指定位置的 char。

void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将字符从此序列复制到目标字符数组 dst。

int indexOf(String str) 返回第一次出现的指定子字符串在该字符串中的索引。

int indexOf(String str, int fromIndex) 从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。

StringBuffer insert(参数列表) 将参数的字符串表示形式插入此序列中。

int lastIndexOf(String str) 返回最右边出现的指定子字符串在此字符串中的索引。

int lastIndexOf(String str, int fromIndex) 返回最后一次出现的指定子字符串在此字符串中的索引。

int length() 返回长度(字符数)。

StringBuffer reverse() 将此字符序列用其反转形式取代。

void setCharAt(int index, char ch) 将给定索引处的字符设置为 ch。

void setLength(int newLength) 设置字符序列的长度。

String substring(int start) 返回一个新的 String,它包含此字符序列当前所包含的字符子序列。

String substring(int start, int end) 返回一个新的 String,它包含此序列当前所包含的字符子序列。

String toString() 返回此序列中数据的字符串表示形式。

六、StringBuilder类概述

一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。

七、String类、StringBuffer类和StringBuilder类三者之间的区别

StringBuffer类和StringBuilder类都是可变的字符序列,StringBuffer类是线程同步的,线程安全的;StringBuilder类是线程不同步的,线程不安全的。

---------------------- android培训、java培训、期待与您交流! ----------------------

转载于:https://www.cnblogs.com/heima/archive/2012/03/26/2417301.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34026276/article/details/94467793

智能推荐

N维数组_4_数组运算_两个n维数组取或_GJ_WL的博客-程序员秘密

import numpy as np1.数组与数的运算arr = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])arr + 1arr / 2array([[0.5, 1. , 1.5, 1. , 0.5, 2. ], [2.5, 3. , 0.5, 1. , 1.5, 0.5]])# 可以对比python列表的运算,看出区别a = [1, 2, 3, 4, 5]a * 3[1, 2, 3, 4, 5, 1, 2,

SpringBoot中CORS跨域(@CrossOrigin)session失效问题[email protected] session_xiaoyest的博客-程序员秘密

1.对应的js的ajax中需要添加xhrFields:{withCredentials:true}(每个ajax中都需要加此属性,以保证session一致)2.注解中加入允许访问的ip,设置allowCredentials为[email protected](origins = "${crossdomain.access.background.address}",allowCredenti...

android gone动画_Android 控件的显示隐藏上下左右移动动画_weixin_39947812的博客-程序员秘密

一、利用Android提供的左右移动工具类:AnimationUtilsLinearLayout ll_first = (LinearLayout) findViewById(R.id.ll_first);LinearLayout ll_second = (LinearLayout) findViewById(R.id.ll_second);ll_first.setVisibility(View....

火锅店宣传PPT-朴尔PPT_火锅店ppt模板_puerppt的博客-程序员秘密

火锅店宣传PPT模板。一套,其它,幻灯片模板,内含蓝色,红色多种配色,其他风格设计,动态播放效果,精美实用。希望下面这份精美的PPT模板能帮助到你基本信息用途:,其它,。模板格式:pptx格式(可随意下载编辑)页数:27页页大小:10MB比例:16:9编辑软件:wps/powerpoint模板标签:蓝色,红色,其他,,其它,推荐指数:★★★★★免费下载地址:火锅店宣传PPT模板-朴尔PPThttps://www.puerppt.com/ppt/p-P45372.html官

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io .nativeio.NativeIO$W_Lee_2019的博客-程序员秘密

在eclipse 调试mapreduce程序会报以下错误:Exception in thread &quot;main&quot; java.lang.UnsatisfiedLinkError: org.apache.hadoop.io .nativeio.NativeIO$W解决方案:产生上述错误的原因是由于你本地的hadoop版本与lib文件中你替换的编译hadoop.dll版本不对应导致的我的本地H...

解惑:为什么sinx的余项是R2m,而cosx的是R2m+1_sinx拉格朗日余项_James_Xue_2023的博客-程序员秘密

#解惑:为什么sinx的余项是R2m,而cosx的是R2m+1——来自高等数学(同济版教材)泰勒中值定理的疑惑在学习泰勒中值定理这一章时,看书比较细致的同学会发现:为什么sinx函数用带拉格朗日余项的麦克劳林公式展开时,它的余项是R2m(x)!而cosx函数的用同样的方法,余项却是是R2m+1(x)!首先,不得不说,会在此处产生困惑的同学,说明你学习很认真,观察力也很强!因为,咱们按照泰...

随便推点

NLP | 自然语言处理 - 语法解析(Parsing, and Context-Free Grammars)_Victor-H的博客-程序员秘密

original link:http://blog.csdn.net/lanxu_yy/article/details/37700841什么是语法解析?在自然语言学习过程中,每个人一定都学过语法,例如句子可以用主语、谓语、宾语来表示。在自然语言的处理过程中,有许多应用场景都需要考虑句子的语法,因此研究语法解析变得非常重要。语法解析有两个主要的问题,其一是句子语法在计算机中的

VC多线程编程_FLY_THINK2012的博客-程序员秘密

VC多线程编程(转)VC中多线程使用比较广泛而且实用,在网上看到的教程.感觉写的挺好.一、问题的提出编写一个耗时的单线程程序:  新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:...

如何在Chrome DevTools 中对Node程序进行调试_jackletter的博客-程序员秘密

转自:https://www.jianshu.com/p/198a9cf83aae相信有很多人和我一样,习惯了使用chrome调试js程序,然而node刚开始提供的调试方式只用Debugger,只能通过node --debug xxx.js启动命令行调试工具,及其的不方便。当然也有一些插件在此基础上,使用websocket进行通信,使其可以在chrome浏览器中调试。体验和直接在chrome上...

互联网之父与李开复记者二次见面会问答实录_iteye_18911的博客-程序员秘密

互联网之父与李开复记者二次见面会问答实录 2007年3月2日,由Google(谷歌)公司发起的,由中国互联网协会和Google合办的互联网技术大会在北京国际会议中心召开。该会议专注于互联网技术与产业发展,目的在于展现当今的互联网技术和发展,同时,探讨未来互联网发展的趋势、动态和对社会的影响等问题,让更多人了解和认识互联网技术。下午4点,谷歌公司副总裁兼首席互联网专家、互联网之父Vinton ...

windows里面创建的文件,传到linux系统里面如何转换_.在windows创建1.txt,内容为this is windows,将1.txt传到linux上_Dawn-liu的博客-程序员秘密

应用场景,往往有一些文件使用windows系统都已经编辑好了,再次重新在linux系统上面编辑的话需要花费大量时间,只好先将文件传到linux上面,再做转换。以下是一个例子;[[email protected] wang5]# file EMP_20170117_103655.txt  //windows上面的文件EMP_20170117_103655.txt: UTF-8 Unicode (with BO...

一文教你如何通过 Docker 部署 Redis 集群_java路人甲乙丙丁的博客-程序员秘密

系统环境: Redis 版本:6.0.8 Docker 版本:19.03.12 系统版本:CoreOS 7.8 内核版本:5.8.5-1.el7.elrepo.x86_64 一、什么是 Redis 集群模式在 Redis 3.0 版本后正式推出 Redis 集群模式,该模式是 Redis 的分布式的解决方案,是一个提供在多个 Redis 节点间共享数据的程序集,且 Redis 集群是去中心化的,它的每个 Master 节点都可以进行读写数据,每个节点都拥有平等

推荐文章

热门文章

相关标签