黑马程序员------java基础String
来源:互联网 发布:梦天堂网络 编辑:程序博客网 时间:2024/05/19 04:51
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
String类
String s1 = "abc"//s1 是一个类类型变量,"abc是一个对象"。
字符串最大的特点:一旦被初始化就不可以被改变。
s1 = "kk";// s1指向变了,"abc"并未改变
__________________________________
String s1 = "abc";
Sttring s2 = new String("abc");
//s1和s2有什么区别
s1在内存中有一个对象。
s2在内存中有2个对象。:new 了一个和"abc"
String s1 = "abc";
String s2 = new String("abc");
String s3 = "abc";
s1 == s3 :true;
"adc"在常量池中
//String 类复写了Object类中的equals方法,
该方法用于判断字符串是否相同。
String常见功能:
"abcd"
1 获取和判断
获取:
字符串中包含的字符数,也就是字符串的长度。
int length():获取长度
根据位置获取位置上的某个字符。
char charAt(int index)://当访问到字符串中不存在的脚标示会出现StringIndexOutOFBundensException
根据字符获取该字符在字符串中的位置
int indexof(int ch):返回的是ch在字符串中第一次出现的位置。注释:ch为字符的ASCALL码
int indexof(int ch,int fromIndex):从fromIndex开始,返回第一次出现ch的位置
int lastindexof(int ch);反向索引一个字符的位置。
int indexof(String str):返回str在字符串中的位置
int indexof(String str,intformIndex);
注释:indexof(int ch); 当字符不在字符串中时返回-1;
判断:
字符串中是否包含某个子串。 boolean contains(str);
特殊之处:indexof(str):可以索引str第一次出现的位置,如果返回-1
表示str不存在于字符串中,所以也可以用于对指定str判断是否包含。
if (str.indexof("aa")!=-1)
字符串中是否有内容。 boolean isEmpty();//当仅当length ==0时为真
字符串是否以指定内容的开头。 boolean startsWith(String str);
字符串是否以指定的内容结尾. boolean endsWith(String str);
判断字符串的内容是否相同,复写了Object中的equals方法。
boolean equals(str);
判断内容是否相同,并忽略大小写。
boolean equalsIgnoreCase(str);
转换:
1 将字符数组转成字符串。
构造函数:String(char[])
String (char[],offset,count):将字符数组中的一部分转换成字符串。
static String copyValueof(char[]);
static String copyValueof (char[],int offset,int count);
2 将字符串转成字符数组。
char[] toCharArray();
3 将字节数组转换成字符串。?
String(byte[])
String(byte[],offset,count):将字符数组中的一部分转换成字符串
4 将字符串转成字节数组。?
byte[] getBytes();
5 将基本数据类型转换为字符串。
static String valueof(int)
static String valueof(double);
//3 +"";//String.valueOf(3)
特殊:字符串和字节数组在转换过程中是可以指定编码的。
切割和替换:
替换:
String replace(oldchar,newchar);//如果要替换的字符不存在,返回的还是原串
String s = "hello java";
String s1 = s.replace('a','n');//返回的是一个新字符串
此时 s 的值任然为 "hello java"
s1的值为:"hello jnvn"
String replace(char)
切割:
String[] split(regex);//处理问题:String s = "zhangsan,lisi,wangwu";
String arr[] = split s.split[","];
子串:获取字符串中的一部分
String substring(begin);//如果角标不存在,会出现字符串角标越界异常。
String substring(begin,end);//注:[begin,end);前闭后开
转换,去除空格,比较
1 将字符串转换成大写或者小写
String toUpperCase();
String toLowerCase();
2 将字符串两端多个空格去除
String trim();
3 对2个字符串进行自然顺序的比较
int compareTo(String);// 等于0,大于返回正数,小于返回负数
关于字符串的几个练习
1 去除字符串2端多个空格
public String String myTrim(String str){ int start =0; int end = str.length()-1; while(str.charAt(start)==' ') start ++; while(str.charAt(end)==' ') end--; return(str.subString(start,end+1));}
2 将字符串反转
public String String myTrim(String str){ char[] arr = str.toCharArray(); int start = 0; int end = arr.length -1; char temp = ' '; while(start<end) { temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; } return new String(arr);}3 获取一个字符串中另一个字符串出现的次数
public int getSubStringCount(String str,String key){ int count =0; int index =0; int length = key.length(); while(str.indexOf(key,index)!=-1) { index += length; count ++; } return count;}4 获取2个字符串中最大相同子串
public String getMaxSubString(String str1,String str2){ String max =""; String min =""; max = str1.length()>str2.length()?str1:str2; min = max.length()>str1.lenght()?str1:str2; String temp = ""; for(int x=0;x<min.length();x++)//必须保证str2是长度小的那个字符串以便减少循环次数 { for(int a=0,b=min.length()-a;b!= min.length()+1;a++,b++) { temp = min.subString(a,b); if(max.indexOf(temp)!=1) { return temp; } } } return null;}
StringBuffer:字符串缓冲器
1 StringBuffer 是一个容器
特点:
1 长度可变
2 可直接操作多个数据类型
3 最终通过toString方法变成字符串;
1 存储
StringBuffer append();指定数据作为参数添加到已有数据的结尾处
StringBuffer insert(int offset,参数);
:这里的参数可以使出了byte short类的任意数据类型
可以将数据插入到offset位置
2 删除
StringBuffer delete(int start,int end):包含头不包含尾
StringBuffer deleteCharAt(index):删除指定位置的字符
delete(0,sb.length());//清空字符串缓冲区
3 获取
char charAt(index);
int indexOf(String str);
int indexOf(String str,int fromIndex);
int lastIndexof(str);
int length();
String subString(start,end);
4 修改
* StringBuffer replace(start,end,str);
* void setCharAt(index,char);替换某角标字符
*
* 5 StringBuffer reverse();
StringBuilder :JDK1.5之后可使用
StringBuffer 是线程同步的
StringBuilder 是线程不同步的
单线程StringBuffer效率低
以后开发建议使用StringBuilder线程安全问题自己处理
java的升级:1 提高效率 2 简化书写 3 提高安全性
- 黑马程序员--java基础--String
- 黑马程序员------java基础String
- 黑马程序员--Java基础--String
- 黑马程序员-----Java基础-----String
- 黑马程序员-java基础 String类
- 黑马程序员----JAVA基础之String类
- 黑马程序员 Java基础 ---> String类
- 黑马程序员-------java基础:String类
- 黑马程序员--JAVA基础复习之String
- <<黑马程序员>>java基础之String字符串
- 黑马程序员---java基础---3String类
- 黑马程序员--Java基础--07String
- 黑马程序员---Java基础总结---String
- 黑马程序员--Java基础--String类
- 黑马程序员-->Java基础-->String类
- 黑马程序员---java基础---String类、泛型
- 黑马程序员------Java基础中String
- 黑马程序员--java基础--String,StringBuffer,StringBuilde
- Flash Builder4.7打不开的解决办法
- Word Break
- android自适应屏幕方向和大小
- 如何解决?
- 用人话讲虚拟化 1 - 道
- 黑马程序员------java基础String
- UIView的试图切换
- 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
- Spring中abstract="true"的定义
- 结构体编辑C++增加了class类型后
- 将OFBiz的服务暴露为SOAP Web Services
- 链接器
- 试图切换控制addChildViewController、_transitionFromViewController
- Android开发者请进:猛击鼠标,请投一票!