黑马程序员--Java基础学习第十三天-程序员宅基地

技术标签: 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

智能推荐

Verilog数字系统设计教程[第4版]夏宇闻——第三部分练习三_夏宇闻verilog第三版和第四版一样吗-程序员宅基地

文章浏览阅读234次。Verilog数字系统设计教程[第4版]夏宇闻——第三部分练习三_夏宇闻verilog第三版和第四版一样吗

VS2017 boost环境配置与报错解决_boost msvc版本不一致报错-程序员宅基地

文章浏览阅读303次,点赞5次,收藏5次。libboost_random 缺少的是 random 这个文件,如果你报错缺少的是libboost_data_time或者别的,只要把命令中random改成相应的关键字即可。vc141 对应的是你的vs对应的msvc版本,比如我装的是vs2017,对应的msvc版本就是msvc-14.1,你报错的版本不一样就把命令中的14.1替换成你报错的版本。address-model=64 这里对应的是64位开发环境,你报错的是32就把命令中64改成32。如果出现了类似的报错(最后的1_78为boost的版本)_boost msvc版本不一致报错

linux内核网络初始化,Linux内核网络数据包发送(一)-程序员宅基地

文章浏览阅读137次。1. 前言本文首先从宏观上概述了数据包发送的流程,接着分析了协议层注册进内核以及被socket的过程,最后介绍了通过 socket 发送网络数据的过程。2. 数据包发送宏观视角从宏观上看,一个数据包从用户程序到达硬件网卡的整个过程如下:使用系统调用(如 sendto,sendmsg 等)写数据数据穿过socket 子系统,进入socket 协议族(protocol family)系统协议族处理:数..._linux网络相关的第一个初始化函数

阿里云DataV功能及案例_datav案例-程序员宅基地

文章浏览阅读1.4k次。一、功能特性1、多种场景模板,解决您的设计难题数据可视化的设计难点不在于图表类型的多,而在于如何能在简单的一页之内让人读懂数据之间的层次与关联,这就关系到色彩、布局、图表的综合运用。DataV 提供指挥中心、地理分析、实时监控、汇报展示等多种场景模版,即便没有设计师,您的可视化作品也有显现出高设计水准。2、多种图表组件,支撑多种数据类型的分析展示除针对业务展示优化过的常规图表外,还能够绘制包括海量数据的地理轨迹、地理飞线、热力分布、地域区块、3D 地图、3D 地球,地理数据的多层叠加。此_datav案例

Android - 画中画_android12画中画恢复后无法startactivity-程序员宅基地

文章浏览阅读745次。简介Android8.0 开始可以让Activity进入画中画模式,即Activity变小并且悬浮于其他界面之上,就算是退到桌面也依然存在。简单使用在AndroidManifest中声明需要进入画中画的Activity支持画中画<activity android:name=".PlayerActivity" //声明支持画中画 android:resizeableActivity="true" android:supportsPictureInPicture="true" //避免_android12画中画恢复后无法startactivity

Python 入门之控制结构 - 循环结构(一)_partcount = int(input()) electric = int(input()) c-程序员宅基地

文章浏览阅读1.7k次。@R星校长第1关:While 循环与 break 语句程序的第三大结构是循环结构。在此结构中,通过一个判断语句来循环执行一个代码块,直到判断语句为假时跳出循环。循环语句分为while循环、for循环、循环嵌套和迭代器。循环语句中有一个语句break,通过这个语句可以跳出整个循环。while循环和break的结构如下图1所示:图 1while语句while语句的基本形式为:while 判断条件1: 循环语句当判断条件1为true时,执行循环语句,直到判断条件1为假。例如:co._partcount = int(input()) electric = int(input()) count = 0 #请在此添加代码,

随便推点

STM32F103C8T6控制电机驱动模块298N驱动电机调速以及正反转(附代码资源包)_stm32f103c8t6电机驱动-程序员宅基地

文章浏览阅读2.1w次,点赞37次,收藏325次。STM32F103C8T6控制电机驱动模块298N驱动电机调速以及正反转 作为本人的第一篇的博客,自身经验以及能力不足,用的方法也是基本方法,单纯的分享一下自己的经历,欢迎大家批评指正。一、 硬件选型1、 stm32f103c8t62、 L298N3、 电机4、 其他二、 硬件连接(连接以接一路电机为例)1、298N接8根线,接线具体介绍如下:注:(1)、298N的GND引脚同时引出两根线,一根接stm32的GDN,一根接电源的GND(共地)(2)、OUTA和OUTB与电机_stm32f103c8t6电机驱动

ARM嵌入式学习心得7.8_arm嵌入式综合实验学习心得-程序员宅基地

文章浏览阅读726次。感受:来到软帝的第一天,感觉熟悉又陌生,老师是之前带我们课设的邓君老师,所以对他的教学方式有了解,会讲解很多细节,陌生在对于环境和同学的陌生。第一天虽然讲解的知识点不是很多,但是还是感觉学到了很多。首先是邓君老师告诉我们的学习时的一些好习惯,比如要1,要做好笔记;2,每天写一篇博客,做好总结归纳;3,要多敲代码,这样才能提升自己的打字速度;4,做好每日一练以增强自己的交流能力,等等,,然后_arm嵌入式综合实验学习心得

异步获取数据,v-model绑定的数据不能实时刷新(每次得到的是上次的结果)----解决办法_通过异步回显后v-model 失效-程序员宅基地

文章浏览阅读1.5k次。1.场景,在表单中通过一个input的改变,调后端接口,控制其他input的值的变化错误方式:直接对后端返回的数据赋值正确方式:使用$set实现_通过异步回显后v-model 失效

xcode_8正式版安装遇到的小问题-程序员宅基地

文章浏览阅读74次。从官网上下载好了xcode_8正式版之后,我们会发现竟然不是以往的zip后缀,而是xip后缀 双击之后不能正常解压在网上查询了一下资料发现一般是以下两个问题:1,mac的储存空间不够,别看该xip文件只有4.41G的大小,解压之后会变成12.1G 听网上说至少得腾出20G才能正常加压安装,我是没亲测了,我直接清理腾出了40G出来,保证够用.2,清理完之后,我发现还是不能解压成功,..._xcode_8.xip解压失败

智哪儿出品 | 智能行业科普系列之智能照明百问百答【第二期】-程序员宅基地

文章浏览阅读123次。Q11.智能照明产品有哪些大类?一般照明 也称为“背景照明”或者“环境照明”,是一个照明规划的基础,指的是充满房间的非定向照明,为空间房间中所有活动创造一个普遍充足的照明基础。重点照明 也称“装饰照明”是指定向照射空间的某一特殊物体或区域,以引起注意的照明方式。它通常被用于强调空间的特定部件或陈设,例如建筑要素、构架、衣厨、收藏品、装饰品及艺术品等。焦点照明 也称“任务照明”,它是一种照明的定向照明,提供适合于完成于特殊活动,如阅读、写作、做游戏或工艺劳动的照明。它创造一个吸引我们注意了力的亮点,告.

Android中inflate_android之inflate-程序员宅基地

文章浏览阅读509次。Inflate可用于将一个xml中定义的布局控件找出来.  因为在一个Activity里如果直接用findViewById()的话,对应的是setConentView()的那个layout里的组件。因此如果当前Activity里需要如果用到别的layout(xml文件),比如对话框上的layout,这时还要设置对话框上的layout里的组件(像图片ImageView,文字TextView)上的_android之inflate