java学习之day09--关于字符串的处理

来源:互联网 发布:阿尔法脑电波音乐软件 编辑:程序博客网 时间:2024/04/28 23:10

1  String 和StringBuffer
String 类对象中的内容 一旦初始化不能改变
StringBuffer类封装的字符串内容可以改变,用toString方法转换成String类型
  String x="a"+4+"c";
 String x=new StringBuffer().append("a").append(40.append("c");
字符串常量实际上是一种特殊的匿名String对象。


简答题:-----------------------------
1.String和StringBuffer有什么区别,"=="和equals()有什么区别?
char能不能放下一个中文字符?
--- String是不可变类,而StringBuffer是可变类。
--- ==是对引用的判断,对内存地址的判断。
--- equals()是判断引用的值是否相等。
---可以
程序题:-------------------------------
1.写一个字符串反转的方法,把“abcdefg”转换成“gfedcba”。
package 字符串;

public class Str1 {
 public static void main(String []args){
  String s1="abcdef";
  int length=s1.length();
  StringBuffer s2=new StringBuffer();
  for(int i=0;i<length;i++){
   s2.append(s1.charAt(length-1-i));
  }
  s2.toString();
  System.out.println("反转前:"+s1+"\n");
  System.out.println("反转后:"+s2+"\n");
  
 
 //方法二:利用reverse()方法
  /*String s1="abcdef";
     StringBuffer s2=new StringBuffer(s1);
     s2.reverse().toString();
     System.out.println("反转后:"+s2+"\n");
 */
 }
}

2.替换字符串,把“abc.abc.abc”替换成“abc/abc/abc”。
package 字符串;

public class Str2 {

 public static void main(String[] args) {
    StringBuffer s1=new StringBuffer("abc.abc.abc");
    int length=s1.length();
    StringBuffer s2=new StringBuffer();
    for(int i=0;i<length;i++){
     if(s1.charAt(i)=='.'){
    s2.append('/');
     }
     else{
      s2.append(s1.charAt(i));
     }
    }
    System.out.println("变换后:"+s2.toString());

 }

}

3.日期处理,取得从1970到现在的毫秒数,格式为
yyyy-MM-dd-HH:mm:ss再转换成String输出。
package 字符串;

public class Str3 {

 public static void main(String[] args) {
  java.util.Date date=new java.util.Date();
  long now=date.getTime();
  java.text.SimpleDateFormat df=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateStr=df.toString();
        System.out.println(dateStr);
 }

}

4.写一个函数,例如:给你的?a?b?c?则输出
?abc??acb??bac??bca??cab??cba?
package 字符串;
import java.util.ArrayList;
import java.util.List;
public class Str4 {

 public static List<String> list(String base,String buff){
      
  List<String> result=new ArrayList<String>();
  if(base.length()<=0){
   result.add(buff);
   //System.out.println(result.toString()+"");
  }
  for(int i=0;i<base.length();i++){
   List<String> temp= list(new StringBuilder(base).deleteCharAt(i).toString(),
     buff+base.charAt(i));
   result.addAll(temp);
  }
  for(int i=0;i<base.length();i++){
  // System.out.println(new StringBuilder(base).deleteCharAt(i).toString()+"");
  // System.out.println(base.charAt(i)+"");
  // System.out.println(buff+"");
  }
  return  result;
 }
 
 public static void main(String[] args) {
  
  String s1="abc";
  List<String> list=list(s1,"");
  System.out.println(list.size());
  System.out.println(list);
 }

}

5.不使用中间变量?把两个变量的值互换?
package 字符串;

public class Str5 {

 public static void main(String[] args) {
  int a=5;
  int b=6;
  a=a*b;
  b=a/b;
  a=a/b;
  System.out.println("a="+a+" b="+b);
 }

}

6.冒泡排序
package 字符串;

public class Str6 {

 public static void BubbleSort(int a[],int n){
  int exchange=0,bound;//  exchange:最后一次交换的位置   bound:无序区的最后一个位置
  bound=n-1;
  while(bound!=0){
  for(int i=0;i<bound;i++){
   if(a[i]>a[i+1]){
    int temp;
    temp=a[i];
    a[i]=a[i+1];
    a[i+1]=temp;
   }
   exchange=i;
  }
  bound=exchange;
  }
 }
 public static void main(String[] args) {
  
       int a[]={20,1,15,40,35,2};
       BubbleSort(a,6);
       System.out.println("排序后"+"\n");
      for(int i=0;i<a.length;i++){
       System.out.println(a[i]+" ");
      }
 }

}

7.题目:输入一行字符,分别统计出其中英文字母、空格、
数字和其它字符的个数。
package 字符串;

import java.util.Scanner;

public class Str7 {

 public static void main(String[] args) {
 Scanner input=new Scanner(System.in);
 System.out.println("请输入一串字符:"+"\n");
     String s1=new String();
     s1=input.nextLine();
     int countZiMu=0,countNum=0,countBlank=0,countOther=0;
     for(int i=0;i<s1.length();i++){
      if((s1.charAt(i)>=65&&s1.charAt(i)<=91)||(s1.charAt(i)>=97&&s1.charAt(i)<=113)){
       countZiMu++;
      }
      else if(s1.charAt(i)>=48&&s1.charAt(i)<=58){
       countNum++;
      }
      else if(s1.charAt(i)==' '){
       countBlank++;
      }
      else {
       countOther++;
      }
     }
     System.out.println("字符串为:"+s1);
     System.out.println("字母个数是:"+countZiMu);
     System.out.println("数字个数是:"+countNum);
     System.out.println("空格个数是:"+countBlank);
     System.out.println("其他符号个数是:"+countOther);
    
 }

}

8、 编写一个截取字符串的函数,输入为一个字符串和字节数,
输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,
输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
package 字符串;

public class Str8 {

 public static void JieQuString(String string,int ByteNum){
    int length=string.length();
    byte Byte[]=string.getBytes();
    if(ByteNum>length){
     ByteNum=length;
    }
    if(Byte[ByteNum]<0){
     String s1=new String(Byte,0,--ByteNum);
     System.out.println("截取后:"+s1);
    }
    else{
     String s1=new String(Byte);
     System.out.println("截取后:"+s1);
    }
 }
 public static void main(String[] args) {
 String s1="我ABC你";
 JieQuString(s1,6);
 System.out.println();
 }

}

9、给你一组字符如{1,3,4,7,2,1,1,5,2},让你输出里面出现次数最多且数值最大的一个,出现几次??
package 字符串;
public class Str9 {
    public static int  DiGui(int x[],int a,int b){
     int count=0;
     for(int m=a;m<b;m++){
        if(x[a]==x[m+1]){
         count=1;
             }
        }
   return count;
    }
 public static void main(String[] args) {
  int []s={1,3,4,7,2,1,1,5,2};
  int Num[]={1,1,1,1,1,1,1,1,1};
  int length=s.length;
  for(int j=length-1;j>=0;j--)
  {
   if(DiGui(s,j,length-1)!=1){
  for(int i=j-1;i>=0;i--){
   if(s[j]==s[i]){
    Num[s[j]]++;
   }
  }
  }
  }
  for(int m=0;m<s.length;m++){
   System.out.println(s[m]+"的个数是:"+Num[s[m]]);
  }
  
 }
 

}

0 0