一、String類java
(1)概述:數組
String類表明字符串,字符串是常量,建立以後不能更改,一旦這個字符串肯定了,就會在內存中(堆中的常量池)生成這個字符串,字符串自己不能改變,但變量的地址是可以改變的,字符串的本質是一個字符的數組。oracle
(2)字符串的構建app
字符串中有大量的的重載構造方法,經過String類的構造方法能夠完成字符穿的構建,還能夠經過雙引號的方式進行建立對象ui
二者的是否相同?3d
package com.oracle.demo02; public class Demo02 { public static void main(String[] args) { String str1="aaabbb"; String str2=new String("aaabbb"); System.out.println(str1==str2); System.out.println(str1.equals(str2)); } }
str1建立在內存中只有一個對象code
str2建立在內存中有兩個對象,一個 new的對象在堆中,一個字符串自己對象,在字符串常量池中對象
(3)String構造方法blog
-------------------String()初始化一個新建立的String對象,表示一個空字符序列索引
例如:String s1 = new String(); //建立String對象,字符串中沒有內容
------------------- String(byte[ ] bytes)經過平臺使用的默認字符解碼指定byte數組,構建新的String
例如:byte[] bys = new byte[]{97,98,99,100};
String s2 = new String(bys);
--------------------String(byte[ ] bytes int offset ,int length )經過平臺使用的默認字符解碼指定byte子數組,構建新的String
例如:String s3 = new String(bys, 1, 3); //建立String對象,把一部分數組元素做爲字符串的內容,參數offset爲數組元素的起始索引位置,參數length爲要幾個元素
--------------------String(char[ ] values) 分配一個新的 String
,使其表示字符數組參數中當前包含的字符序列。
例如:
char[] chs = new char[]{’a’,’b’,’c’,’d’,’e’};
String s4 = new String(chs); //建立String對象,把數組元素做爲字符串的內容
--------------------String(char[] value, int offset, int count)
分配一個新的 String
,它包含取自字符數組參數一個子數組的字符。
例如:
String s5 = new String(chs, 0, 3);//建立String對象,把一部分數組元素做爲字符串的內容,參數offset爲數組元素的起始索引位置,參數count爲要幾個元素
(4)String類的方法查找
---------------length()返回字符串的長度
String aaa="abcdefgrthajnsdjkcv"; int b=aaa.length(); System.out.println(b);
----------------------獲取部分字符串substring(int beginindex)或者substring(int beginIndex , int endIndex)
---------------------判斷是否以xxx爲開頭starsWith(xxx)返回值爲true或false
----------------------判斷是否以xxx爲結尾endsWith(xxx)返回值爲true或false
----------------------判斷字符串是否包含另外一個字符contains( char s)判斷是否包含指定字符串,包含返回true,不包含返回false
String str = "abcde"; int index = str.indexOf(「bcd」); //判斷是否包含指定字符串,包含則返回第一次出現該字符串的索引,不包含則返回-1 boolean b2 = str.contains("bcd");//判斷是否包含指定字符串,包含返回true,不包含返回false
----------------------- 將字符串轉成一個字符數組。或者字節數組。.getBytes()轉換成一個數組。toCharArray()轉換成一個字符數組
String str = "abcde"; char[] chs = str.toCharArray(); byte[] bytes = str.getBytes();
-------------------------- 判斷兩個字符串中的內容是否相同equals()
--------------------------判斷兩個String是否相等,不考慮大小equalsIgnoreCase()
String str = "abcde"; String str2 = "abcde"; String str3 = "hello"; boolean b1 = str.equals(str2); boolean b2 = str.e/quals(str3);
---------------------------------獲取該字符串的內容toString()
public class Demo02 { public static void main(String[] args) { String str = new String("hello"); System.out.println( str.toString() ); System.out.println(str); } }
還有:
l 判斷該字符串的內容是否爲空的字符串
l 獲取給定的字符,在該字符串中第一次出現的位置
l 獲取該字符串中指定位置上的字符
l 把該字符串轉換成 小寫字符串
l 把該字符串轉換成 大寫字符串
l 在該字符串中,將給定的舊字符,用新字符替換
l 在該字符串中, 將給定的舊字符串,用新字符串替換
l 去除字符串兩端空格,中間的不會去除,返回一個新字符串
public class Demo03 { public static void main(String[] args) { String str="hellojavanihaojava.txt"; //求字符串長度 System.out.println(str.length()); //截取字符串 System.out.println(str.substring(3)); System.out.println(str.substring(3,5)); //判斷前綴 System.out.println(str.startsWith("b")); //判斷結尾 System.out.println(str.endsWith(".txt")); //判斷一個字符串中是否包含另外一個字符串 System.out.println(str.contains("java")); //返回一個字符串在另外一個字符串中第一次出現的索引值 //若是不存在該字符串則返回-1 System.out.println(str.indexOf("5")); String str1="nihaojava"; //將字符串轉爲字節數組 byte[] b1=str1.getBytes(); for(int i=0;i<b1.length;i++){ System.out.print(b1[i]+" "); } //將字符串轉爲字符數組 char[] c1=str1.toCharArray(); for(int j=0;j<c1.length;j++){ System.out.print(c1[j]+" "); } //判斷兩個字符串是否內容相同(忽略大小寫) System.out.println(str1.equalsIgnoreCase("NiHaojava")); } }
題目一:獲取指定字符串中,大寫字母、小寫字母、數字的個數。
package demo01; public class Demo03 { public static void main(String[] args) { String str="ADSFGbaersg1123125337"; int bigCount = 0; //大寫字母的個數 int smallCount = 0; //小寫字母的個數 int numberCount = 0; //數字的個數 for (int i=0; i < str.length(); i++) { char ch = str.charAt(i); //獲取指定位置上的字符 if (ch>='A' && ch<='Z') { bigCount++; } else if (ch>='a' && ch<='z') { smallCount++; } else if (ch>='0' && ch<='9') { numberCount++; } } System.out.println("大寫字母個數:"+bigCount); System.out.println("小寫字母個數:"+smallCount); System.out.println("數字個數:"+numberCount); } }
l 題目二:將字符串中,第一個字母轉換成大寫,其餘字母轉換成小寫,並打印改變後的字符串。
package demo01; public class Demo04 { public static void main(String[] args) { String str="aA"; //獲取第一部分爲字符串 String start = str.substring(0,1); //獲取第二部分爲字符串 String end = str.substring(1); //把第一部分字符串轉換成大寫字母,把第二部分字符串轉換成小寫字母 String big = start.toUpperCase(); String small = end.toLowerCase(); //把兩部分字符串鏈接在一塊兒,獲得一個完整的字符串 System.out.println(big+small); } }
l 題目三:查詢大字符串中,出現指定小字符串的次數。如「hellojava,nihaojava,javazhenbang」中查詢出現「java」的次數。
public static int getCount(String big, String small){ int count = 0; //出現小串的次數 int index = -1;//出現小串的位置 /* while的循環條件三步驟: 步驟一. big.indexOf(small) 獲取小串在大串中出現的位置 步驟二. 把小串出現的位置,賦值給變量index 步驟三. 判斷出現的位置是否爲-1, 若是位置等於-1,說明大串中已經查詢不到小串了;若是位置不等於-1,那麼,進行循環,完成次數累加與修改大串的操做 */ while ((index = big.indexOf(small)) != -1 ){ count++;//出現次數+1 //更改大串內容 big = big.substring(index+1); } return count; }
練習2
用代碼演示String類中的如下方法的用法
(1)boolean isEmpty(): 判斷字符串是否是空串,若是是空的就返回true
(2)char charAt(int index): 返回索引上的字符
(3)String toLowerCase(): 字符串轉成小寫
(4)String toUpperCase(): 字符串轉成大寫
(5)String replace(char oldChar, char newChar): 將字符串中的老字符,替換爲新字符
(6)String repalce(String old, String newstr): 將字符串中的老字符串,替換爲新字符串
(7)String trim(): 去掉字符串兩端空格
public static void main(String[] args) { //(1)boolean isEmpty(): 判斷字符串是否是空串,若是是空的就返回true String str1=new String(); boolean a=str1.isEmpty(); System.out.println(a); //(2)char charAt(int index): 返回索引上的字符 String str2="abcde"; char b=str2.charAt(2); System.out.println(b); //(3)String toLowerCase(): 字符串轉成小寫 String str3="ABCDEFG"; String c=str3.toLowerCase(); System.out.println(c); //(4)String toUpperCase(): 字符串轉成大寫 System.out.println(c.toUpperCase()); //(5)String repalce(char oldChar, char newChar): 將字符串中的老字符,替換爲新字符 String str4="abc"; String d=c.replace("b","s"); System.out.println(d); //(6)String repalce(String old, String newstr): 將字符串中的老字符串,替換爲新字符串 String e=d.replace(d, "falg"); System.out.println(e); //(7)String trim(): 去掉字符串兩端空格 String str5=" ffff "; System.out.println(str5); String f=str5.trim(); System.out.println(f); }//main }/
二、字符串緩衝區
字符串緩衝區支持可變的字符串,
StringBuffer又稱爲可變字符序列,它是一個相似於 String 的字符串緩衝區,經過某些方法調用能夠改變該序列的長度和內容。
(1)StringBuffer類
StringBuffer方法的使用:
-----------------append():將指定字符串添加到此字符序列
----------------delete(int start,int end)刪除從start到end的字符
-----------------insert(int offset ,String str)將str插入該字符串中
-----------------replace(int start ,int end .String str)使用str替換該字符串中從start到end的字符
-----------------reverse()將字符串使用反序取代
-----------------toString()返回此序列中數據的字符串表現形式
建立一個字符串緩衝區對象。用於存儲數據。 StringBuffer sb = new StringBuffer(); sb.append("haha"); //添加字符串 sb.insert(2, "it");//在指定位置插入 sb.delete(1, 4);//刪除 sb.replace(1, 4, "cast");//替換指定範圍內的內容 String str = sb.toString();
練習:int[] arr = {34,12,89,68};將一個int[]中元素轉成字符串 格式 [34,12,89,68]
public static String toString_2(int[] arr) { StringBuffer sb = new StringBuffer(); sb.append("["); for (int i = 0; i < arr.length; i++) { if(i!=arr.length-1){ sb.append(arr[i]+","); }else{ sb.append(arr[i]+"]"); } } return sb.toString(); }
StringBuilder類它也是一個可變的字符序列它比 StringBuffer 要快。