Java進階總結8——常用類

Java進階總結8——常用類

1.字符串

1.1 String

//常量池  存儲的是常量,虛擬機在編譯的時候就已經將這些數據存儲在常量池中

//堆區:new String的引用,拼接的新字符串

//字符串進行比較的時候 ==比較的是引用地址

 

package day14.string;

public class StringDemo {

public static void main(String[] args) {

//1.創建字符串的兩種方式

String str="ABCD";//字面量

//2.通過構造方法創建一個對象//堆中分配的內存

String str1=new String("ABCD");

//3.

String str2="ABC";

//4.合併字符串,堆中分配的內存

String str3=str2+"D";

//5.合併字符串

String str4="AB"+"CD";

//String主要分配內存的地方有兩個  1.堆區  2.常量池

 

if (str==str4) {

System.out.println("相等");

}else {

System.out.println("不相等");

}

//equals比較的是字面量是否相等,不比內存

if (str1.equals(str3)) {

System.out.println("字面量相等");

}else {

System.out.println("字面量不相等");

}

//判斷一個字符是否等於常量,要用常量和對象比較

String str5=null;

if ("123".equals(str5)) {

System.out.println("相等");

}

//判斷地址是否爲空

if (str5==null) {

System.out.println("地址爲空");

}

//判斷內容是否爲空

if ("".equals(str5)) {

System.out.println("內容爲空");

}

System.out.println(str);

}

}

輸出結果:

package day14.string;

 

import java.io.UnsupportedEncodingException;

 

import javax.naming.ldap.StartTlsRequest;

 

public class StringDemo1 {

public static void main(String[] args) throws UnsupportedEncodingException {

//通過構造方法創建一個字符串

String str=new String();

System.out.println(str.isEmpty());//判斷一個字符串是不是空“”

System.out.println(str.length());//獲取字符串的長度

 

byte[]b={1,2,4,6};//將byte數組轉成一個字符串

System.out.println(str);

 

str=new String(b,"gbk");//指定編碼格式

System.out.println(str);

char[]c={'a','d','g','c','e'};

 

str=new String(c,1,3);//將數組c從下標1開始,截取長度爲3,轉成字符串

System.out.println(str);

 

char cr=str.charAt(0);//獲取指定元素的char字符

System.out.println(cr);

 

//返回一個負數表示字符串小於另一個字符串,等於0表示相等,正數表示大於

int result=str.compareTo("ad");//比較字符串

result=str.compareToIgnoreCase("Hbb");//忽略大小寫

System.out.println(result);

 

//判斷字符串是否包含某個字符串

System.out.println(str.contains("d"));

System.out.println(str.equalsIgnoreCase("Dg"));//比較字符串,不區分大小寫

System.out.println(str.equals("Dg"));//比較字符串,區分大小寫

 

//靜態方法將char數組轉換成string

str=String.copyValueOf(c);

System.out.println(str);

 

//判斷字符串已e結尾

System.out.println(str.endsWith("e"));

//已某個字符爲前綴

System.out.println(str.startsWith("a"));

 

//字符串查詢indexof()查詢字符在字符串中第一次出現的索引

System.out.println(str.indexOf('g'));

System.out.println(str.indexOf("dg"));//字符串首次出現的位置

//最後一次出現的位置

System.out.println(str.lastIndexOf('g'));

System.out.println(str.lastIndexOf("ce"));

 

//字符串大小寫轉換,生成新的字符串

System.out.println(str.toUpperCase());//轉大寫

System.out.println(str.toLowerCase());

 

//截取字符串

System.out.println(str.substring(3));//從3到結尾

System.out.println(str.substring(2, 4));//[2,4)

 

//分割字符串,返回一個的數組

str="提筆、凝神、靜氣,述其文而匯其意,塑其形而傳其神,文不離意,以意浮其文";

String list[]=str.split(",");

for(String string:list){

System.out.println(string);

}

//替換

System.out.println(str.replace("提筆", "執筆"));

 

}

}

輸出結果:

1.2 StringBuilder/StringBuffer

