更新時(shí)間:2022-10-21 11:32:53 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1357次
字符串常量池:為了提升字符串的訪問(wèn)效率,Java使用了緩存技術(shù),所有用字符串都會(huì)在字符串常量池中創(chuàng)建一份,字符串常量池在方法區(qū)被存儲(chǔ)
執(zhí)行過(guò)程中,如果程序用到某個(gè)字符串,會(huì)先在字符串常量池中去搜索該字符串,如果沒(méi)有找到,則在常量池中創(chuàng)建一份,如果找到就直接拿來(lái)用
String s1="abc"只會(huì)在字符串常量池中創(chuàng)建一個(gè)"abc"字符串對(duì)象
String s2=new String("abc") 會(huì)在常量池中創(chuàng)建一個(gè)“abc字符串對(duì)象”,還會(huì)在堆內(nèi)存中創(chuàng)建一個(gè)對(duì)象,第二種方式比較浪費(fèi)內(nèi)存,不推薦使用
盡量不要做字符串頻繁的拼接操作,因?yàn)樽址坏﹦?chuàng)建不可改變,只要頻繁的拼接,就會(huì)在常量池中創(chuàng)建大量的字符串對(duì)象,給垃圾回收帶來(lái)負(fù)擔(dān)
若做字符串的拼接,建議采用StringBuffer,因?yàn)橹苯诱{(diào)用append方法,不會(huì)創(chuàng)建大量字符串對(duì)象
StringBuffer是線程安全的,StringBuilder是非線程安全的
判斷以下程序創(chuàng)建了幾個(gè)對(duì)象
String s1=new String("chw");
String s2=new String("chw");
//3個(gè)對(duì)象 堆內(nèi)存中兩個(gè) 常量池中一個(gè)
基本數(shù)據(jù)類型 包裝類型
byte java.lang.Byte
short java.lang.Short
int java.lang.Integer
long java.lang.Long
float java.lang.Float
double java.lang.Double
boolean java.lang.Boolean
char java.lang.Character
為何存在包裝類?
//需求:規(guī)定m1方法可以接收java中任何一種數(shù)據(jù)類型
//m1方法如果想接收byte類型的數(shù)據(jù),可以將byte類型先包裝成java.lang.Byte再傳遞參數(shù)
public class Test {
public static void main(String [] args){
byte b= 10;
Byte b1 = new Byte(b);
m1(b1);
}
public static void m1(Object o){
System.out.print(o);
}
}
深入自動(dòng)裝箱和自動(dòng)拆箱:
1.是程序編譯階段的概念,與程序運(yùn)行無(wú)關(guān)
2.主要目的是方便程序員的編碼
//1.int-->Integer
Integer i1 = Integer.valueOf(10);
//2.Integer-->int
int i2=i1.intValue();
//3.String-->Integer
Integer i3=Integer.valueOf("10");
//4.Integer-->String
String s1=i3.toString();
//5.String-->int
int i4=Integer.parseInt(s1);
//6.int-->String
String s2=10+"";
//jdk5.0之后
Integer i5=10;//自動(dòng)裝箱
int i6=i5;//自動(dòng)拆箱
Date類
Date d1=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s1=sdf.format(d1);
//String-->Date
String strTime = "2018年08月08日 08:08:08 888";
SimpleDateFormat sdf1=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss SSS");
try {
Date d2 = sdf1.parse(strTime);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar類
Calendar calendar = Calendar.getInstance();
int i = calendar.get(Calendar.DAY_OF_WEEK);
public static Result divide(int a, int b){
try {
int c= a / b;
return Result.SUCCESS;
}catch (Exception e){
return Result.FAIL;
}
}
enum Result{
//枚舉要大寫
SUCCESS,FAIL
}
//生成5個(gè)不同的隨機(jī)數(shù)【1-5】
public class RandomTest {
public static void main(String [] args){
int arr[]=new int[5];
Random random = new Random();
int index=0;
while(index<5){
int temp = random.nextInt(6);
if(temp!=0 && !contains(arr,temp)){
arr[index++]=temp;
}
}
}
private static boolean contains(int[] arr, int temp) {
for(int i=0;i<arr.length;i++){
if(arr[i]==temp)
return true;
}
return false;
}
}
以上就是關(guān)于“Java常用類介紹”,大家如果對(duì)此比較感興趣,想了解更多相關(guān)知識(shí),不妨來(lái)關(guān)注一下本站的Java在線學(xué)習(xí),里面的課程內(nèi)容細(xì)致全面,很適合沒(méi)有基礎(chǔ)的小伙伴學(xué)習(xí),相信對(duì)大家一定會(huì)有所幫助的。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743