Java常用類
String類中的其他功能:
替換功能:
public String replace(char oldChar,char newChar):將字符串中某一個字符用新的字符替換
public String replace(String oldStr,String newStr):將字符串中某一個子字符串用新 的字符串去替代
去除字符串兩端空格:
public String trim()
兩個字符串進行比較:
public int compareTo(String anotherString) 是Comparable接口中的方法(該接口可以實現一個自然排序)
public class StringDemo {
public static void main(String[] args) {
//定義字符串
String s1 = "helloworld" ;
//替換功能
//public String replace(char oldChar,char newChar):將字符串中某一個字符用新的字符替換
//String s2 = s1.replace('l', 'k') ;
//System.out.println("s:"+s2);
//public String replace(String oldStr,String newStr):將字符串中某一個子字符串用新 的字符串去替代
String s3 = s1.replaceAll("owo", "ak47") ;
System.out.println("s3:"+s3);
System.out.println("------------------");
String s4 = " hello world " ;
System.out.println("s4:"+"----"+s4+"----");
//public String trim()
String s5 = s4.trim() ;
System.out.println("s5:"+"----"+s5+"----");
//public int compareTo(String anotherString)
String s6 = "hello" ;
String s7 = "hello" ;
String s8 = "abc" ;
System.out.println("compareTo():"+s6.compareTo(s7));
System.out.println("compareTo():"+s6.compareTo(s8));
}
}
//定義字符串
String s1 = "helloworld" ;
//替換功能
//public String replace(char oldChar,char newChar):將字符串中某一個字符用新的字符替換
//String s2 = s1.replace('l', 'k') ;
//System.out.println("s:"+s2);
//public String replace(String oldStr,String newStr):將字符串中某一個子字符串用新 的字符串去替代
String s3 = s1.replaceAll("owo", "ak47") ;
System.out.println("s3:"+s3);
System.out.println("------------------");
String s4 = " hello world " ;
System.out.println("s4:"+"----"+s4+"----");
//public String trim()
String s5 = s4.trim() ;
System.out.println("s5:"+"----"+s5+"----");
//public int compareTo(String anotherString)
String s6 = "hello" ;
String s7 = "hello" ;
String s8 = "abc" ;
System.out.println("compareTo():"+s6.compareTo(s7));
System.out.println("compareTo():"+s6.compareTo(s8));
}
}
例;String一些方法的使用
public class StringTest {
public static void main(String[] args) {
//創建鍵盤錄入對象
Scanner sc = new Scanner(System.in) ;
//錄入並接收數據
System.out.println("請您輸入一個字符串:");
String line = sc.nextLine() ;
//將接收到的字符串截取
String s1 = line.substring(0, 1) ;
//將得到s1字符串轉換成小寫
String s2 = s1.toLowerCase() ;
//在將line字符串的其餘字母字符截取出來
String s3 = line.substring(1) ;
//轉換成大寫
String s4 = s3.toUpperCase() ;
//s2和s4作品接
String result = s2.concat(s4) ;
System.out.println("result:"+result);
System.out.println("------------------------------");
//鏈式編程
String result2 = line.substring(0, 1).toLowerCase().concat(line.substring(1).toUpperCase()) ;
System.out.println("result2:"+result);
}
}
//創建鍵盤錄入對象
Scanner sc = new Scanner(System.in) ;
//錄入並接收數據
System.out.println("請您輸入一個字符串:");
String line = sc.nextLine() ;
//將接收到的字符串截取
String s1 = line.substring(0, 1) ;
//將得到s1字符串轉換成小寫
String s2 = s1.toLowerCase() ;
//在將line字符串的其餘字母字符截取出來
String s3 = line.substring(1) ;
//轉換成大寫
String s4 = s3.toUpperCase() ;
//s2和s4作品接
String result = s2.concat(s4) ;
System.out.println("result:"+result);
System.out.println("------------------------------");
//鏈式編程
String result2 = line.substring(0, 1).toLowerCase().concat(line.substring(1).toUpperCase()) ;
System.out.println("result2:"+result);
}
}
char[] toCharArray():將字符串轉換成 字符數組 (開發中經常使用)
字符串拼接:
例:
import java.util.Scanner;
/**
* 需求:鍵盤錄入一個字符串,將字符串進行反轉
*
* 舉例:
* "abc"--->"cba"
*
* 分析:
* 1)創建鍵盤錄入對象,錄入並接收一個字符串
* 2)定義空字符串
* 3)可以將字符串轉換成字符數組:toCharArray();
* 4)遍歷字符數組,倒着遍歷
* 5)遍歷之後獲取到字符串中的每一個字符,然後使用空串進行拼接
* 6)輸出即可!
* @author Apple
*/
public class StringTest3 {
public static void main(String[] args) {
//創建鍵盤錄入對象
Scanner sc = new Scanner(System.in) ;
//錄入數據並接收數據
System.out.println("請您輸入一個字符串:");
String line = sc.nextLine() ;
/* //定義一個空字符串
String result = "" ;
//將字符串轉換成字符數組
char[] chs = line.toCharArray() ;
//遍歷字符數組,倒着遍歷
for(int x = chs.length-1; x >=0 ; x --){
//獲取到每一個字符
result+= chs[x] ;
}*/
String result = myReverse(line) ;
//輸出
System.out.println("result:"+result);
}
//寫一個功能實現
public static String myReverse(String s){
//定義空字符串
String result = "" ;
//將字符串字符數組
char[] chs = s.toCharArray() ;
//遍歷字符數組
for(int x = chs.length -1 ; x >=0; x --){
//拼接每一個字符
result+= chs[x];
}
return result ;
}
}
/**
* 需求:鍵盤錄入一個字符串,將字符串進行反轉
*
* 舉例:
* "abc"--->"cba"
*
* 分析:
* 1)創建鍵盤錄入對象,錄入並接收一個字符串
* 2)定義空字符串
* 3)可以將字符串轉換成字符數組:toCharArray();
* 4)遍歷字符數組,倒着遍歷
* 5)遍歷之後獲取到字符串中的每一個字符,然後使用空串進行拼接
* 6)輸出即可!
* @author Apple
*/
public class StringTest3 {
public static void main(String[] args) {
//創建鍵盤錄入對象
Scanner sc = new Scanner(System.in) ;
//錄入數據並接收數據
System.out.println("請您輸入一個字符串:");
String line = sc.nextLine() ;
/* //定義一個空字符串
String result = "" ;
//將字符串轉換成字符數組
char[] chs = line.toCharArray() ;
//遍歷字符數組,倒着遍歷
for(int x = chs.length-1; x >=0 ; x --){
//獲取到每一個字符
result+= chs[x] ;
}*/
String result = myReverse(line) ;
//輸出
System.out.println("result:"+result);
}
//寫一個功能實現
public static String myReverse(String s){
//定義空字符串
String result = "" ;
//將字符串字符數組
char[] chs = s.toCharArray() ;
//遍歷字符數組
for(int x = chs.length -1 ; x >=0; x --){
//拼接每一個字符
result+= chs[x];
}
return result ;
}
}
StringBuffer:
1.StringBuffer的構造方法:
public StringBuffer ()構造一個其中不帶字符的字符串緩衝區,其初始容量爲 16 個字符
public StringBuffer(int capacity)構造一個不帶字符,但具有指定初始容量的字符串緩衝區
public StringBuffer(String str)構造一個字符串緩衝區,並將其內容初始化爲指定的字符串內容。該字符串的初始 容量爲 16 加上字符串參數的長度。
2.常用的功能:
public int length():獲取字符串長度數
public int capacity():獲取當前字符串緩衝區的容量
public class StringBufferDemo {
public static void main(String[] args) {
//StringBuffer sb = "hello" ;
//String s = "hello" ;
//StringBuffer sb = s ;
//public StringBuffer ()構造一個其中不帶字符的字符串緩衝區,其初始容量爲 16 個字符(構造方法)
//創建一個字符串緩衝區對象
StringBuffer sb = new StringBuffer() ;
System.out.println("sb.length:"+sb.length());
System.out.println("sb.capacity:"+sb.capacity());//16
System.out.println("----------------------------");
// public StringBuffer(int capacity)構造一個不帶字符,但具有指定初始容量的字符串緩衝區
StringBuffer sb2 = new StringBuffer(50) ;
System.out.println("sb2.length:"+sb2.length());
System.out.println("sb2.capacity:"+sb2.capacity());//50
System.out.println("----------------------------");
StringBuffer sb3 = new StringBuffer("hello") ;
System.out.println("sb3.length:"+sb3.length());
System.out.println("sb3.capacity:"+sb3.capacity());//默認:初始容量16 + 當前字符串長度
}
}
//StringBuffer sb = "hello" ;
//String s = "hello" ;
//StringBuffer sb = s ;
//public StringBuffer ()構造一個其中不帶字符的字符串緩衝區,其初始容量爲 16 個字符(構造方法)
//創建一個字符串緩衝區對象
StringBuffer sb = new StringBuffer() ;
System.out.println("sb.length:"+sb.length());
System.out.println("sb.capacity:"+sb.capacity());//16
System.out.println("----------------------------");
// public StringBuffer(int capacity)構造一個不帶字符,但具有指定初始容量的字符串緩衝區
StringBuffer sb2 = new StringBuffer(50) ;
System.out.println("sb2.length:"+sb2.length());
System.out.println("sb2.capacity:"+sb2.capacity());//50
System.out.println("----------------------------");
StringBuffer sb3 = new StringBuffer("hello") ;
System.out.println("sb3.length:"+sb3.length());
System.out.println("sb3.capacity:"+sb3.capacity());//默認:初始容量16 + 當前字符串長度
}
}
StringBuffer中的和添加有關的方法
public StringBuffer append(int/String/char/boolean/double/float....):當前這個方法追加,給緩衝中追加數據,返回字符串緩衝區本身(經常使用的)
public StringBuffer insert(int offset,String str):在某一個位置處去插入str這個字符串,返回字符串緩衝區本身
public class StringBufferDemo2 {
public static void main(String[] args) {
//創建一個字符串緩衝區對象
StringBuffer sb = new StringBuffer() ;
//追加數據
/*sb.append("hello") ;
sb.append(true) ;
sb.append(13.45) ;
sb.append('A') ;
sb.append(12.56F);*/
//鏈式編程
sb.append("hello").append(true).append(13.45).append('A').append(12.56F);
//public StringBuffer insert(int offset,String str):在某一個位置處去插入str這個字符串,返回字符串緩衝區本身
sb.insert(5, "world") ;
//輸出
System.out.println("sb:"+sb);
}
}
//創建一個字符串緩衝區對象
StringBuffer sb = new StringBuffer() ;
//追加數據
/*sb.append("hello") ;
sb.append(true) ;
sb.append(13.45) ;
sb.append('A') ;
sb.append(12.56F);*/
//鏈式編程
sb.append("hello").append(true).append(13.45).append('A').append(12.56F);
//public StringBuffer insert(int offset,String str):在某一個位置處去插入str這個字符串,返回字符串緩衝區本身
sb.insert(5, "world") ;
//輸出
System.out.println("sb:"+sb);
}
}
StringBuffer的刪除功能:
public StringBuffer deleteCharAt(int index):刪除指定位置處的字符,返回的是字符串緩衝區本身!
public StringBuffer delete(int start,int end):刪除從指定位置開始到指定位置結束的字符,返回的是字符串緩衝區本身!
public class StringBufferDemo3 {
public static void main(String[] args) {
//創建字符串緩衝區對象
StringBuffer sb = new StringBuffer() ;
//給緩衝區追加數據
sb.append("hello") ;
sb.append("world") ;
sb.append("java") ;
/*public StringBuffer deleteCharAt(int index)
需求:要刪除當前緩衝區中'e'這個字符
sb.deleteCharAt(1) ;
需求:要刪除當前緩衝區中第一個'l'這個字符
sb.deleteCharAt(1) ;*/
//public StringBuffer delete(int start,int end)
//sb.delete(5, 9) ;
//從0索引開始,當前緩衝的字符串全部刪除掉
sb.delete(0, sb.length()) ;
//輸出
System.out.println("sb:"+sb);
}
}
//創建字符串緩衝區對象
StringBuffer sb = new StringBuffer() ;
//給緩衝區追加數據
sb.append("hello") ;
sb.append("world") ;
sb.append("java") ;
/*public StringBuffer deleteCharAt(int index)
需求:要刪除當前緩衝區中'e'這個字符
sb.deleteCharAt(1) ;
需求:要刪除當前緩衝區中第一個'l'這個字符
sb.deleteCharAt(1) ;*/
//public StringBuffer delete(int start,int end)
//sb.delete(5, 9) ;
//從0索引開始,當前緩衝的字符串全部刪除掉
sb.delete(0, sb.length()) ;
//輸出
System.out.println("sb:"+sb);
}
}
StringBuffer的反轉功能:
public StringBuffer reverse():將此字符串中的字符序列直接反轉
import java.util.Scanner;
public class StringBufferDemo4 {
public static void main(String[] args) {
//創建鍵盤錄入對象
Scanner sc = new Scanner(System.in) ;
//錄入並接收數據
System.out.println("請您輸入一個字符串:");
String line = sc.nextLine() ;
//可以創建字符串緩衝區對象
StringBuffer sb = new StringBuffer(line) ;
//public String toString():現在的數據類型StirngBuffer類型,需要將StringBuffer類型轉換String
//反轉功能
String result = sb.reverse().toString() ;
System.out.println("result:"+result);
}
}
//創建鍵盤錄入對象
Scanner sc = new Scanner(System.in) ;
//錄入並接收數據
System.out.println("請您輸入一個字符串:");
String line = sc.nextLine() ;
//可以創建字符串緩衝區對象
StringBuffer sb = new StringBuffer(line) ;
//public String toString():現在的數據類型StirngBuffer類型,需要將StringBuffer類型轉換String
//反轉功能
String result = sb.reverse().toString() ;
System.out.println("result:"+result);
}
}
StringBuffer的替換功能:
public StringBuffer replace(int start, int end,String str)
從指定位置開始到指定位置結束的字符用str子字符串去替代
public class StringBufferDemo5 {
public static void main(String[] args) {
//創建字符串緩衝區對象
StringBuffer sb = new StringBuffer() ;
//給緩衝添加數據
sb.append("hello") ;
sb.append("world") ;
sb.append("java") ;
//public StringBuffer replace(int start, int end,String str)
sb.replace(5, 10, "節日快樂") ;
System.out.println("sb:"+sb);
}
}
//創建字符串緩衝區對象
StringBuffer sb = new StringBuffer() ;
//給緩衝添加數據
sb.append("hello") ;
sb.append("world") ;
sb.append("java") ;
//public StringBuffer replace(int start, int end,String str)
sb.replace(5, 10, "節日快樂") ;
System.out.println("sb:"+sb);
}
}
StringBuffer的截取功能:
public String substring(int start):從指定位置默認截取到末尾,返回值是一個新的字符串
public String substring(int start,int end):從指定位置開始截取到指定位置結束,包前不包後,返回一個新的字符串
public class StringBufferDemo6 {
public static void main(String[] args) {
//創建字符串緩衝區對象
StringBuffer sb = new StringBuffer() ;
//添加
sb.append("hello") ;
sb.append("world") ;
sb.append("java") ;
//public String substring(int start)
//String s1 = sb.substring(5) ;
//System.out.println("s1:"+s1);
//public String substring(int start,int end)
String s2 = sb.substring(5,10) ;
System.out.println("s2:"+s2);
System.out.println("sb:"+sb);
}
}
//創建字符串緩衝區對象
StringBuffer sb = new StringBuffer() ;
//添加
sb.append("hello") ;
sb.append("world") ;
sb.append("java") ;
//public String substring(int start)
//String s1 = sb.substring(5) ;
//System.out.println("s1:"+s1);
//public String substring(int start,int end)
String s2 = sb.substring(5,10) ;
System.out.println("s2:"+s2);
System.out.println("sb:"+sb);
}
}
面試題1:
String, StringBuffer, StringBuilder的區別?
String:一個不可變的字符序列,StringBuffer:和StringBuilder是可變的字符序列,在單個線程時候的時候(優先採用StringBuilder)
從線程角度考慮:
StringBuilder線程不安全,不同步,執行效率高!它比StringBuffer要快!
String和StringBuffer作爲形式參數
String類型作爲形式參數和基本數據類型作爲形式參數的效果一樣!
StringBuffer和數組的區別?
兩個共同特點:都屬於容器類型的變量
數組:只能存儲同一種數據類型的元素,數組的長度是固定的
int[] arr = {10,20,40,50,"hello"} 錯誤的
StringBuffer:字符串緩衝區,可以存儲任意類型的元素,可以不斷的去給緩衝區中追加(append),字符串緩衝區中:在內存始終返回的字符串
關於String和StringBuffer 的一些練習
類與類之間的轉換
A類型--->B類型
這裏面可能最終使用B類型裏面的功能
B類型--->A類型
有時候需要的不是B類型,所以又要將B類型-->A類型
StringBuffer--->String之間的相互轉換
public class StringBufferTest {
public static void main(String[] args) {
//String--->StringBuffer
//定義一個字符串
String s = "hello" ;
/*StringBuffer sb = "hello" ;
StringBuffer sb = s ;*/
//方式1)使用StringBuffer的構造方式:StringBuffer(String str)
//創建一個字符串緩衝區並指向這個字符串
StringBuffer sb = new StringBuffer(s) ;
System.out.println("sb:"+sb);
//方式2)創建字符串緩衝區對象,使用無參構造StringBuffer(),利用append()
StringBuffer sb2 = new StringBuffer() ;
sb2.append(s) ;
System.out.println("sb2:"+sb2);
System.out.println("--------------------");
//StringBuffer--->String
//有一個字符串緩衝區對象
StringBuffer buffer = new StringBuffer("world") ;
//1)方式1String的另一種構造方法:String(StringBuffer buffer)
String s2 = new String(buffer) ;
System.out.println("s2:"+s2);
//2)方式2:/public String toString():現在的數據類型StirngBuffer類型,需要將StringBuffer類型轉換String
String s3 = buffer.toString() ;
System.out.println("s3:"+s3);
}
}
//String--->StringBuffer
//定義一個字符串
String s = "hello" ;
/*StringBuffer sb = "hello" ;
StringBuffer sb = s ;*/
//方式1)使用StringBuffer的構造方式:StringBuffer(String str)
//創建一個字符串緩衝區並指向這個字符串
StringBuffer sb = new StringBuffer(s) ;
System.out.println("sb:"+sb);
//方式2)創建字符串緩衝區對象,使用無參構造StringBuffer(),利用append()
StringBuffer sb2 = new StringBuffer() ;
sb2.append(s) ;
System.out.println("sb2:"+sb2);
System.out.println("--------------------");
//StringBuffer--->String
//有一個字符串緩衝區對象
StringBuffer buffer = new StringBuffer("world") ;
//1)方式1String的另一種構造方法:String(StringBuffer buffer)
String s2 = new String(buffer) ;
System.out.println("s2:"+s2);
//2)方式2:/public String toString():現在的數據類型StirngBuffer類型,需要將StringBuffer類型轉換String
String s3 = buffer.toString() ;
System.out.println("s3:"+s3);
}
}
將數組拼接成一個字符串,分別使用String和StringBuffer實現(定義功能方法)
int[] arr = {11,55,33 ,44 ,22} ;
形成這樣一個字符串:[11, 55, 33, 44, 22]
分析:
1)存在一個數組,靜態初始化
2)分別使用String和StringBuffer類型去完成
public class StringBufferTest2 {
public static void main(String[] args) {
//定義一個數組,靜態初始化!
int[] arr = {11,55,33,44,22} ;
//方式1)使用String類型實現
String result = arrayToString(arr) ;
System.out.println("result:"+result);
System.out.println("------------------------");
//方式2:使用StringBuffer的append功能
String result2 = arrayToString2(arr) ;
System.out.println("result2: " + result2);
}
public static String arrayToString2(int[] arr){
//1)創建字符串緩衝區對象
StringBuffer sb = new StringBuffer() ;
//sb對象追加左中括號
sb.append("[") ;
//遍歷數組
for(int x = 0 ; x < arr.length ; x ++){
//判斷是否是最大索引
if(x==arr.length-1){
//append追加
sb.append(arr[x]);
}else{
sb.append(arr[x]).append(", ") ;
}
}
sb.append("]") ;
return sb.toString() ; //將StringBuffer--->String
}
/**
* 明確返回值類型:String
* 明確參數類型:int[] arr
*/
public static String arrayToString(int[] arr){
//定義一個空字符串
String result = "" ;
//拼接左中括號
result +="[" ;
//遍歷int數組
for(int x = 0 ; x < arr.length ; x ++){
//判斷是否最大索引
if(x==arr.length-1){
//拼接元素以及"]"
result += arr[x] ;
result += "]" ;
}else{
result += arr[x] ;
result += ", " ;
}
}
return result ;
}
}
//定義一個數組,靜態初始化!
int[] arr = {11,55,33,44,22} ;
//方式1)使用String類型實現
String result = arrayToString(arr) ;
System.out.println("result:"+result);
System.out.println("------------------------");
//方式2:使用StringBuffer的append功能
String result2 = arrayToString2(arr) ;
System.out.println("result2: " + result2);
}
public static String arrayToString2(int[] arr){
//1)創建字符串緩衝區對象
StringBuffer sb = new StringBuffer() ;
//sb對象追加左中括號
sb.append("[") ;
//遍歷數組
for(int x = 0 ; x < arr.length ; x ++){
//判斷是否是最大索引
if(x==arr.length-1){
//append追加
sb.append(arr[x]);
}else{
sb.append(arr[x]).append(", ") ;
}
}
sb.append("]") ;
return sb.toString() ; //將StringBuffer--->String
}
/**
* 明確返回值類型:String
* 明確參數類型:int[] arr
*/
public static String arrayToString(int[] arr){
//定義一個空字符串
String result = "" ;
//拼接左中括號
result +="[" ;
//遍歷int數組
for(int x = 0 ; x < arr.length ; x ++){
//判斷是否最大索引
if(x==arr.length-1){
//拼接元素以及"]"
result += arr[x] ;
result += "]" ;
}else{
result += arr[x] ;
result += ", " ;
}
}
return result ;
}
}
分別使用String和StringBuffer實現字符串的反轉
import java.util.Scanner;
public class StringBufferTest3 {
public static void main(String[] args) {
//創建鍵盤錄入對象
Scanner sc = new Scanner(System.in) ;
//錄入並接收
System.out.println("請您輸入一個字符串:");
String str = sc.nextLine() ;
//方式1:使用String類型進行拼接
String result = myReverse(str) ;
System.out.println("result:"+result);
//方式2:使用StringBuffer的reverse()功能
String result2 = myReverse2(str) ;
System.out.println("result2:"+result2);
}
//StringBuffer的rever()方法實現
public static String myReverse2(String s){
//創建字符串緩衝區對象h
/*StringBuffer sb = new StringBuffer(s) ;
//開始調用反轉功能
sb.reverse() ;
//返回
return sb.toString() ;*/
//一步完成:
return new StringBuffer(s).reverse().toString() ;
}
//String類型的方式進行反轉
public static String myReverse(String s){
//定義空串
String result = "" ;
//可以字符組其轉成字符數組
char[] chs = s.toCharArray() ;
//倒着遍歷
for(int x = chs.length-1 ; x >=0 ; x --){
//空串進行拼接
result += chs[x] ;
}
return result ;
}
}
//創建鍵盤錄入對象
Scanner sc = new Scanner(System.in) ;
//錄入並接收
System.out.println("請您輸入一個字符串:");
String str = sc.nextLine() ;
//方式1:使用String類型進行拼接
String result = myReverse(str) ;
System.out.println("result:"+result);
//方式2:使用StringBuffer的reverse()功能
String result2 = myReverse2(str) ;
System.out.println("result2:"+result2);
}
//StringBuffer的rever()方法實現
public static String myReverse2(String s){
//創建字符串緩衝區對象h
/*StringBuffer sb = new StringBuffer(s) ;
//開始調用反轉功能
sb.reverse() ;
//返回
return sb.toString() ;*/
//一步完成:
return new StringBuffer(s).reverse().toString() ;
}
//String類型的方式進行反轉
public static String myReverse(String s){
//定義空串
String result = "" ;
//可以字符組其轉成字符數組
char[] chs = s.toCharArray() ;
//倒着遍歷
for(int x = chs.length-1 ; x >=0 ; x --){
//空串進行拼接
result += chs[x] ;
}
return result ;
}
}
判斷一個字符串是否是對稱字符串
例如"abc"不是對稱字符串,"aba"、"abba"、"aaa"、"mnanm"是對稱字符串
使用(String和StringBuffer實現這個功能)
分析:
用第一個字符和倒數第一個字符相比較
用二個字符和倒數第二個字符進行比較
...
public class StringBufferTest4 {
public static void main(String[] args) {
//創建鍵盤錄入對象
Scanner sc = new Scanner(System.in) ;
//錄入並接收數據
System.out.println("請您輸入一個字符串:");
String line = sc.nextLine() ;
//方式1:String類型的轉換功能
boolean flag = isSame(line) ;
System.out.println("flag:"+flag);
//方式2:間接的使用StringBuffer的reverse()功能
boolean flag2 = isSame2(line) ;
System.out.println("flag2:"+flag2);
}
public static boolean isSame2(String s){
//直接一步
//new StringBuffer(s).reverse().toString()--->StirngBuffer--->String
return new StringBuffer(s).reverse().toString().equals(s) ;
}
/**
* 兩個明確:
* 返回值類型:boolean
* 參數類型:String s
*/
/*public static boolean isSame(String s){
//將字符串轉換成字符數組
char[] chs = s.toCharArray() ;
for(int start = 0,end = chs.length -1 ; start<=end;start++,end--){
//判斷
if(chs[start] != chs[end]){
return false ;
}
}
return true ;
}*/
public static boolean isSame(String s){
//定義一個標記:假設返回值是true
boolean flag = true ;
//需要字符串轉換成字符數組
char[] chs = s.toCharArray();
//遍歷字符數組,獲取前面索引對應的字符和後面索引的字符
for(int start = 0 ,end = chs.length -1 ; start<=end ; start++,end--){
//判斷
if(chs[start]!= chs[end]){
//修改標記
flag = false ;
break ;
}
}
return flag ;
}
}
//創建鍵盤錄入對象
Scanner sc = new Scanner(System.in) ;
//錄入並接收數據
System.out.println("請您輸入一個字符串:");
String line = sc.nextLine() ;
//方式1:String類型的轉換功能
boolean flag = isSame(line) ;
System.out.println("flag:"+flag);
//方式2:間接的使用StringBuffer的reverse()功能
boolean flag2 = isSame2(line) ;
System.out.println("flag2:"+flag2);
}
public static boolean isSame2(String s){
//直接一步
//new StringBuffer(s).reverse().toString()--->StirngBuffer--->String
return new StringBuffer(s).reverse().toString().equals(s) ;
}
/**
* 兩個明確:
* 返回值類型:boolean
* 參數類型:String s
*/
/*public static boolean isSame(String s){
//將字符串轉換成字符數組
char[] chs = s.toCharArray() ;
for(int start = 0,end = chs.length -1 ; start<=end;start++,end--){
//判斷
if(chs[start] != chs[end]){
return false ;
}
}
return true ;
}*/
public static boolean isSame(String s){
//定義一個標記:假設返回值是true
boolean flag = true ;
//需要字符串轉換成字符數組
char[] chs = s.toCharArray();
//遍歷字符數組,獲取前面索引對應的字符和後面索引的字符
for(int start = 0 ,end = chs.length -1 ; start<=end ; start++,end--){
//判斷
if(chs[start]!= chs[end]){
//修改標記
flag = false ;
break ;
}
}
return flag ;
}
}
Integer
需求:求一個整數100對應的二進制,八進制,十六進制
需求:要求出Integer類型範圍:
java的jkd5.0以後:還有一些新特性:自動拆裝箱,可變參數,增強for循環,靜態導入,枚舉...
對於每個基本數據類型都會被自動封裝成一個引用類型
基本類型 引用類型
intInteger
char Character
byte Byte
boolean Boolean
double Double
float Float
long Long
short Short
將基本類型--->引用類型的作用:就是爲了和String類型作爲轉換
public class IntegerDemo {
public static void main(String[] args) {
//public static String toBinaryString(int i)
System.out.println(Integer.toBinaryString(100)) ;
//public static String toOctalString(int i)
System.out.println(Integer.toOctalString(100));
//public static String toHexString(int i)
System.out.println(Integer.toHexString(100));
//public static final int MAX_VALUE
//public static final int MIN_VALUE
System.out.println(Integer.MAX_VALUE);//2147483647
System.out.println(Integer.MIN_VALUE);//-2147483647
}
}
//public static String toBinaryString(int i)
System.out.println(Integer.toBinaryString(100)) ;
//public static String toOctalString(int i)
System.out.println(Integer.toOctalString(100));
//public static String toHexString(int i)
System.out.println(Integer.toHexString(100));
//public static final int MAX_VALUE
//public static final int MIN_VALUE
System.out.println(Integer.MAX_VALUE);//2147483647
System.out.println(Integer.MIN_VALUE);//-2147483647
}
}
Integer類的構造方式:
public Integer(int value):將一個int類型的數據封裝成一個引用類型
public Integer(String s):將一個字符數類型封裝成一個Integer類型
注意事項:
該字符串必須是數字字符串!,否則拋出異常:java.lang.NumberFormatException
public class IntegerDemo2 {
public static void main(String[] args) {
//public Integer(int value)
//創建一個Integer對象
Integer i = new Integer(100);
//Integer i = 100 ;//jdk5以後的自動裝箱!
System.out.println("i:"+i);
//public Integer(String s)
//String s = "abc" ;
String s = "20" ;
Integer ii = new Integer(s) ;
System.out.println("s:"+s);
}
}
//public Integer(int value)
//創建一個Integer對象
Integer i = new Integer(100);
//Integer i = 100 ;//jdk5以後的自動裝箱!
System.out.println("i:"+i);
//public Integer(String s)
//String s = "abc" ;
String s = "20" ;
Integer ii = new Integer(s) ;
System.out.println("s:"+s);
}
}
int類型和String類型的相互轉換
public class IntegerTest {
public static void main(String[] args) {
//定義一個int類型的數據
int number = 100 ;
//方式1)字符串拼接符
String s1 = "" + number ;
System.out.println("s1:"+s1);
//方式2:int--->Integer類型
Integer i = new Integer(number) ;
//Integer--->String
//public String toString()
String s2 = i.toString() ;
System.out.println("s2:"+s2);
//方式3)public static String toString(int i)
String s3 = Integer.toString(number) ;
System.out.println("s3:"+s3);
//方式4)
//public static Integer valueOf(int i)
Integer integer= Integer.valueOf(number) ;
String s4 = integer.toString() ;
System.out.println("s4:"+s4);
System.out.println("---------------------------");
//定義一個字符串:
String s = "10" ;
//方式1:String--->Integer---->int
Integer ii = new Integer(s) ;
//public int intValue()以 int 類型返回該 Integer 的值
int num = ii.intValue() ;
System.out.println("num:"+num);
//public static int parseInt(String s)
int num2 = Integer.parseInt(s) ;
System.out.println("num2:"+num2);
//Integer的內存緩存區:IntegerCashe
//low = -128
//high=127
Integer i1 = 127 ; //----->底層在封裝的時候:Integer integer = Inteter.valueOf(int i) ;
Integer i2 = 127 ;
System.out.println(i1==i2);//true
Integer i3 = 128 ;
Integer i4 = 128 ;
System.out.println(i3==i4);//false
}
}
//定義一個int類型的數據
int number = 100 ;
//方式1)字符串拼接符
String s1 = "" + number ;
System.out.println("s1:"+s1);
//方式2:int--->Integer類型
Integer i = new Integer(number) ;
//Integer--->String
//public String toString()
String s2 = i.toString() ;
System.out.println("s2:"+s2);
//方式3)public static String toString(int i)
String s3 = Integer.toString(number) ;
System.out.println("s3:"+s3);
//方式4)
//public static Integer valueOf(int i)
Integer integer= Integer.valueOf(number) ;
String s4 = integer.toString() ;
System.out.println("s4:"+s4);
System.out.println("---------------------------");
//定義一個字符串:
String s = "10" ;
//方式1:String--->Integer---->int
Integer ii = new Integer(s) ;
//public int intValue()以 int 類型返回該 Integer 的值
int num = ii.intValue() ;
System.out.println("num:"+num);
//public static int parseInt(String s)
int num2 = Integer.parseInt(s) ;
System.out.println("num2:"+num2);
//Integer的內存緩存區:IntegerCashe
//low = -128
//high=127
Integer i1 = 127 ; //----->底層在封裝的時候:Integer integer = Inteter.valueOf(int i) ;
Integer i2 = 127 ;
System.out.println(i1==i2);//true
Integer i3 = 128 ;
Integer i4 = 128 ;
System.out.println(i3==i4);//false
}
}
jdk5.0以後的新特性:自動拆裝箱
public class IntegerTest2 {
public static void main(String[] args) {
//創建一個Integer對象
Integer i = new Integer(100) ;
i += 200 ;
System.out.println("i:"+i);
/**
* 通過反編譯工具查看源碼:
* Integer i = new Integer(100); //將int類型值通過構造的形式自動裝箱爲Integer類型
i = Integer.valueOf(i.intValue() + 200);//i.intValue()--->int類型的數據:把Integer--->int:自動拆箱
自動裝箱了
System.out.println((new StringBuilder("i:")).append(i).toString());
*/
}
}
//創建一個Integer對象
Integer i = new Integer(100) ;
i += 200 ;
System.out.println("i:"+i);
/**
* 通過反編譯工具查看源碼:
* Integer i = new Integer(100); //將int類型值通過構造的形式自動裝箱爲Integer類型
i = Integer.valueOf(i.intValue() + 200);//i.intValue()--->int類型的數據:把Integer--->int:自動拆箱
自動裝箱了
System.out.println((new StringBuilder("i:")).append(i).toString());
*/
}
}
Character:
Character 類在對象中包裝一個基本類型 char 的值。Character 類型的對象包含類型爲 char 的單個字段
構造方法:
public Character(char value)構造一個新分配的 Character 對象,用以表示指定的 char值。
public class CharacterDemo {
public static void main(String[] args) {
//創建一個Character類的對象
//Character character = new Character((char)97) ;
Character character = new Character('a') ;
System.out.println("character:"+character);
}
}
//創建一個Character類的對象
//Character character = new Character((char)97) ;
Character character = new Character('a') ;
System.out.println("character:"+character);
}
}
Character類的判斷功能:
public static boolean isLowerCase(char ch)確定指定字符是否爲小寫字母。
public static boolenn isUpperCase(char ch)確定指定字符是否爲大寫字母
public static boolean isDigit(char ch)確定指定字符是否爲數字。
Character常用的轉換功能:
public static char toUpperCase(char ch):將指定字符轉換成大寫
public static char toLowerCase(char ch):將指定字符轉換成小寫
public class CharacterDemo2 {
public static void main(String[] args) {
//public static boolean isLowerCase(char ch)確定指定字符是否爲小寫字母
System.out.println("isLowerCase:"+Character.isLowerCase('a'));
System.out.println("isLowerCase:"+Character.isLowerCase('A'));
System.out.println("isLowerCase:"+Character.isLowerCase('0'));
System.out.println("---------------------------------------");
//public static boolenn isUpperCase(char ch)確定指定字符是否爲大寫字母
System.out.println("isUpperCase:"+Character.isUpperCase('a'));
System.out.println("isUpperCase:"+Character.isUpperCase('A'));
System.out.println("isUpperCase:"+Character.isUpperCase('0'));
System.out.println("---------------------------------------");
//public static boolean isDigit(char ch)確定指定字符是否爲數字。
System.out.println("isDigit:"+Character.isDigit('a'));
System.out.println("isDigit:"+Character.isDigit('A'));
System.out.println("isDigit:"+Character.isDigit('0'));
}
}
//public static boolean isLowerCase(char ch)確定指定字符是否爲小寫字母
System.out.println("isLowerCase:"+Character.isLowerCase('a'));
System.out.println("isLowerCase:"+Character.isLowerCase('A'));
System.out.println("isLowerCase:"+Character.isLowerCase('0'));
System.out.println("---------------------------------------");
//public static boolenn isUpperCase(char ch)確定指定字符是否爲大寫字母
System.out.println("isUpperCase:"+Character.isUpperCase('a'));
System.out.println("isUpperCase:"+Character.isUpperCase('A'));
System.out.println("isUpperCase:"+Character.isUpperCase('0'));
System.out.println("---------------------------------------");
//public static boolean isDigit(char ch)確定指定字符是否爲數字。
System.out.println("isDigit:"+Character.isDigit('a'));
System.out.println("isDigit:"+Character.isDigit('A'));
System.out.println("isDigit:"+Character.isDigit('0'));
}
}
需求:鍵盤錄入一個字符串,統計該字符串中大寫字母字符,小寫字母字符,數字字符有多少個(不考慮其他字符,使用Character提供的判斷功能去完成)
分析:
1)定義三個統計變量
bigCount
smallCount
numberCount
2)創建鍵盤錄入對象,錄入並接收一個字符串
3)將字符串轉換成字符數組
4)遍歷字符數組,獲取到每一個字符
5)使用Character類中的判斷功能判斷是否是大寫,小寫,數字字符
6)輸出
import java.util.Scanner;
public class CharacterTest {
public static void main(String[] args) {
//定義三個統計變量
int bigCount = 0 ;
int smallCount = 0 ;
int numberCount = 0;
//創建鍵盤錄入對象
Scanner sc = new Scanner(System.in) ;
//錄入並接收數據
System.out.println("請您輸入一個字符串:");
String line = sc.nextLine();
//將字符串轉換成字符數組
char[] chs = line.toCharArray() ;
for(int x = 0 ; x < chs.length ; x ++){
//獲取每一個字符
char ch = chs[x] ;
//判斷
if(Character.isUpperCase(ch)){
bigCount ++ ;
}else if(Character.isLowerCase(ch)){
smallCount ++ ;
}else if(Character.isDigit(ch)){
numberCount ++ ;
}
}
//輸出
System.out.println("大寫字母字符共有:"+bigCount+"個");
System.out.println("小寫字母字符共有:"+smallCount+"個");
System.out.println("數字字符共有:"+numberCount+"個");
}
}
//定義三個統計變量
int bigCount = 0 ;
int smallCount = 0 ;
int numberCount = 0;
//創建鍵盤錄入對象
Scanner sc = new Scanner(System.in) ;
//錄入並接收數據
System.out.println("請您輸入一個字符串:");
String line = sc.nextLine();
//將字符串轉換成字符數組
char[] chs = line.toCharArray() ;
for(int x = 0 ; x < chs.length ; x ++){
//獲取每一個字符
char ch = chs[x] ;
//判斷
if(Character.isUpperCase(ch)){
bigCount ++ ;
}else if(Character.isLowerCase(ch)){
smallCount ++ ;
}else if(Character.isDigit(ch)){
numberCount ++ ;
}
}
//輸出
System.out.println("大寫字母字符共有:"+bigCount+"個");
System.out.println("小寫字母字符共有:"+smallCount+"個");
System.out.println("數字字符共有:"+numberCount+"個");
}
}
冒泡排序的思想:
兩兩比較,大的往後放,第一次比完,最大值出現在最大索引處,依次進行這樣的比較....
public class ArrayTest {
public static void main(String[] args) {
//定義一個數組,靜態初始化
int[] arr = {24,69,80,57,13} ;
System.out.println("排序前:");
//遍歷數組
printArray(arr) ;
/*//第一次比較
//arr.length-1:爲了防止角標越劇
//arr.length-1-0:爲了減少比較的次數
for(int x = 0 ; x < arr.length-1-0;x++){
//判斷:兩兩比較,大的往後方法
if(arr[x]>arr[x+1]){
//中間變量進行互換
int temp = arr[x] ;
arr[x] = arr[x+1] ;
arr[x+1] = temp;
}
}
System.out.println("第一次比較後:");
printArray(arr) ;
//第二次比較:
for(int x = 0 ; x < arr.length-1-1; x ++){
if(arr[x]>arr[x+1]){
int temp = arr[x] ;
arr[x] = arr[x+1] ;
arr[x+1] =temp ;
}
}
System.out.println("第二次比較後:");
printArray(arr) ;
//第三次比較:
//arr.length-1:爲了防止角標越界
////arr.length-1-2:爲了減少比較的次數
for(int x = 0 ; x < arr.length-1-2; x ++){
if(arr[x]>arr[x+1]){
int temp = arr[x] ;
arr[x] = arr[x+1] ;
arr[x+1] =temp ;
}
}
System.out.println("第三次比較後:");
printArray(arr) ;
//第三次比較:
//arr.length-1:爲了防止角標越界
////arr.length-1-3:爲了減少比較的次數
for(int x = 0 ; x < arr.length-1-3; x ++){
if(arr[x]>arr[x+1]){
int temp = arr[x] ;
arr[x] = arr[x+1] ;
arr[x+1] =temp ;
}
}
System.out.println("第四次比較後:");
printArray(arr) ;*/
/**
* 上述代碼重複度高,所以改進
*/
/* for(int x = 0 ; x <4 ; x ++){
for(int y = 0 ; y < arr.length-1-x ; y++){
//判斷
if(arr[y]>arr[y+1]){
int temp = arr[y] ;
arr[y] = arr[y+1] ;
arr[y+1] = temp ;
}
}
}
System.out.println("排序後:");
printArray(arr) ;*/
/**
* 上述代碼不夠好,如果數組非常多,那麼如何進行操作,應該定義一個功能,當前比較的次數是一個數組長度-1次
*/
bubbleSort(arr) ;
System.out.println("排序後:");
printArray(arr) ;
}
//冒泡排序的代碼
//最終版代碼
public static void bubbleSort(int[] arr){
for(int x = 0 ; x < arr.length-1; x ++){
for(int y = 0 ; y < arr.length-1-x ; y++){
//判斷
if(arr[y]>arr[y+1]){
int temp = arr[y] ;
arr[y] = arr[y+1] ;
arr[y+1] = temp ;
}
}
}
}
//遍歷數組的功能:[元素1,元素2,....]
public static void printArray(int[] arr){
System.out.print("[");
//遍歷數組
for(int x = 0 ; x < arr.length ; x ++){
//判斷是否是最大索引
if(x==arr.length-1){
System.out.println(arr[x]+"]");
}else{
System.out.print(arr[x]+", ");
}
}
}
}
//定義一個數組,靜態初始化
int[] arr = {24,69,80,57,13} ;
System.out.println("排序前:");
//遍歷數組
printArray(arr) ;
/*//第一次比較
//arr.length-1:爲了防止角標越劇
//arr.length-1-0:爲了減少比較的次數
for(int x = 0 ; x < arr.length-1-0;x++){
//判斷:兩兩比較,大的往後方法
if(arr[x]>arr[x+1]){
//中間變量進行互換
int temp = arr[x] ;
arr[x] = arr[x+1] ;
arr[x+1] = temp;
}
}
System.out.println("第一次比較後:");
printArray(arr) ;
//第二次比較:
for(int x = 0 ; x < arr.length-1-1; x ++){
if(arr[x]>arr[x+1]){
int temp = arr[x] ;
arr[x] = arr[x+1] ;
arr[x+1] =temp ;
}
}
System.out.println("第二次比較後:");
printArray(arr) ;
//第三次比較:
//arr.length-1:爲了防止角標越界
////arr.length-1-2:爲了減少比較的次數
for(int x = 0 ; x < arr.length-1-2; x ++){
if(arr[x]>arr[x+1]){
int temp = arr[x] ;
arr[x] = arr[x+1] ;
arr[x+1] =temp ;
}
}
System.out.println("第三次比較後:");
printArray(arr) ;
//第三次比較:
//arr.length-1:爲了防止角標越界
////arr.length-1-3:爲了減少比較的次數
for(int x = 0 ; x < arr.length-1-3; x ++){
if(arr[x]>arr[x+1]){
int temp = arr[x] ;
arr[x] = arr[x+1] ;
arr[x+1] =temp ;
}
}
System.out.println("第四次比較後:");
printArray(arr) ;*/
/**
* 上述代碼重複度高,所以改進
*/
/* for(int x = 0 ; x <4 ; x ++){
for(int y = 0 ; y < arr.length-1-x ; y++){
//判斷
if(arr[y]>arr[y+1]){
int temp = arr[y] ;
arr[y] = arr[y+1] ;
arr[y+1] = temp ;
}
}
}
System.out.println("排序後:");
printArray(arr) ;*/
/**
* 上述代碼不夠好,如果數組非常多,那麼如何進行操作,應該定義一個功能,當前比較的次數是一個數組長度-1次
*/
bubbleSort(arr) ;
System.out.println("排序後:");
printArray(arr) ;
}
//冒泡排序的代碼
//最終版代碼
public static void bubbleSort(int[] arr){
for(int x = 0 ; x < arr.length-1; x ++){
for(int y = 0 ; y < arr.length-1-x ; y++){
//判斷
if(arr[y]>arr[y+1]){
int temp = arr[y] ;
arr[y] = arr[y+1] ;
arr[y+1] = temp ;
}
}
}
}
//遍歷數組的功能:[元素1,元素2,....]
public static void printArray(int[] arr){
System.out.print("[");
//遍歷數組
for(int x = 0 ; x < arr.length ; x ++){
//判斷是否是最大索引
if(x==arr.length-1){
System.out.println(arr[x]+"]");
}else{
System.out.print(arr[x]+", ");
}
}
}
}