字符串

字符串

String

Java使用java.lang包中的String类来创建一个字符串变量,因此字符串变量是对象

0. 字符串常量,如:“你好!”,“1234.5678”,“java”

1. 声明和创建字符串,使用String类的构造方法,例如:String s = new String(" we are students ");

2. 引用字符串常量对象,例如:String s = "How are you";

字符串的常用方法

方法一:

public int length();

lenghth( )方法可以获取一个字符串的长度,如:String tom=“我们是学生”;tom.length()的值是5。

方法二:

public boolean equals(String s) 

字符串对象调用String类中的equals方法,比较当前字符串对象的实体是否与参数指定的字符串S的实体相同。

示例如下:

String tom=new String( "we are students");
String boy=new String( "We are students");
String jerry= new String("we are students");

tom.equals(boy)的值是false;

tom.equals(jerry)的值是true。

方法三:

public boolean startsWith(String s)
public boolean endsWith(String s) 

字符串对象调用startsWith(String s)方法,判断当前字符串对象的前缀是否是参数指定的字符串S;

字符串对象调用endsWith(String s)方法,判断当前字符串的后缀是否是字符串S;

String tom="220302620629021";

tom.startsWith("220")的值是true;

tom.endsWith("022")的值是false。


方法四:

public boolean regionMatches(int firstStart,String other,int otherStart,int length) 
public boolean regionMatches(boolean b,int firstStart,String other,int otherStart,int length)

字符串调用regionMatches(int firstStart,String other,int otherStart,int length)方法;

从参数fristStart指定的位置开始;

在当前字符串取长度为length的一个子串;

从参数otherStart指定的位置开始;

在other中取长度为length的一个子串;

进行比较,如果两个子串相同该方法就返回true,否则返回false。

判断一个字符串中出现几个“en”

参考代码如下:

class Test3
{   public static void main(String args[])
    {  int number=0; 
       String s="student;entropy;engage,english,client";
       for(int k=0;k<s.length();k++)
        {  if(s.regionMatches(k,"en",0, 2))
             { System.out.printf("k=%3d",k);
               number++;
             }
         } //从k的位置开始取长度为2的字串,从“en”的0开始去长度为2的字串
       System.out.println("number="+number);
    }
}

//region 范围 区域  Matche匹配

方法五:

public int compareTo(String s)
public int compareToIgnoreCase(String s )

字符串对象可以调用String类中的compareTo( String s)方法,按字典序与参数S指定的字符串比较大小;

如果当前字符串与S相同,该方法返回值0;如果当前字符串对象大于S,该方法返回正值;如果小于S,该方法返回负值。

将一个字符串数组按字典序重新排序

参考代码如下:

class Test
{  public static void main(String args[]) 
{  String a[]={"door","apple","Applet","girl","boy"};
for(int i=0;i<a.length-1;i++) 
          { for(int j=i+1;j<a.length;j++) 
            {  if(a[j].compareTo(a[i])<0) 
               {   String temp=a[i];
                   a[i]=a[j];
                   a[j]=temp;
                }
            } 
         }
      for(int i=0;i<a.length;i++) 
         {  System.out.print("  "+a[i]);
         }
    }
}

//Compare 比较

方法六:

public int indexOf (String s) 

字符串调用indexOf(String s)从当前字符串的头开始检索字符串S,并返回首次出现S的位置。如果没有检索到字符串S,该方法返回的值是-1;

字符串调用indexOf(String s,int startpoint)方法从当前字符串的startpoint位置开始检索字符串S,并返回首次出现S的位置。如果没有检索到字符串S,该方法返回的值是-1;

字符串调用lastIndexOf(String s)方法从当前字符串的头开始检索字符串S,并返回最后出现S的位置。如果没有检索到字符串S,该方法返回的值是-1。

示例:

