String总结(一)String

 

总结是跟着传智播客的视频边看变写的,所以会发现大部分和视频一样,请不要介意

String

一、字符串特点
1.所有带""的都是一个字符串对象
2.字符串一旦初始化就不能改变
3.s1="abc"//在内存中存在一个对象
min=new Sting("abc");//在内存中有俩对象
4.建立的对象如果在常量池中已经存在的字符串对象,那么将不再建立新对象
e. s1="abc"
min="abc"
s1==min为真

二、常用操作
1.获取
1.1获取字符串中长度
int length();ps.数组也有length,但是属性,不带()
1.2根据位置获取某个位置上的某个字符
char charAt(int index);
1.3根据字符获取该字符在字符串中索引(索引是从0到length()-1)
这里传的ASCIIL码
int indexOf(int ch); 获取第一个
int indexOf(int ch,int fromIndex);从fromIndex指定位置开始,获取字符串的位置
若没有找到,返回-1
相应的lastIndex..等等,是反向实现的
2.判断
2.1 字符串中是否包含一个子串
boolean contains(CharSequence str);CharSequence是Sting的父类
但既要查看内容还要拿位置下面这个比较好用
if(str.indexOf("aa")!=-1)
2.2 字符串是否有内容
boolean isEmpty();
2.3 字符串是否以指定内容开头
boolean startsWith(str);
2.4 字符串是否以指定内容结尾
boolean endsWith(str);
2.5 字符串内容用从Object类中复写的equls()比较内容
2.6 判断内容是否相同,并忽略大小写
boolean equalsIgnoreCase();比如登录时忽略大小写
3.转换
3.1 将字符数组转成字符串
构造函数:
String(char[] value);
String(chr[],offset,count):将字符数组中的一部分转成字符串,从offset位置取count个
静态方法
static String copyValueof(char []);
copyValueOf(charp[],offset,count);
static String valueOf(char []);
3.2 将字符串转成字符数组
char[] toCharArray();
3.3 将字节数组转换成字符串
String(byte[])
String(byte[],offset,count)
3.4 将字符串转换成字符数组
byte[] getBytes();
3.5 将基本数据类型转换成字符串
static String valueOf(int);
static String valueOf(double);

特殊:字符串和字节数组在转换过程中,是可以指定编码表的(但凡编码操作用字节数组,字符不行)

4.替换
String replace(char oldchar,char newchar);
String replace(CharSequence target,String replaement);
5.切割
String[] split(regex);以regex为切割点,获得一个String数组
6.子串,获得子串中一部分//sub 代替的意思
String substring(int begin);从指定位置到结尾
String substring(int begin,int end);包含头,但不包含尾部
7.转换,去除空格,比较。
7.1 将字符串转换成大写或小写
Sting toUpperCase();变大写
String toLowerCase();变小写
7.2 将字符串两端的多个空格去除
String trim();//trim 修剪
7.3 将两个字符串进行自然顺序的比较
int compareTo(string);返回为正说明原string大,为0说明一样,为负说明是后一个大


练习1 将字符串反转
//将整个字符串反转
public static String reverseString(String s){
//一般应用习惯,因为是0到length()-1,所以不取最后一个。
return reverseString(s,0,s.length()-1)
}
//将x、y(包含x、y)内字符串反转
public static String reverseString(String s,int x,int y){
//将字符串变成数组
char[] chs=s.toCharArray();
//将字符串反转
reverse(chs,start,end);
//将数组变成字符串
return String(chs);
}
public static void reverse(char[] arr,int x,int y){
for(int start=x,end=y;start<end;start++.end--){
swap(arr,start,end);
}
public staitc void swap(char[] arr,int x,int y){
char temp = arr[x];
arr[x] = arr[y];
arr[y] = temps;

}
}

练习2 获取一个字符串在另一个字符串出现的次数
方法1:
public static int getSubCount(String str,String key){
int count = 0;
int index = 0;
//获取key在str中第一次出现的角标,若没有返回-1,循环停止
while((index=str.indexOf(key))!=-1){
//截取上一个key之后的位置,赋给str
str=str.substring(index+key.length());
count++;
}
return count;
}
方法二:
public static int getSubCount(String str,String key){
int count = 0;
int index = 0;
while(((index=str.indexOf(key,index)!=-1){
//因为之前indexOf(key)需要每次从查起,且会截取过多字符串在内存中,造成浪费。
index=index+key.length();
count++
}
return count;
//不建议使用切的形式

练习3 获取最大相同子串
思路:取短字符串从0依次递增加到整个字符串长度,然后按每个长度将整个字符串从头到尾滚一边,并看看是否存在于长字符串;
public static String getMaxSubString(String max,String min){
//如果max比min短,则交换位置
if(s1.length()<min.length()){
return getMaxSubString(min,s1);
}
for(int x=0;x<min.length();x++){
//因为substring()不包含最后一个,所以+1
for(int y=0,z=min.length()-x;z!=min.length()+1;y++,z++){
String temp=min.substring(y,x);
if(max.contains(temp)){
return temp;
}
}
}
}

啊~今天就是正事开学了,jm保佑我吧!!

静以修身,俭以养德

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值