/**

 * StringBuilder

 * 1.可變字符串,內容改變,但引用地址不會改變

 * 2.StringBuilder它不是線程安全的,不支持同步,讀寫速度比較快,一般情況下,不考慮線程安全的情況下,我們儘可能的使用該類

 * 3.該類和StringBuffer功能一樣,唯一的區別是Stringbuffer現成安全,就是性能比較差

 * */

package day14.stringbuilder;

 

public class StringBuilderDemo {

public static void main(String[] args) {

 

//1.初始化一個StringBuilder對象

StringBuilder str=new StringBuilder();//空字符序列

System.out.println("str=="+str);

 

//2.在尾部追加字符

str.append(true);//將boolean類型轉換成String類型,內容改變,地址不變

str.append('你');//追加char類型

str.append(0.8);//追加double類型

str.append(21);//追加int類型

str.append(new Object());//追加一個對象

char[]c={'q','e','m','z','a','。'};//追加一個數組

str.append(c);

str.append(c,1,3);//從數組下標開始,長度

str.append("Hello",0,3);//追加字符序列,開始小標和結束下標,[0,3)

 

//3.在指定位置插入數據

str.insert(1, 'a');

str.insert(3, "World");

 

//4.替換  從某個位置開始到某個位置結束,替換指定的字符串

str.replace(8, 10, "qwe");

System.out.println("str=="+str);

 

//5.查詢

String str1=str.substring(12);//從某一位置開始到最後結束

System.out.println("str1=="+str1);

str1=str.substring(2,6);//從某處開始到某處結束

System.out.println("str1=="+str1);

//查詢指定索引位置的元素

char c1=str.charAt(2);

System.out.println(c1);

//查詢指定字符首次出現位置

int index=str.indexOf("dc");

System.out.println(index);

//查詢指定字符最後一次出現位置

index=str.lastIndexOf("dc");

System.out.println(index);

 

//6.刪除指定字符串

str.delete(0, 3);//[開始,結束)

System.out.println(str);

str.deleteCharAt(0);//刪除指定索引位置的字符

System.out.println(str);

 

//6.反轉字符串

str.reverse();

System.out.println(str);

}

}

輸出結果:

2.隨機數

2.1 Random

/**

 * Random 生成一個僞隨機數,主要依靠種子

 * 類型:   boolean  true  false

 *   double   [0.0,1.0)

 *   float     [0.0,1.0)

 *   int       整數的範圍

 *   long      long的範圍

 * */

 

package day14.randoms;

 

import java.util.Random;

 

public class RandomDemo {

public static void main(String[] args) {

//初始化一個隨機數

Random rand=new Random();//默認是以當前時間爲種子

//Random rand=new Random(10);//每次生成的數字固定

//生成隨機數據

System.out.println(rand.nextBoolean());//boolean類型

System.out.println(rand.nextDouble());//double類型

System.out.println(rand.nextFloat());//float類型

System.out.println(rand.nextInt());//int類型

System.out.println(rand.nextLong());//long類型

System.out.println(rand.nextInt(10));//[0,10)

System.out.println(10+rand.nextInt(10));//[10,20)

System.out.println((int)(rand.nextDouble()*11)+10);

}

}

輸出結果:

2.2 ThreadLocalRandom

//ThreadRandom 支持多線程

//獲取random,通過當前線程獲取一個random對象

 

package day14.randoms;

 

import java.util.concurrent.ThreadLocalRandom;

 

public class ThreadRandomDemo {

public static void main(String[] args) {

ThreadLocalRandom rand=ThreadLocalRandom.current();

System.out.println(rand.nextDouble(10.0,20.0));//[10.0,20.0)

System.out.println(rand.nextInt(10,20));//[10,20)

}

}

輸出結果:

2.3 UUID

//UUID是128位的隨機數,可以產生唯一的隨機數,用16進製表示

 

package day14.randoms;

 

import java.util.UUID;

 

public class UUIDDemo {

public static void main(String[] args) {

//String uid=UUID.randomUUID().toString();

//1.獲取UUID對象

UUID uid=UUID.randomUUID();

//3.將對象轉換成String

String str=uid.toString();

System.out.println(str);

//3.去掉-

String newStr=str.replace("-", "");

System.out.println(newStr);

}

}

輸出結果:

3.知識框架

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章