String tom="I am a good cat";
 System.out.println(tom.indexOf("I"));
 System.out.println(tom.indexOf("a"));
 System.out.println(tom.indexOf("a",7));
 System.out.println(tom.indexOf("good"));
 System.out.println(tom.lastindexOf(“a"));
//index 标志 指示
方法七:
public String substring(int startpoint) 

字符串对象调用该方法获得一个当前字符串的子串,该子串是从前字符串的startpoint处截取到字符串的末尾所得到的字符串;

字符串对象调用substring(int start,int end)方法获得一个当前字符串的子串,该子串是从当前字符串的stsrt处截取到end处所得到的字符串,但不包括end处所对应的字符。

方法八:

public String  replaceAll(String oldString ,String newString)
public String  replaceFirst(String oldString ,String newString)

replaceAll:字符串对象S对应该方法,可以通过用参数newString指定的字符串替换S中由oldString指定的所有字符串而得到的字符串;

replaceFirst:字符串对象S调用该方法,可以通过用参数newString指定的字符串替换S中第一个由oldString指定的字符串而得到的字符串。

示例:

class Test4 
{  public static void main(String args[]) 
{  String path="c:\\myfile\\2000\\result.txt";
   int index=path.lastIndexOf("\\");
   String fileName=path.substring(index+1);
   String newName=fileName.replaceAll(".txt",".java");
   System.out.println(path);
   System.out.println(fileName);
   System.out.println(newName);     
}
}
方法八:
public String trim() 

一个字符串S通过调用方法trim()得到一个字符串对象,该字符串对象是S去掉前后空格后的字符串。

示例:

String s="  I am a student  ";
 System.out.println(s.trim());

字符串与基本数据的相互转化

使用java.lang 包中的Byte、Short、Integer、Long、Float、Double类调相应的类方法

public static  byte  parseByte(String  s) throws NumberFormatException
public static  short  parseShort(String  s) throws NumberFormatException
public static  short  parseInt(String  s) throws NumberFormatException
public static  long  parseLong(String  s) throws NumberFormatException
public static  float  parseFloat(String  s) throws NumberFormatException
public static  double  parseDouble(String  s) throws NumberFormatException

可以将“数字”格式的字符串,转化为相应的基本数据类型

数字转换为字符串

Public static String valueOf(int n)
Public static String valueOf(float n)

示例:

String str=String.valueOf(123.56)

参考代码如下:

public class Test3
{  
   public static void main(String args[] ) 
   {  double item,sum=0;
      String s[] = {"12","15","16","36"};
      for(int i=0;i<s.length;i++) 
        {  item=Double.parseDouble(s;     
        }
      System.out.println(sum);
 int item1,sum1=0;
      String s1[] = {"12.5","15.5","16.5","36"};
 for(int i=0;i<s1.length;i++) 
        {  item1=Integer.parseInt(s[i]);
           sum1=sum1+item1;     
        }
      System.out.println(sum1);
      
      float item3,sum3=0;
      String s3[] = {"12","15","16","36"};
      for(int i=0;i<s3.length;i++) 
        {  item3=Float.parseFloat(s[i]);
           sum3=sum3+item3;     
        }
      System.out.println(sum1);
   }
}
}

对象的字符串表示

Object类有一个public 方法toString(),一个对象通过调用该方法可以获得该对象的字符串表示。

示例:

import java.util.Date;
import java.awt.*;
public class Test6
{  public static void main(String args[])
   {  Date date=new Date();
      Button button=new Button("确定");
      System.out.println(date.toString());
      System.out.println(button.toString());  
   }
}

StringTokenizer类

StringTokenizer(String s)为字符串S构造一个分析器。使用默认的分隔符集合,即空格符(若干个空格被看做一个空格)、换行符、回车符、Tab符、进纸符;

StringTokenizer(String s,String delim)为字符串S构造一个分析器。参数dilim中的字符被作为分隔符。

我们把一个StringTokenizar对象称作一个字符串分析器;

每当调用extToken( )时,都将在字符串中很多下一个语言信号,同时,字符串分析器中负责计数的变量的值就自动减一;

hasMoreTokens( ),只是字符串中还有语言符号,返回true,否则为false;

countTokens( ),得到分析器中计数变量的值。

示例:

import java.util.*;
public class Test
{  public static void main(String args[])
   {  String s="I am James,she is my girlfriend";
      StringTokenizer fenxi=new StringTokenizer(s,“ ,”);   //空格和逗号分隔
      int number=fenxi.countTokens();
      while(fenxi.hasMoreTokens()) 
       {  String str=fenxi.nextToken();
          System.out.println(str);
          System.out.println("还剩"+fenxi.countTokens()+"个单词");
       }
     System.out.println("s共有单词:"+number+"个");
   } 
}
//Token象征

字符串与字符、字节数组

public void getChars(int start,int end,char c[],int offset ) 字符串调用getChars方法将当前字符串中的一部分字符拷贝到参数C指定的数组中。将字符串中从位置start到end-1位置上的字符拷贝的数组C中,并从数组C的offset处开始存放这些字符。需要注意的是,必须保证数组C能容纳下要被拷贝的字符;

public char[ ] toCharArray( ) 字符串对象调用该方法可以初始化一个字符数组,该数组的长度与字符串的长度相等,并将字符串对象的全部字符拷贝到该数组中。

 示例:

class Test8 
{  public static void main(String args[])
   {  char c[],d[];
      String s="巴西足球队击败德国足球队";
      c=new char[2];
      s.getChars(5,7,c,0);
      System.out.println(c);
      d=new char[s.length()];
      s.getChars(7,12,d,0);
      s.getChars(5,7,d,5);
      s.getChars(0,5,d,7);
      System.out.println(d);
   }
}

字符串加密解密

使用toCharArray()方法

示例:

classTest9 
{  public static void main(String args[]) 
   {  String s="清华大学出版社";
      char a[]=s.toCharArray();  
      for(int i=0;i<a.length;i++)
        {  a[i]=(char)(a[i]^‘t’);    // 异或运算
        }
String secret=new String(a);
System.out.println("密文:"+secret);
      for(int i=0;i<a.length;i++)
       {  a[i]=(char)(a[i]^'t');    // 异或运算
       }
String code=new String(a);  
  System.out.println("原文:"+code);
   }
}

String(byte[ ],int offset,int length)该构造方法使用平台默认的字符编码,用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象;

public byte[ ] getBytes( )使用平台默认的字符编码,将当前字符串转化为一个字节数组。

示例:

public class Test10
{  public static void main(String args[])
   {  byte d[]="你我他".getBytes();           
      System.out.println("数组d的长度是(一个汉字占两个字节):"+d.length+"个字节");
      String s=new String(d,0,2);
      System.out.println(s);
   }
}

StringBuffer类

String类创建的字符串对象是不可以修改的,也就是说,String字符串不能修改、删除或替换字符串中的某个字符,即String对象一旦创建,那么实体是不可以再发生变化的;

StringBuffer类能创建可修改的字符串序列,也就是说,该类的对象的实体的内存空间可以自动的改变大小,便于存放一个可变的字符序列。

StringBuffer类的构造方法

StringBuffer()无参数创建StringBuffer对象,初始容量为16个字符;

StringBuffer(int size)初始容量为size个字符;

StringBuffer(String s)初始容量为字符串S的长度额外再加16字符。

StringBuffer类的常用方法


示例:

class Test11
{ public static void main(String args[ ])
  { StringBuffer str=new StringBuffer("62791720");
    str.insert(0,"010-");
    str.setCharAt(7 ,'8'); 
    str.setCharAt(str.length()-1,'7');
    System.out.println(str); 
    str.append("-446");
    System.out.println(str);
    str.reverse();
    System.out.println(str);
  }
}

正则表达式

一个正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称作正则表达式中的元字符

字符串对象调用

public boolean matches(String regex)

方法可以判断当前字符串对象是否和参数regex指的正则表达式匹配


常用元字符及其意义



常用限定符及其意义


示例:

String regex="\\w{1,}@\\w{1,}\56\\w{1,}" ;
      String str1="zhangsan@sina.com";
      String str2="li@si@dl.cn";
      if(str1.matches(regex))   {  
System.out.println(str1+"是一个Email地址"); 
      }
      else
      { System.out.println(str1+"不是一个Email地址"); 
      }
      if(str2.matches(regex))
      {  System.out.println(str2+"是一个Email地址"); 
      }  
      else
      { System.out.println(str2+"不是一个Email地址"); 
      }

字符串代码汇总:

package com.yg12.www;

public class HomeWork {


	public static void main1(String[] args) {
		
	//public int length()方法:

	String a="ajdgdudcndkfkldfj";
	System.out.println(a.length());



	//public boolean equals(String s)方法:

	String boy=new String("我是男孩子!");
	String bob=new String("我是男孩子!");
	String girl=new String("我是女孩子!");
	System.out.println(boy.equals(bob));
	System.out.println(boy.equals(girl));

	//public boolean startsWith(String s)方法:
	//public boolean endsWith(String s)方法:

	String dad="500237199311080371";
	System.out.println(dad.startsWith("500"));
	System.out.println(dad.endsWith("0371"));

	//public boolean regionMatches(int firstStart,String other,int otherStart,int length)方法:

	/*int number=0;
	String s1="people;student;school;chenge;english";
	for(int i=0;i<s1.length();i++){
	if(s1.regionMathes(i."en";0,3)){
	System.out.printf("i=%3d",i);
	number++;
	}
	}
	System.out.println("number="+number);
	}
	}*/

	//pnblic int cmpareTo(String s)方法:

	/*String b[]={"apple","egg","boy","girl"};
	for(int j1=0;j<b.length-1;j++){
		for(int k=j1+1;k<j.length;k++){
		if(a[k].compareTO(a.[j1]<0){
		String temp=a[j1];
		a[j1]=a[k];
		a[k]=temp;
		}
		 }
		}

	for(int j1=0;j<b.length;j++){
	System.out.priint(" "+a[j1]);
	}	*/
	
		//public int indeOf(Strinig s)方法:

	/*String jack="I am a good dog";
	System.out.println(jack.indexOf("I"));
	System.out.println(jack.indexOf("a",7));
	System.out.println(jack.indexOf("a"));*/

	//public String substring(int startpoint)方法:

	String tom="I love them";
	String s1=tom.substring(2);
	String s2=tom.substring(2,5);
	System.out.println(s1);
	System.out.println(s2);



	//replaeAll方法:

	/*String patn="c:\\myfile\\2000\\result.tt";
	int index=patn.lastIndexOf("\\");
	String fileName=fileName.replaceAll(".txt","java");
	System.out.println(path);
	System.out.println(fileName);
	System.out.println(newName);*/
	
	



 	//public String trim()方法:

	String str="I am a student";
	System.out.println(str.trim());



	//字符串与基本数据的相互转化方法:

	/*double item,sum=0;
	Strinig s[]={"12","15","16","36"};
	for(int i=0;i<s.length;i++){
	item=Double.parseInt(s[i]);
	}
	System.out.println(sum);
	
	int item1,sum1=0;
	String s1[]={"12.5","15.5","16.5","36"};
	for(int i1=0;i<s1.length;i++){
	item1 =Integer.parseInt(s1[i]);
		sum1+=item1;
	}
	System.out.println(sum1);

	float item3,sum3=0;
	String s3[]={"12","15","16","36"};
	for(int i1=0;i<s3.length;i++){
	item1 =(int) Float.parseFloat(s3[i]);
		sum3+=item3;
	}
	System.out.println(sum3);
*/


	//对象的字符串表示方法:

	/*import.java.util.Date;
	import.java.at.*;
	public static void main(String args[]){
	Date date=new date();
	Button button=new button("确定");
	System.out.println(date.toString());
	System.out.println(button.toString());
	}*/
	


	
	
	//String Tokenizer(String s)  方法:

	/*import.java.util.*;
	public class Test1;
	public static viod main(String args[]){
	String s=" I am jack,he is my boyriend";
	StringTokenizer fenxi=new StringTokenizer(s",");
	int number=fenxi.countTokens();
	while(fenxi.hasMoreTokens()){
	String str=feni.netTokens();
	}
	System.out.println(还剩"+fenxi.countTokens()+"个单词");
	}
	System.out.println("s共有单词:"+number+"个");*/
	




	// 字符串与字符、字节数组:

	/*chac[],d[];
	String s="巴西足球队击败德国足球队";
	c=new char[2];
	s.getChar(5,7,c,0);
	System.out.println(c);
	d=new char[s.length()];
	s.getChar(7,12,d,0);
	s.getChar(5,7,d,5);
	s.getChar(0,5,d,7);
	System.out.println(d);*/



	
	//字符串加密、解密  toCharArray()方法:

	/*String s="清华大学出版社";
	char a[]=s.toCharArray();
	for(int i=0;i<a.length;i++){
	a[j]=(char)(a[i]^'t');
	}
	String code=new String(a);
	System.out.println("原文:"+code);*/





	//String(byte[],int offset,int length)方法:

	byte d[]="你我他".getBytes();
	System.out.println("数组d的长度是:"+d.length+"个字节") ;
	String s= new String(d,0,2);
	System.out.println(s);




	//StringBuffer类的构造方法:

	/*StringBuffer str=new StringBuffer("123456789");
	str.insert(0,"010-");
	str.setCharAt(str.length()-1,'7');
	System.out.println(str);
	str.append("-446");
	System.out.println(str);
	str.reverse();
	System.out.println(str);*/
	




	//正则表达式方法:

	/*String regex="\\w{1,}@\\w{1,}\56\\w{1,}";
	String str1="zhangsan@sina.com";
	String str2="li@si@dl.cn";
	if(str1.matches(regex){
	System.out.println(str1+"是一个Email地址");
	}else{
	System.out.println(str1+"不是一个Email地址");
	}
	if(str2.matches(rege)){
	System.out.println(str2+"是一个Email地址");
	}else{
	System.out.println(str2+"不是一个Email地址");

	}*/
	
	}
    }


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页