關于字串
- 一、基本概念
- 二、創建方式
- 三、常用方法
- 1.valueOf( )
- 2.format( )
- 3.charAt( )
- 4.toCharArray( )
- 5.split( )
- 6.substring( )
- 7.compareTo( )
- 8.equals( );equalsIgnoreCase( )
- 9.contains( )
- 10.indexOf( );lastIndexOf( )
- 11.replace( );replaceFirst( )
- 12.startsWith( )
- 13.endsWith( )
- 14.toUpperCase( )
- 15.toLowerCase( )
- 16.trim()
- 17.字串的比較
- (1)按照字符大小進行冒泡排序
- (2)按照字符長度進行冒泡排序
一、基本概念
1.String是參考資料型別
2.采用陣列進行存盤
JDK8——char[ ] 字符陣列
JDK9——byte[ ] 位元組陣列
二、創建方式
1.String str1 = " dfsg3455 “;在字串池中存盤
2.String str2 = new String(” shwy987 ");
3.String str3 = new String(字符陣列);
后兩者在堆區中開辟空間存盤
public static void main(String[] args) {
// 方式1
// 在字串池中創建
String str1 = "just so so";
String str2 = "just so so";
str2 = "just do it"; // str2重新指向了新的字串地址
// 方式2
// 在堆中開辟空間,創建并保存字串
String str3 = new String("just go go");
// 方式3
// 將字符陣列,轉換成字串
char[] chs = {'g','o','g','o','!'};
String str4 = new String(chs);
System.out.println(str4);
}
三、常用方法
1.valueOf( )
作用:將指定的其他型別資料轉換為字串
傳入:需要轉換的其他型別的資料
有
| int | float | double | boolean | char[ ]陣列 |
|---|---|---|---|---|
| 整型 | 單精度浮點型 | 雙精度浮點型 | 布爾型 | 字符陣列 |
回傳:轉換后的字串
public static void main(String[] args) {
// 方法:String.valueOf()
// 將指定型別轉換為字串型別
// int => String
String strInt = String.valueOf(123);
System.out.println(strInt);
// double => String
String strDouble = String.valueOf(15.98);
System.out.println(strDouble);
// boolean => String
String strBoolean = String.valueOf(true);
System.out.println(strBoolean);
char[] array = { 65, 66, 67, 68, 69 };
String strArray = String.valueOf(array);
System.out.println(strArray);
}
2.format( )
作用:按照指定的格式字串( “%d-%s-%f” ),創建生成新字串
傳入:(1)引數1:格式字串 (2)動態引數值(依次按占位符的位置傳入對應的值)
回傳:按照格式,產生的新字串
public static void main(String[] args) {
// 方法: String.format()格式化字串
// 案例1
int num1 = 15, num2 = 30;
int sum = num1 + num2;
// 格式化輸出
System.out.printf("%d+%d=%d\n", num1, num2, sum);
// 格式化字串
String str = String.format("%d+%d=%d", num1, num2, sum);
System.out.println(str);
// 案例2
// xxxx年xx月
String now1 = LocalDate.now().getYear() + "年" + LocalDate.now().getMonthValue() + "月";
String now2 = String.format("%s年%s月", LocalDate.now().getYear(), LocalDate.now().getMonthValue());
System.out.println(now2);
// xx月xx日
String now3 = String.format("%s月%s日", LocalDate.now().getMonth(), LocalDate.now().getDayOfMonth());
System.out.println(now3);
}
3.charAt( )
作用:按照指定的下標位置,獲取對應的字符
傳入:下標位置(下標位置不能越界)
回傳:該下標位置對應的字符
public static void main(String[] args) {
// 方法: charAt(下標位置)
// 功能:回傳該下標位置對應的字符
String str1 = "ABCD";
System.out.println(str1.charAt(0)); //A
String str2 = "CDAA";
System.out.println(str2.charAt(0)); //C
}
4.toCharArray( )
作用:將當前字串轉換為字符陣列
傳入:無
回傳:該字串對應的字符陣列
public static void main(String[] args) {
// 方法:toCharArray()
// 功能:回傳該字串中的字符陣列
String str3 = "我與夏風皆過客";
char[] chs = str3.toCharArray();
System.out.println(chs[4]);//皆
System.out.println(chs[2]);//夏
}
5.split( )
作用:按照指定的字符或者字串,對原字串進行切割
傳入:指定字串(進行切割的格式),指定字串中如果包含特殊字符(正則運算式),需要使用 \進行轉義
回傳:字符串陣列,包含切割后的每個子字串
public static void main(String[] args) {
// 方法:split(指定字串)
// 功能:按照指定字串進行切割,回傳字串陣列
// 案例1
String sourceStr = "南京!-上海!-廣州!-西安!-重慶";
String[] resultArray = sourceStr.split("!-");
for (String city : resultArray) {
System.out.println(city);
}
// 案例2
sourceStr = "風急天高猿嘯哀,渚清沙白鳥飛回,無邊落木蕭蕭下,不盡長江滾滾來,";
String[] resultArray01 = sourceStr.split(",");
String[] resultArray011 = resultArray01[0].split(",");
String[] resultArray012 = resultArray01[1].split(",");
resultArray01 = new String[4];
System.arraycopy(resultArray011, 0, resultArray01, 0, 2);
System.arraycopy(resultArray012, 0, resultArray01, 2, 2);
System.out.println(Arrays.toString(resultArray01));
// 案例3
String ip = "154.368.59.423";
// 切割字串如果是特殊符號(正則運算式),需加入\\進行轉義
String[] ipArray = ip.split("\\.");
for(String strNum : ipArray) {
System.out.println(strNum);
}
// 案例4
sourceStr = "南京#$上海#$廣州#$西安#$重慶";
// 切割字串如果是特殊符號(正則運算式),需加入\\進行轉義
String[] cityArray = sourceStr.split("#\\$");
for(String cityName : cityArray) {
System.out.println(cityName);
}
}
6.substring( )
作用:截取字串中的子字串
傳入:截取的開始位置下標和結束位置下標
回傳:截取后的子字串
public static void main(String[] args) {
// 方法.substring()
// 功能:截取子字串
// 回傳:截取后的子字串
fileName = "weweweweweok.apk";
int beginPos = fileName.indexOf("."); // 查找.的位置
// 案例1:截取后綴名
// 從指定開始位置,截取至字串的尾部(截取后綴名)
String suffix = fileName.substring(beginPos);
System.out.printf("%s的后綴名是%s\n", fileName, suffix);
// 案例2:截取檔案名
// 從指定開始位置,截取至指定結束位置(截取檔案名)
String name = fileName.substring(0, beginPos);
System.out.printf("%s的檔案名是%s\n", fileName, name);
}
7.compareTo( )
作用:比較兩個字串之間的大小
比較規則:比較兩個字串對應字符 ASCII碼(英文)或Unicode碼(中文)的"差"
傳入:需要比較的另外一個字串
回傳:結果為正數(大于0) 代表:字串1 > 字串2
結果為負數(小于0) 代表:字串1 < 字串2
結果為0 代表:字串1 = 字串2
public static void main(String[] args) {
// 方法:compareTo()
// 功能:比較兩個字串之間的大小
String str1 ="sdfgx";
String str2 ="dfghjj";
System.out.println(str1.compareTo(str2));
String str3 ="區分";
String str4 ="字串";
System.out.println(str3.compareTo(str4));
}
8.equals( );equalsIgnoreCase( )
作用:equals( ) 比較字串內容是否一致,區分大小寫
equalsIgnoreCase( ) 比較字串內容是否一致,不區分大小寫
傳入:需要比較的另外一個字串
回傳:true:代表兩個字串內容一致
false:代表兩個字串內容不一致
public static void main(String[] args) {
// 方法:equals()、equalsIgnoreCase()
// 功能:比較兩個字串的值是否相等
String str1 = "string";
String str2 = "STRING";
System.out.println(str1.equals(str2));//false
System.out.println(str1.equalsIgnoreCase(str2));//true
}
9.contains( )
作用:判斷字串是否包含指定子字串
傳入:子字串
回傳:true:代表包含
false:代表不包含
public static void main(String[] args) {
// 方法:contains(子字串)
// 功能:判斷字串是否包含指定子字串
String str1 = "ABABABASOSOASB";
System.out.println(str1.contains("soso"));//false
System.out.println(str1.contains("BA"));//true
String source = "SDKLSKDJFJSIODFOISDJFOJSDFJLSDF";
String world = "timi";//false
System.out.println(source.contains(world));//false
}
10.indexOf( );lastIndexOf( )
作用:查找指定子字串
indexOf( )查找第一個出現的子字串
lastIndexOf( )查找最后一個出現的子字串
傳入:子字串
回傳:如果找到,則回傳子字串位置;如果沒找到回傳負數
public static void main(String[] args) {
// 方法:indexOf(子字串)
// 功能:查找指定子字串
// 回傳結果:如果找到,則回傳子字串位置;如果沒找到回傳負數
// 案例1
String data1 = "gshf#sj342#8fhjsk#";
int pos1 = data1.indexOf("#"); // 從下標0開始查找
System.out.println(pos1); // 4
int pos2 = data1.indexOf("#", 5); // 從下標5開始查找
System.out.println(pos2); // 10
int pos3 = data1.lastIndexOf("#"); // 從下標length-1開始查找
System.out.println(pos3); // 17
//案例3
String str1 = "ABCDECDFG";
// 查找第一個出現的子字串
int pos1 = str1.indexOf("CD");
System.out.println(pos1);
// 查找最后一個出現的子字串
int pos2 = str1.lastIndexOf("CD");
System.out.println(pos2);
// 案例2 : 判斷email郵箱地址中,是否包含@,并且@的位置不在首位或尾部
String email01 = "billgmail.@com"; // 正常
// String email02 = "@billgmail.com"; //錯誤
// String email03 = "billgmail.com@"; //錯誤
// String email03 = "billgmail.com"; //錯誤
int pos = email01.indexOf("@");
System.out.println(pos);
if (pos == 0 || pos == email01.length() - 1 || pos < 0) {
System.out.println("郵箱格式有誤");
} else {
System.out.println("郵箱正常");
}
}
11.replace( );replaceFirst( )
作用:replace( )將指定子字串替換(全部替換)
replaceFirst( )替換字串中出現的第一個子字串
傳入:要替換的子字串和新的字串
回傳:替換后的新字串
public static void main(String[] args) {
// replace()
// 功能:將指定子字串替換
// 回傳:替換后的新字串
// 案例:替換標點符號
String content = "風急天高猿嘯哀,渚清沙白鳥飛回,無邊落木蕭蕭下,不盡長江滾滾來,";
content = content.replace(",", "!").replace(",", "!");
System.out.println(content);
// replaceFirst( )
String src ="<img src=\"https://img1.doubanio.com>"+"<img src=\"https://img2.doubanio.com>"+"<img src=\"https://img3.doubanio.com>";
src = src.replaceFirst(".com", ".png");
System.out.println(src);
}
12.startsWith( )
作用:判斷字串是否以指定子字串"開頭"
傳入:指定子字串
回傳:true:代表是
false:代表不是
public static void main(String[] args) {
// 方法:startsWith(子字串)
// 功能:判斷字串是否以指定子字串"開頭"
String url = "ftp://www.baidu.com";
System.out.println(url.startsWith("ftp"));//true
}
13.endsWith( )
作用:判斷字串是否以指定子字串"結尾"
傳入:指定子字串
回傳:true:代表是
false:代表不是
public static void main(String[] args) {
// 方法:endsWith(子字串)
// 功能:判斷字串是否以指定子字串"結尾"
String fileName = "weixin.docx";
System.out.println(fileName.endsWith(".png"));//false
}
14.toUpperCase( )
作用:小寫轉換成大寫
傳入:無
回傳:新的字串
public static void main(String[] args) {
// toUpperCase()
// 功能:小寫轉換成大寫
String str = "shbxhdjc";
str1 = str.toUpperCase();
System.out.println(str1);
}
15.toLowerCase( )
作用:大寫轉換成小寫
傳入:無
回傳:新的字串
public static void main(String[] args) {
// toLowerCase()
// 功能:大寫轉換成小寫
String str = "34A5B87CDE";
str1 = str.toLowerCase();
System.out.println(str1);
}
16.trim()
作用:去除字串左右空格
傳入:無
回傳:去除空格后的新字串
public static void main(String[] args) {
// trim()
// 功能:去除左右空格
// 回傳:去除空格后的新字串
src = " sgeh26SFRTf985jxn ";
System.out.println("使用前:"+src);
src = src.trim(); //去除字串的左右空格
System.out.println("使用后:"+src);
}
17.字串的比較
(1)按照字符大小進行冒泡排序
String[] array = { "puma", "nike", "adidas", "li-ning", "zara", "underma", "northface", "bronx", "axrix",
"hugn" };
// 字串之間的大小比較,需要compareTo()方法
// 字串1.compareTo(字串2)
// 結果為正數(大于0) 代表:字串1 > 字串2
// 結果為負數(小于0) 代表:字串1 < 字串2
// 結果為0 代表 字串1 等于 字串2
// System.out.println(array[0].compareTo(array[1]));
for (int i = 0, n = array.length; i < n - 1; i++) {
for (int k = 0; k < n - 1 - i; k++) {
// 比較相鄰兩個字串的大小:使用compareto()方法
if (array[k].compareTo(array[k + 1]) > 0) {
String temp = array[k];
array[k] = array[k + 1];
array[k + 1] = temp;
}
}
}
System.out.println(Arrays.toString(array));
}
(2)按照字符長度進行冒泡排序
String[] array = { "ABC", "XBCD", "HCDE", "AXEDFF", "A", "BCD", "NBCX", "AESSXD", "PADXD" };
// 輪數 = n - 1
for (int i = 0, n = array.length; i < n - 1; i++) {
// 本輪比較次數 = n - 1 - i
for (int k = 0; k < n - 1 - i; k++) {
if (array[k].length() > array[k + 1].length()) {
// 前者的長度 大于 后者的長度
// 進行相鄰兩個元素的位置交換
String temp = array[k];
array[k] = array[k+1];
array[k+1] = temp;
}
}
}
System.out.println(Arrays.toString(array));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/260560.html
標籤:java
上一篇:胡編亂造論文生成器
