您的位置:首页 > 职场人生

黑马程序员--String类--

2014-06-14 16:08 218 查看
------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! ----------

String类:
由多个字符组成的一串数据。
底层是一个字符数组。
 
构造方法:
A:String();//空字符串构造方法
B:String(byte[] bys) ;//把一个字节数组转换成字符串
C:String(byte[] bys,int index,int count);//把一个字节数组的一部分转成字符串。count:表示计数,个数的意思。
D:String(char[] chs);//把一个字符数组转成字符串。   
E:String(char[] chs,int index,int count);//把一个字符数组的一部分转成字符串。
F:String(String str);//有参构造方法
G:String s = "hello";//给一个字符串赋值
 
(3)成员方法:
A:判断功能
boolean equals(Object obj);//比较字符串的内容是否相同
boolean equalsIgnoreCase(String str);//比较字符串的内容是否相同,忽略大小写 boolean contains(String str);//字符串对象中是否包含给定的字符串。
boolean startsWith(String str);//是否以指定的字符串开头。
boolean endsWith(String str);//是否以指定的字符串结束。
boolean isEmpty()//是否为空。""还是null。
B:获取功能
int length();// 返回字符串的字符个数。也就是长度。
char charAt(int index);// 返回指定索引处的字符。
int indexOf(int ch);//返回指定字符在字符串中的第一次出现的索引。
int indexOf(String str);//返回指定字符串在字符串中的第一次出现的索引。
int indexOf(int ch,int formIndex);// 返回从指定位置开始的指定字符在字符串中的第一次出现的索引。
int indexOf(String str,int formIndex);//返回从指定位置开始的指定字符串在字符串中的第一次出现的索引。
String substring(int start);//截取字符串。从start开始到末尾。
String substring(int start,int end);// 截取字符串。从start到end。(包左不包右。)
C:转换功能
byte[] getBytes();//把字符串转换成字节数组。
char[] toCharArray();//把字符串转换成字符数组。
static String copyValueOf(char[] chs);//把字符数组转换成字符串。
static String valueOf(char[] chs);//把字符数组转换成字符串。
static String valueOf(int i);// 把一个int类型的数据转换成字符串。
String toLowerCase();//把字符串转成小写
String toUpper();//把字符串转成大写
String concat(String str);//字符串的拼接。
D:其他功能
a:替换功能
String replace(char old,char nrw);//用给定的new字符把字符串中的old字符替换。
String replace(String old,String new);//用给定的new字符串把字符串中的old字符串替换。
b:去除前后空格
String trim();//去除字符串前后的空格。
c:按照字典顺序比较
int compareTo(String str);//按字典顺序比较两个字符串。
 
案例:
A:模拟用户登录
分析:
a:有已知的用户名和密码。
String username = "wangzhiyong";
String password = "wangzhiyong";
b:键盘录入用户名和密码。
   用Scanner实现。
c:比较用if语句实现。
d:给三次机会,如果三次不成功。则吞卡。(退出)
 代码实现:
   public class StringTest { 
          public static void main(String[] args) {
                   // 已知的用户名和密码。
                  String username = "wangzhiyong";
                  String password = "wangzhiyong";
 
                   for (int x = 0; x < 3; x++) {
                    // x=0,1,2
                  // 键盘录入用户名和密码。
                  Scanner sc = new Scanner(System.in);
                               System.out.println("请输入用户名:");
                               String name = sc.nextLine();
                              System.out.println("请输入密码:");
                    String pwd = sc.nextLine();
 
                            // 比较用if语句实现。
                            if (username.equals(name) && password.equals(pwd)) {
                                     System.out.println("登录成功");
                                        break;
                            } else {
                                // 2,1,0
                               if ((2 - x) == 0) {
                                    System.out.println("没有机会了,请和有关方面联系");
                              } else {
                                    System.out.println("登录失败,你还有" + (2 - x) + "次机会");
                                       
}
          
                                      }
                            }
               }
     }
 
            
B:遍历字符串
分析:
 a:定义一个字符串:“hallowolld”
 b:依次获取每一个字符
代码体现: 
   public class StringTest{
          public static void main(String[] args){
          //定义一个字符串
          String s = "hellowold";
          //依次获取每一个字符
          int length = s.length();
          for (int x = 0; x<length;x++){
          system.out.println(s.charAt(x));
            }
        } 
     }
    
C:统计字符串中大写字母,小写字母以及数字字符出现的次数
分析:
a:定义一个字符串对象。(可以改进为键盘录入)
b:定义三个统计变量  

    bigCount=0
    smallCount=0
    numberCount=0
c:遍历字符串,获取得到每一个字符。
d:判断该字符在哪个范围。
 
char ch = '?';
 
如果在大写:bigCount++
ch>='A' &&ch<='Z'
 
如果在小写:smallCount++
ch>='a' &&ch<='z'
 
如果在数字:numberCount++
ch>='0' &&ch<='9'
e:输出统计变量即可。
代码体现:
     public class StringTest2 {
                public static void main(String[] args) {
                             // 定义一个字符串对象。(可以改进为键盘录入)
                             String s = "hello1234567WORLDJava";
 
                             // 定义三个统计变量。
                             int bigCount = 0; 
                             int smallCount = 0;
                             int numberCount = 0;
 
                            // 遍历字符串,获取得到每一个字符。
                            for (int x = 0; x < s.length(); x++) {
                                
char ch = s.charAt(x);
 
                                 // 判断该字符在哪个范围。
                                 if (ch >= 'A' && ch <= 'Z') {
                                        
bigCount++;
                                 } else if (ch >= 'a' && ch <= 'z') {
                                       
smallCount++;
                                } else {
                                       
numberCount++;
                              
}
                            }

                            //输出统计变量即可。
                            System.out.println("大写字母:"+bigCount);
                            System.out.println("小写字母:"+smallCount);
                           System.out.println("数字字符:"+numberCount);
                }
      }
 
