字符串一旦初始化就不可以被改变。
String str = “abc”;
String str1 = new String(“abc”);有什么区别?
class StringDemo
{
public static void main(String[] args)
{
String s1 = "abc"; //s1是一个类类型变量,“abc”是一个对象。
//字符串最大的特点就是:一旦被初始化,就不可以被改变。
//s1 = "kk"; //s1变了,刚才s1指向“abc”这个对象,现在s1指向“kk”这个对象。
//s1中的地址值变了,“abc”这个对象并没有变。
String s2 = new String("abc");
//s1和s2有什么区别?
//s1在内存中有一个对象
//s2在内存中有两个对象
System.out.println(s1==s2); //false,比较地址值
System.out.println(s1.equals(s2)); //true,比较字符串是否相等
String s3 = "abc";
System.out.println(s1==s2); //false
System.out.println(s1==s3); //true,对于字符串这种在常量池中存放的数据,
//s3在初始化时发现“abc”已经在内存中存在,
//它就不会再独立开辟空间了。
//方法区里有方法数据、静态数据、常量池
}
}
获取:
int length(); //返回字符串包含字符的个数,也就是字符串长度。
char charAt(int index); //获取某一位置上的字符。
- int indexOf(int ch); //传的是ASCII码,返回的是ch在字符串中第一次出现的位置。
- int indexOf(int ch, int fromIndex); //从指定索引开始搜索
- int indexOf(String str); //返回指定字符串在此字符串中第一次出现的位置。
- int indexOf(String str, int fromIndex); //从指定索引开始搜索
- int lastIndexOf(int ch); //返回指定字符在此字符串中最后一次出现的位置。
- int lastIndexOf(int ch, int fromIndex); //从指定索引开始反向搜索
- int lastIndexOf(String str); //返回str在此字符串中最后一次出现的位置
- int lastIndexOf(String str, int fromIndex); //从指定索引处开始反向搜索
---------------------- ASP.Net+Android+IOS开发、 .Net培训、期待与您交流! ---------------------- 详细请查看: http://edu.csdn.netclass StringDemo
{
public static void sop(Object obj) //可传基本数据类型,这是1.5版本以后的新特性,{ //叫做基本数据类型的类型提升。
System.out.println(obj);
}
public static void main(String[] args)
{
String s = "abcdeakpef";
sop( s.length() ); //数组也有长度,它的length是属性,没有括号。不要混淆。
sop( s.charAt(4) ); //当访问到字符串中不存在的脚标时,//会发生StringIndexOutOfBoundsException。
sop( s.indexOf('a') ); //如果没有找到,返回-1.
sop( s.indexOf('a',3) );
sop( s.lastIndexOf("a") );
sop( s.lastIndexOf('a',3) );
}
}判断:boolean contains(CharSequence s); //判断字符串中是否包含某一个子串,//CharSequence是一个接口,String和StringBuffer都实现了它。特殊之处:if( indexOf("aa")!=-1 ),则表示"aa"包含在此字符串内。而且该方法既可以判断,又可以获取出现的位置。boolean isEmpty(); //判断字符串中是否有内容,原理就是判断字符串长度是否为0;//注: "" 这是个对象, null 这是指向空。boolean startsWith(String prefix); //判断字符串是否是以指定内容开头boolean endsWith(String suffix); //判断字符串是否是以指定内容结尾boolean equals(Object anObject); //判断字符串的内容是否相同。覆盖了Object类里面的equals方法。boolean equalsIgnoreCase(String anotherString); //判断内容是否相同并且忽略大小写class StringDemo { public static void sop(Object obj) //可传基本数据类型,
{ //这是1.5版本以后的新特性,叫做基本数据类型的类型提升。 System.out.println(obj); }
public static void main(String[] args) { String s = "StringDemo.java";
sop( s.isEmpty() ); sop( s.contains("Demo") ); //判断文件名中是否包含Demo sop( s.startsWith("String") ); //判断文件名称是否是以String单词开头 sop( s.endsWith(".java") ); //判断文件名称是否是.java的文件
sop( s.equals("stringdemo.java") ); //false sop( s.equalsIgnoreCase("stringdemo.java") ); //true }}
转换://将字符数组转成字符串构造函数 String(char[] value);String(char[] value, int offset, int count);//offset是起始位,count是个数。将字符数组中的一部分转成字符串。静态方法 static String copyValueOf(char[] data);static String copyValueOf(char[] data, int offset, int count);static String valueOf(char[] data);static String valueOf(char[] data, int offset, int count);//将字符串转成字符数组char[] toCharArray();//将字节数组转成字符串String(byte[] bytes);String(byte[] bytes, int offset, int length);//将字符串转成字节数组byte[] getBytes();字符串和字节数组在转换过程中,是可以指定编码表的。//将基本数据类型转成字符串static String valueOf(int i); //相当于 3+"";static String valueOf(double d);static String valueOf(long l);static String valueOf(boolean b); ...class StringDemo { public static void sop(Object obj) //可传基本数据类型,
{ //这是1.5版本以后的新特性,叫做基本数据类型的类型提升。 System.out.println(obj); }
public static void main(String[] args) { char[] ch = {'a','b','c','d','e','f','g','h'};
sop( new String(ch) ); sop( new String(ch,2,3) );
String s1 = "hulala";
char[] ch1 = s1.toCharArray(); for(int x=0;x<ch1.length;x++) { sop( ch1[x] ); }
byte[] by = s1.getBytes(); for(int x=0;x<by.length;x++) { sop( by[x] ); } }}
替换:String replace(char oldChar, char newChar);String replace(charSequence target, charSequence replacement);class StringDemo { public static void sop(Object obj) //可传基本数据类型,
{ //这是1.5版本以后的新特性,叫做基本数据类型的类型提升。 System.out.println(obj); }
public static void main(String[] args) { String s = "hello java"; String s1 = s.replace('a','n');//如果要替换的字符不存在,返回的还是原串。 String s2 = s.replace("java","world"); sop( s ); sop( s1 ); sop( s2 ); }}
切割:String[] split(String regex);class StringDemo { public static void sop(Object obj) //可传基本数据类型,
{ //这是1.5版本以后的新特性,叫做基本数据类型的类型提升。 System.out.println(obj); }
public static void main(String[] args) { String s = "zhangsan,lisi,wangwu";
String[] arr = s.split(",");
for(int x=0;x<arr.length;x++) { sop( arr[x] ); } }}
获取子串:获取字符串中的一部分String substring(int beginIndex);String substring(int beginIndex, int endIndex);class StringDemo { public static void sop(Object obj) //可传基本数据类型,
{ //这是1.5版本以后的新特性,叫做基本数据类型的类型提升。 System.out.println(obj); }
public static void main(String[] args) { String s = "abcdef";
sop( s.substring(2) ); //cdef,从指定位置,到结尾。
//如果脚标不存在,会发生字符串脚标越界异常 sop( s.substring(2,4) ); //cd,包含头,不包含尾。
//如果想获取整个字符串:s.substring(0,s.length()); }}
转换、去空格、比较://将字符串转换成大写或者小写String toUpperCase();String toLowerCase();//修剪,去除字符串两端的多个空格String trim();//将两个字符串按照字典顺序比较int compareTo(String anotherString);如果按字典顺序此 String对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;class StringDemo { public static void sop(Object obj) //可传基本数据类型, { //这是1.5版本以后的新特性,叫做基本数据类型的类型提升。 System.out.println(obj); }
public static void main(String[] args) { String s = " Hello Java! ";
sop( s.toUpperCase() ); sop( s.toLowerCase() ); sop( s.trim() );
String s1 = "abc"; String s2 = "aaa";
sop( s1.compareTo(s2) ); }}