黑马程序员---String类

时间:2022-08-27 08:35:56
---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

字符串是一个特殊的对象。
字符串一旦初始化就不可以被改变。
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); //获取某一位置上的字符。
  1. int indexOf(int ch);                         //传的是ASCII码,返回的是ch在字符串中第一次出现的位置。
  2. int indexOf(int ch, int fromIndex);   //从指定索引开始搜索
  3. int indexOf(String str);                          //返回指定字符串在此字符串中第一次出现的位置。
  4. int indexOf(String str, int fromIndex);    //从指定索引开始搜索

 

  1. int lastIndexOf(int ch);                         //返回指定字符在此字符串中最后一次出现的位置。
  2. int lastIndexOf(int ch, int fromIndex);   //从指定索引开始反向搜索
  3. int lastIndexOf(String str);                          //返回str在此字符串中最后一次出现的位置
  4. int lastIndexOf(String str, int fromIndex);    //从指定索引处开始反向搜索
 

class 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类
 
替换
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类 
切割
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) ); }}

黑马程序员---String类  
---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ---------------------- 详细请查看: http://edu.csdn.net