黑马程序员——String类及其常见操作
2015-10-01 19:20
701 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、什么是String类
String的英文释义为字符串,顾名思义,是指数字、字母以及其他各类符号的随机组合序列。在java语言里,String类作为一个类类型变量而存在,封装着计算机处理字符组合的各种常见方法。
二、String类的特性
String的类对象位于内存结构的常量池中,一旦初始化就不能被改变。
如上述代码,s指向的字符串abc在执行完替换操作后,打印s结果仍为abc,证明字符串abc执行完替换操作后生成了一个新的字符串对象dbc,原对象保持不变。
三、String的常见操作方法
1 获取
int length():该方法可以获取字符串的长度,要与数组的length区分开来,数组的length是属性没有括号。
char charAt(int index):该方法可以根据位置获取该位置上的字符
int indexOf(int ch):该方法可以根据字符获取字符第一次出现的位置,int ch是指字符的ASCII码值
int indexOf(int ch,fromIndex):从指定位置开始寻找,获取字符第一次出现的位置
int indexOf(String str):该方法用于获取某一子串第一次出现的位置
int indexOf(String str,fromIndex):从指定位置开始寻找,获取某一子串第一次出现的位置
int lastIndexOf():该方法用于从最后一位开始寻找字符出现的位置,其重载方法与上同不再赘述
2 判断
boolean isEmpty() :用于判断字符串是否为空
boolean startsWith(String str) :用于判断字符串是否以某个词组开头
boolean endsWith(String str) :用于判断字符串是否以某个词组结尾
boolean equals(String str) :复写了object类的equals方法,不再比较对象的地址值,用于比较两个字符串的内容是否相同
boolean equalsIgnoreCase(String str) :与上同,但比较内容的时候忽略大小写
3 转换
3.1字符数组与字符串的互相转换
String(char[] arr):将字符数组转换为字符串,通过String的构造函数完成,示例如下。
static String copyValueOf(char[] arr):复制某一字符数组中所有元素的值并生成字符串
static String copyValueOf(char[] arr,int offset,int count):复制某一字符数组中指定元素的值并生成字符串
static String ValueOf(Char[] arr):接收某一字符数组中所有元素的值并生成字符串
char[] toCharArray():将字符串转换为字符数组
3.2字节数组与字符串的互相转换
String(byte[] arr):
String(byte[] arr,int offset,int count):
byte[] getBytes():
............
与字符数组的转换相似,不再赘述。特殊之处:字节数组与字符串互相转换时,可以指定编码表
3.3将基本数据类型转换为字符串
String ValueOf(int)
String ValueOf(boolean)
String ValueOf(double)
...........
4 替换
String replace(char oldChar,char newChar):将原字符oldChar替换为新字符newChar,需要注意,替换后内存中会生成一个新的字符串
5 切割
String[] split(" "):用字符或字符串对原字符串进行切割,生成一个字符串数组。特别注意,返回的是字符串数组而不是字符串!
String[] split(regex):按照正则表达式指定的规则对原字符串进行切割,生成一个字符串数组。特别注意,返回的是字符串数组而不是字符串!
6 子串
String substring(int begin):从指定位置begin开始,到原字符串结尾位置,截取生成一个新的字符串
String substring(int begin,int end):从指定位置begin开始,到指定位置end为止,截取生成一个新的字符串,需要注意:包含头不包含尾!
7 其他常用
7.1大小写转换
String toUpperCase();
String toLowerCase();
7.2 去除空格
String trim();
7.3 与另一个字符串进行自然顺序的比较
int compareTo(String str):如果返回值是0表示自然顺序相同,如果是负数表示this的自然顺序在前面,如果是正数表示this的自然顺序在后面
四、三个常见的字符串编程场景
1.去除字符串两端的空格
2.统计一个字符串在另一个字符串中出现的次数
3.判断两个字符串的最大相同部分
4.反转字符串
一、什么是String类
String的英文释义为字符串,顾名思义,是指数字、字母以及其他各类符号的随机组合序列。在java语言里,String类作为一个类类型变量而存在,封装着计算机处理字符组合的各种常见方法。
二、String类的特性
String的类对象位于内存结构的常量池中,一旦初始化就不能被改变。
public class demo { public static void main(String[] args){ //创建字符串对象abc,并将其赋给变量s String s ="abc"; //将字符串abc的a替换为d,并赋给变量s1 String s1=s.replace('a', 'd'); System.out.println(s); //打印s结果为abc System.out.println(s1);//打印s1结果为dbc } }
如上述代码,s指向的字符串abc在执行完替换操作后,打印s结果仍为abc,证明字符串abc执行完替换操作后生成了一个新的字符串对象dbc,原对象保持不变。
三、String的常见操作方法
1 获取
int length():该方法可以获取字符串的长度,要与数组的length区分开来,数组的length是属性没有括号。
char charAt(int index):该方法可以根据位置获取该位置上的字符
int indexOf(int ch):该方法可以根据字符获取字符第一次出现的位置,int ch是指字符的ASCII码值
int indexOf(int ch,fromIndex):从指定位置开始寻找,获取字符第一次出现的位置
int indexOf(String str):该方法用于获取某一子串第一次出现的位置
int indexOf(String str,fromIndex):从指定位置开始寻找,获取某一子串第一次出现的位置
int lastIndexOf():该方法用于从最后一位开始寻找字符出现的位置,其重载方法与上同不再赘述
2 判断
boolean isEmpty() :用于判断字符串是否为空
boolean startsWith(String str) :用于判断字符串是否以某个词组开头
boolean endsWith(String str) :用于判断字符串是否以某个词组结尾
boolean equals(String str) :复写了object类的equals方法,不再比较对象的地址值,用于比较两个字符串的内容是否相同
boolean equalsIgnoreCase(String str) :与上同,但比较内容的时候忽略大小写
3 转换
3.1字符数组与字符串的互相转换
String(char[] arr):将字符数组转换为字符串,通过String的构造函数完成,示例如下。
class Demo{ public static void main(String[] args){ char[] arr ={'a','b','c','d','e'}; //构造字符串对象的时候直接接收了arr数组,并将其元素转换为字符串 String str =new String(arr); System.out.println(str);//打印结果为abcde //接收arr数组,并从第二个角标位开始,将3个长度的元素变为字符串 String str2 =new String(arr,2,3); System.out.println(str2); //打印结果为cde } }String(char[] arr,int offset,int count):将字符数组的某一部分转换为字符串,通过String的有参构造函数完成,示例如上。
static String copyValueOf(char[] arr):复制某一字符数组中所有元素的值并生成字符串
static String copyValueOf(char[] arr,int offset,int count):复制某一字符数组中指定元素的值并生成字符串
static String ValueOf(Char[] arr):接收某一字符数组中所有元素的值并生成字符串
char[] toCharArray():将字符串转换为字符数组
3.2字节数组与字符串的互相转换
String(byte[] arr):
String(byte[] arr,int offset,int count):
byte[] getBytes():
............
与字符数组的转换相似,不再赘述。特殊之处:字节数组与字符串互相转换时,可以指定编码表
3.3将基本数据类型转换为字符串
String ValueOf(int)
String ValueOf(boolean)
String ValueOf(double)
...........
4 替换
String replace(char oldChar,char newChar):将原字符oldChar替换为新字符newChar,需要注意,替换后内存中会生成一个新的字符串
5 切割
String[] split(" "):用字符或字符串对原字符串进行切割,生成一个字符串数组。特别注意,返回的是字符串数组而不是字符串!
String[] split(regex):按照正则表达式指定的规则对原字符串进行切割,生成一个字符串数组。特别注意,返回的是字符串数组而不是字符串!
6 子串
String substring(int begin):从指定位置begin开始,到原字符串结尾位置,截取生成一个新的字符串
String substring(int begin,int end):从指定位置begin开始,到指定位置end为止,截取生成一个新的字符串,需要注意:包含头不包含尾!
7 其他常用
7.1大小写转换
String toUpperCase();
String toLowerCase();
7.2 去除空格
String trim();
7.3 与另一个字符串进行自然顺序的比较
int compareTo(String str):如果返回值是0表示自然顺序相同,如果是负数表示this的自然顺序在前面,如果是正数表示this的自然顺序在后面
四、三个常见的字符串编程场景
1.去除字符串两端的空格
class demo { public static void main(String[] args){ String s ="---abcdef-----"; System.out.println(s); String s1 =myTrim(s); System.out.println(s1); } //封装一个用于去除字符串两端空格的方法myTrim() public static String myTrim(String str){ int begin =0; int end =str.length()-1; ch 4000 ar ch =str.charAt(begin); while(begin<=end&&ch=='-')//当begin所代表的位置不为'-'时循环结束 begin++; while(begin<=end&&end=='-')//当end所代表的位置不为'-'时循环结束 end--; return str.substring(begin,end+1);//利用String的substring方法得到需求字符串 } }
2.统计一个字符串在另一个字符串中出现的次数
/* *需求:统计"kk"在"abckkdefgkkhijkklmnkkop"出现的次数 *思路: *1.定义一个计数器,每找到一个"kk"就记录一次 *2.利用String的indexOf(String str,int fromIndex)寻找"kk" *3.发现寻找"kk"的过程是一个循环过程 *4.敲写代码 */ package com.itheima; public class Demo { public static void main(String[] args){ String str = "abckkdefgkkhijkklmnkkop";//定义一个大字符串 String str2= "kk";//定义一个小字符串 int count = getSubCount(str,str2);//调用getSubCount方法 System.out.println("kk出现的次数为:"+count); } //定义一个getSubCount方法,用于返回小字符串在大字符串中出现的次数 public static int getSubCount(String str,String key){ int count =0; int index =0; while(str.indexOf(key, index)!=-1){ //循环判断大字符串中是否还有小字符串 index =str.indexOf(key,index)+key.length();//改变搜索的起始位置 count++; } return count; } }
3.判断两个字符串的最大相同部分
/* *需求:判断两个字符串"abcdefhihellojavajava"和"dcbahellop"的最大相同部分 *思路: *1.对短串进行逐一减位,判断是否包含在长串中 *2.短串每减一位,都有好多种子串情况,想到嵌套for循环 *3.开始敲代码 */ package com.itheima; public class Demo { public static void main(String[] args){ String str = "abcdefhihellojavajava"; String str2 = "dcbahellop"; System.out.println(getMaxSub(str,str2)); } public static String getMaxSub(String s1,String s2){ //对传进来的两个字符串进行长短串判别 String shor =(s1.length()<=s2.length())?s1:s2; String lon =(s1==shor)?s2:s1; //双重for循环遍历出最大相同子串 for(int x=0;x<shor.length();x++){ for(int y=0,z=shor.length()-x;z!=shor.length()+1;y++,z++){ if(lon.contains(shor.substring(y,z))); return shor.substring(y,z); } } //遍历完如果没有返回值则返回没有交集 return "没有交集"; } }
4.反转字符串
/* *需求:反转字符串"abcdefghi" *思路: *1.将字符串转换为char[] *2.对数组进行反转 *3.将反转后的数组变为字符串 */ package com.itheima; public class Demo { public static void main(String[] args){ String str = "abcdefghi"; char[] arr = str.toCharArray(); String str2=new String(reverse(arr)); System.out.println(str2); } //定义一个数组反转的方法reverse public static char[] reverse(char[] arr){ for(int x=0,y=arr.length-1;x<y;x++,y--){ //按照0角标递增1同时尾角标递减1的规则遍历数组 swap(arr[x],arr[y]); //让两个角标所代表的字符交换位置 } return arr; } //定义一个字符交换位置的方法swap public static void swap(char x,char y){ char temp = x; x = y; y = temp; } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统