D:把一个字符串的首字母变成大写,其他的全部小写
分析:
a:定义字符串。
b:截取出首字母。 
     截取出其他字母。
c:截取出首字母。 变大写
        截取出其他字母。变小写
d:拼接。
代码实现:
  public class StringTest {
        public static void main(String[] args){
               //定义一个字符串。
               String s = "iloveYOU";
               //截取出首字母,截取出其他字母。
               String s1 = s.substring(0,1);
               String s2 = s.substring(1);
               //拼接。
               String s3 = s1.toUpperCase().concat(s2.toLowerCase());
               system.out.println(s30;
         }
   }
 
E:统计大串中小串出现的次数
   获取一个字符串中指定子串出的次数。
   比如说"hanbasdnbafllgnbahjnbakqqqqlnbaxi"在这个字符串中,
   多有个nba?
分析:
a:定义两个字符串,一个大串,一个小串。
b:定义一个统计变量。
c:在大串中查找一次小串:
 返回-1,直接返回统计变量。
 返回不是-1,统计变量++。
 d:把大串查过的部分截取掉,把值赋值给大串,返回C继续。
     由于次数不知道多少次,所以,用while循环。条件是:不是-1.
代码实现:
       public class StringTest {
                 public static void main(String[] args) {
                         // 定义两个字符串,一个大串,一个小串。
                        String maxString = "hanbasdnbafllgnbahjnbakqqqqlnbaxi";
                         String minString = "nba";
 
                            int count = getCount(maxString, minString);
                                  System.out.println(count);
                    }
 
                 public static int getCount(String maxString, StringminString) { 
                             int count = 0;
                             int index = 0;
                           // 查找,赋值,和判断放到一条语句上了。
 

                          while ((index = maxString.indexOf(minString)) !=-1){
                                                                            
                                              count++;
                               // 重新赋值的动作
                            
maxString = maxString.substring(index +minString.lengt());
                         }
 
                            return count;
                }
     }
 
 
F:对字符串中的数据按照自然排序:
   举例:给出:"bagecdf"
   要求结果:"abcdefg"
 分析:
 a:定义一个字符串。
 b:把字符串转换成字符数组。
 c:对字符数组排序。
 d:把排序后的数组中的数据拼接成一个字符串即可。
代码体现:
    public class StringTest2 {
                 public static void main(String[] args) {
                // 定义一个字符串。
                String s = "bagecdf";
 
              // 把字符串转换成字符数组。
             char[] chs = s.toCharArray();
 
             // 对字符数组排序
            sort(chs);
 
           // 把排序后的数组中的数据拼接成一个字符串即可。
             String result = "";
             for (int x = 0; x < chs.length; x++) {
                   
result += chs[x];
              }
                   System.out.println(result);
           }
 
            private static void sort(char[] chs) {
                       for (int x = 0; x < chs.length - 1; x++) {
                               for (int y = 0; y < chs.length - 1 - x; y            ++) {
                                     
if (chs[y] > chs[y + 1]) {
                                         
char ch = chs[y];
                                       
 chs[y] = chs[y + 1];
                                      
  chs[y + 1] = ch;
                                    
}
                             
}
                       }
         }
   }
 
StringBuffer和StringBuilder(功能完全相同):
(1)字符缓冲区类。
StringBuffer:线程安全,效率低。
StringBuilder:线程不安全,效率高。
(2)构造方法:
A:StringBuffer sb = new StringBuffer();
B:StringBuffer sb = new StringBuffer(20);
C:StringBuffer sb = new StringBuffer("hello");
(3)成员方法:
A:添加功能:
      append();
      insert();
B:删除功能:
     delete();
    deleteCharAt();
C:截取功能:
    subString();
D:替换功能:
   replace();
E:反转功能:
   reverse();
代码体现:
import java.util.Scanner;
 
/*
 * 键盘录入一个字符串,控制台输出其反转后的数据:
 * 举例:abc
 * 结果:cba
 * 
 * 方式1:
 * 
把字符串倒序输出。
 * 
 * 方式2:
 * 
定义一个新的空字符串,把原始字符串变成字符数组,倒序遍历的时候拼接到新的字符串上。
 * 
 * 方式3:
 * 
String -- StringBuffer -- String
 */
public class StringDemo {
           public static void main(String[] args) {
           Scanner sc = new Scanner(System.in);
                     System.out.println("请输入一个字符串:");
           String line = sc.nextLine();
 
           // 方式1: 把字符串倒序输出。
           for (int x = line.length() - 1; x >= 0; x--) {
                
System.out.print(line.charAt(x));
            }
                 System.out.println();
 
           // 方式2:定义一个新的空字符串,把原始字符串变成字符数组,倒序遍历的时候拼接到新的字符串上。
           String result = "";
           char[] chs = line.toCharArray();
          for (int x = chs.length - 1; x >= 0; x--) {
               
result += line.charAt(x);
           }
                System.out.println(result);

         //方式3:String -- StringBuffer -- String
        StringBuffer sb = new StringBuffer(line);
                 sb.reverse();
                 String str = new String(sb);
                           System.out.println(str);
          }
}
------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! ----------
详细请查看:http://edu.csdn.net 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: