網(wǎng)站首頁 編程語言 正文
常用類
1.包裝類:基本數(shù)據(jù)類型所對應(yīng)的引用數(shù)據(jù)類型
? ? ?? 基本數(shù)據(jù)類型?? ? ?? | ?? ? ? 包裝類型? ??? |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | Character |
-
什么包裝類
- 包裝類:基本數(shù)據(jù)類型所對應(yīng)的引用數(shù)據(jù)類型
- Object 可統(tǒng)一所有數(shù)據(jù),包裝類的默認(rèn)值是 null
-
類型轉(zhuǎn)換中裝箱和拆箱
- 裝箱:把基本類型轉(zhuǎn)換為引用類型(數(shù)據(jù):棧–>堆)
- 拆箱:把引用類型轉(zhuǎn)換為基本類型(數(shù)據(jù):堆–>棧)
- 基本類型存儲在棧中,引用類型存儲在堆中
- 注意:為了更好的運(yùn)算,JDK1.5之后,提供自動裝箱和拆箱。自動裝箱、拆箱,底層調(diào)用的是Integer.valueof();
-
基本類型和字符串轉(zhuǎn)換
- 8 種包裝類提供不同類型間的轉(zhuǎn)換方式:
- Number父類中提供的6個共性方法
- parseXXX() 靜態(tài)方法。(字符串–>基本類型)
- 包裝類.toString(基本類型–>字符串)
-
Integer 緩沖區(qū): -128 ~ 127
- Java預(yù)先創(chuàng)建了256個常用的整數(shù)包裝類型對象。的數(shù)值是 -128~127,當(dāng)超過這個數(shù)值區(qū)間的時候,就會使用 new自己創(chuàng)建了
- 在實(shí)際應(yīng)用當(dāng)中,對已創(chuàng)建對象進(jìn)行復(fù)用,以節(jié)省內(nèi)存
1.1 裝箱與拆箱代碼演示
package classes.demo05;
public class IntegerTest {
public static void main(String[] args) {
int num=65;
//類型轉(zhuǎn)換:裝箱,基本類型-->引用類型
// 使用Integer類創(chuàng)建對象
//第一種 構(gòu)造方法
Integer integer1=new Integer(num);
System.out.println("裝箱");
System.out.println(integer1);
//第二種 valueof
Integer integer2 = Integer.valueOf(num);
System.out.println(integer2);
//拆箱 引用類型-->基本類型 // 拆箱,引用類型轉(zhuǎn)換基本類型
Integer integer3 = Integer.valueOf(100);
int i = integer3.intValue();
System.out.println("拆箱");
System.out.println(i);
// JDK 1.5之后提供自動裝箱和拆箱
//自動裝箱 自動裝箱相當(dāng)于引用了 valueOf()
int age=77;
Integer integer4=age;
System.out.println("自動裝箱");
System.out.println("integer4 = " + integer4);
//自動拆箱 自動拆箱相當(dāng)于引用了 .intValue()
int age2=integer4;
System.out.println("自動拆箱");
System.out.println(age2);
}
}
運(yùn)行結(jié)果
裝箱
65
65
拆箱
100
自動裝箱
integer4 = 77
自動拆箱
77
1.2 基本類型和字符串轉(zhuǎn)換代碼演示
package classes.demo05;
public class ParseTest {
public static void main(String[] args) {
// 基本類型轉(zhuǎn)換字符串
// 1. 使用 + 號
int age=15;
String s1=age+" ";
System.out.println(s1);
// 2. 使用 Integer 的 toString() 方法
String s2=Integer.toString(age);
System.out.println(s2);
// 使用 Integer 的 toString() 方法的進(jìn)制重載
String s3=Integer.toString(age,16);
System.out.println(s3);
System.out.println("==================================");
// 字符串轉(zhuǎn)換基本類型
// 使用 Integer 的 parseXXX() 方法
String str="255";
int ss = Integer.parseInt(str); // 在轉(zhuǎn)換基本類型時注意不要出現(xiàn)非數(shù)字
System.out.println(ss);
// Boolean 字符串形式轉(zhuǎn)換基本類型只有 "true" 轉(zhuǎn)換成 true, 非 "true" 全都轉(zhuǎn)換成 false
String str1="true";
boolean b = Boolean.parseBoolean(str1);
System.out.println(b);
}
}
運(yùn)行結(jié)果
15
15
f
==================================
255
true
1.3 整數(shù)緩存區(qū)代碼演示
package classes.demo05;
public class DemoCache {
public static void main(String[] args) {
//Java預(yù)先創(chuàng)建了256個常用的整數(shù)包裝類型對象。便于進(jìn)行復(fù)用,以節(jié)省內(nèi)存
//面試題
//分別為false,true,false
//第一個是通過new一個對象,等號比較的是對象的地址,所以false
//第二和第三屬于自動裝箱,等價于Integer i3 = Integer.valueOf(100);
//這個方法在數(shù)據(jù)為-128~127的值是放在緩沖區(qū)中,能直接獲得同一個值,所以地址相同
//如果超過這個區(qū)間,則會在堆中重新創(chuàng)造空間
Integer integer1 = new Integer(100);
Integer integer2 = new Integer(100);
System.out.println(integer1==integer2);// false
Integer integer3=100; // 自動裝箱 相當(dāng)于引用了 valueOf()
//Integer integer3=Integer.valueOf(100);
Integer integer4=100;
//Integer integer4=Integer.valueOf(100);
System.out.println(integer3==integer4);// true // 因?yàn)榫彺鎱^(qū)數(shù)組 [-128, 127] 在這之內(nèi)地址一樣
Integer integer5=200; // 自動裝箱 相當(dāng)于引用了 valueOf()
//Integer integer5=Integer.valueOf(100);
Integer integer6=200;
//Integer integer6=Integer.valueOf(100);
System.out.println(integer5==integer6);// false //使用new 自己創(chuàng)建了 return new Integer(i);
}
}
運(yùn)行結(jié)果
false
true
false
2.String類
- 字符串是常量,創(chuàng)建之后不可改變。修改相當(dāng)于重寫開辟空間,不會修改原來的數(shù)據(jù),原有常量失效(變成垃圾)
- 字符串字面值存儲在字符串池中 (方法區(qū)中),可以共享
- String s = “Hello”;產(chǎn)生一個對象,字符串池中存儲
- String s = new String(“Hello”); 產(chǎn)生兩個對象,堆、池各一個
- String 比較使用 equals ,在 String 中重寫了 equals ,此時比較的不是對象的地址,而是字符串的值
2.1 String類常用方法
1. ?length()方法
public int length()
- 返回字符串的長度
2. ?charAt(int index)方法
public char charAt(int index)
- 根據(jù)下標(biāo)獲取字符
3. ?contains(String str)方法
public boolean contains(String str)
- 判斷當(dāng)前字符串中是否包含str
4.?toCharArray()方法
public char[] toCharArray()
- 將字符串轉(zhuǎn)換成數(shù)組
5.?indexOf(String str)方法
public int indexOf(String str)
- 查找str首次在字符串中出現(xiàn)的下標(biāo),若存在,則輸出下標(biāo),若不存在則返回-1
6.?lastIndexOf(String str)方法
public int lastIndexOf(String str)
- 查找字符串在當(dāng)前字符串中最后一次出現(xiàn)的下標(biāo)索引
7.?trim()方法
public String trim()
- 去掉字符串前后的空格。
8.?toUpperCase()方法
public String toUpperCase()
- 將小寫轉(zhuǎn)成大寫
public String toLowerCase()
- 將大寫轉(zhuǎn)成小寫。
9.?endWith(String str)方法
public boolean endWith(String str)
- 判斷字符串是否以str結(jié)尾。
10.?replace(char oldChar,char newChar)方法
public int indexOf(String str)
- 將舊字符轉(zhuǎn)換成新字符
11.?split(String str)方法
public String[] split(String str)
- 根據(jù)str做拆分
12.?equals() 和compare()的比較
- equalsIgnoreCase是忽略大小寫的比較是否相同;
- equals():比較內(nèi)容是否相等;
- compareTo():若字符串首字符相同,則比較第二個,逐次比較相減,若前一個字符串和第二個子字符串都相同,則比較其長度,長度相減;
2.2 String常用方法代碼演示:
package classes.demo07;
import java.util.Arrays;
/**
*
*
*
*
* */
public class Demo {
public static void main(String[] args) {
String name="hello";//"hello"常量存儲在字符串池中
name="張三";//張三賦值給name變量,給字符串賦值時,并沒有修改數(shù)據(jù),而是重新開辟一個空間
String name2="張三";
System.out.println(name.hashCode());
System.out.println(name2.hashCode());
System.out.println(name==name2);
System.out.println("====================");
//演示字符串的另一種創(chuàng)建方式,new String();
String str = new String("java");
String str1 = new String("java");
System.out.println(str==str1);
System.out.println(str.equals(str1));//String 比較使用 equals ,在 String 中重寫了 equals ,此時比較的不是對象的地址,而是字符串的值
System.out.println("****************字符串的常用方法 1********************");
// 1. length(); 返回字符串長度
// 2. charAt(int index); 返回某個位置的字符
// 3. contains(String str); 判斷是否包含某個字符串
String content=" java 是世界上最好用的語言,java真香 ";
System.out.println(content.length());
System.out.println(content.charAt(content.length()-1));
System.out.println(content.contains("java"));
System.out.println(content.contains("Python"));
System.out.println("****************字符串的常用方法 2********************");
// 4. toCharArray(); 返回字符串對應(yīng)數(shù)組
// 5. indexOf(); 返回子字符串首次出現(xiàn)的位置
// 6. lastIndexOf(); 返回字符串最后一次出現(xiàn)的位置
System.out.println(content.toCharArray());
System.out.println(Arrays.toString(content.toCharArray()));
System.out.println(content.indexOf("java"));
System.out.println(content.lastIndexOf("java"));
System.out.println(content.indexOf("java",6));//從下標(biāo)6開始找
System.out.println("****************字符串的常用方法 3********************");
// 7. trim(); //去掉字符串前后空格 無法去掉中間的空格
// 8. toUpperCase(); toLowerCase(); 轉(zhuǎn)換大小寫 toUpperCase();小寫轉(zhuǎn)大寫 toLowerCase(); 大寫轉(zhuǎn)小寫
// 9. endWith(str); startWith(str); 判斷是否以str 結(jié)尾、開頭
String content2=" hello world ";
System.out.println(content2.trim());
System.out.println(content2.toUpperCase());
System.out.println(content2.endsWith("java"));
System.out.println("****************字符串的常用方法 4********************");
// 10. replace(char old, char new); 用新的字符或字符串替換舊的字符或字符串
// 11. split(); 對字符串拆分
System.out.println(content.replace("java","PHP"));
String say=" java is the ,best language";
System.out.println(say.split(" "));
System.out.println(Arrays.toString(say.toCharArray()));
System.out.println(Arrays.toString(say.split(",")));
//String[] strr = say.split("[ ,]}+"); //+號表示拆分多余的空格
//String[] strr = say.split("[ ,]}");//使用空格或者,拆分 可拆分掉逗號
String[] strr = say.split(" ");
for (String s : strr) {
System.out.println(s);
}
System.out.println("****************補(bǔ)充方法 4********************");
//12. 補(bǔ)充兩個 equals/compareTo();比較大小
String s1="hello";
String s2="HELLO";
System.out.println(s1.equalsIgnoreCase(s2));// 忽略大小寫比較
//兩字符不同時比較字符字典序的ascii碼
String S3="abc";//97
String S4="xyz";//120
System.out.println(S3.compareTo(S4));
// 字符相同時比較長度 返回差值
String s5="abc";
String s6="abcdfg";
System.out.println(s5.compareTo(s6));
}
}
運(yùn)行結(jié)果
774889
774889
true
====================
false
true
****************字符串的常用方法 1********************
24
true
false
****************字符串的常用方法 2********************
java 是世界上最好用的語言,java真香
[ , j, a, v, a, , 是, 世, 界, 上, 最, 好, 用, 的, 語, 言, ,, j, a, v, a, 真, 香, ]
1
17
17
****************字符串的常用方法 3********************
hello world
HELLO WORLD
false
****************字符串的常用方法 4********************
PHP 是世界上最好用的語言,PHP真香
[Ljava.lang.String;@1b6d3586
[ , j, a, v, a, , , , i, s, , t, h, e, , ,, b, e, s, t, , l, a, n, g, u, a, g, e]
[ java is the , best language]
java
is
the
,best
language
****************補(bǔ)充方法 4********************
true
-23
-3
2.4 實(shí)踐案例代碼演示:
package classes.demo07;
public class Demo01 {
public static void main(String[] args) {
/* 案例測試
已知String str = "this is a text";
將str中的單詞單獨(dú)獲取
將str中的text替換成practice
在text前面插入一個easy
將每個單詞的首字母改為大寫
*/
String str = "this is a text";
//1.將str中的單詞單獨(dú)獲取
System.out.println("---------1. 將str中的單詞單獨(dú)獲取出來-------");
String[] chars = str.split(" ");
for (String aChar : chars) {
System.out.println(aChar);
}
//2.將str中的text替換成practice
System.out.println("---------2. 將str中的text替換為practice-------");
System.out.println(str.replace("text","practice"));
//3.在text前面插入一個easy
System.out.println("---------3. 在text前面插入easy-------");
System.out.println(str.replace("text","easy text"));
//4.將每個單詞的首字母改為大寫
System.out.println("---------4. 將每個單詞的首字母改為大寫------");
for (int i = 0; i <chars.length ; i++) {
//先用charAt()方法選取第一個字符
char c = chars[i].charAt(0);
//把第一個字符轉(zhuǎn)成大寫,用Character.toUpperCase()方法
char upperfirst = Character.toUpperCase(c);//Character類中的toUpperCase() 方法
//把字符拼回字符串,substring()方法是截取用的
String s = upperfirst + chars[i].substring(1);//substring() 截取方法
System.out.println(s);
}
}
}
運(yùn)行結(jié)果
---------1. 將str中的單詞單獨(dú)獲取出來-------
this
is
a
text
---------2. 將str中的text替換為practice-------
this is a practice
---------3. 在text前面插入easy-------
this is a easy text
---------4. 將每個單詞的首字母改為大寫------
This
Is
A
Text
2.5 可變字符串:StringBuffer 和 StringBuilder
-
StringBuffer:可變長字符串,JDK1.0提供,運(yùn)行效率慢、線程安全。
-
StringBuilder:可變長字符串,JDK5.0提供,運(yùn)行效率快、線程不安全。
-
可變字符串和String的區(qū)別:
- 運(yùn)行效率比String要高
- 比String要節(jié)省內(nèi)存
2.6 StringBuffer方法代碼演示:
package classes.demo07;
public class Demo02 {
public static void main(String[] args) {
// StringBuffer 和 StringBuilder 用法一致
//StringBuilder stringBuffer = new StringBuilder();
StringBuffer stringBuffer = new StringBuffer();
// 1. append(); 追加
stringBuffer.append("java是世界第一");
System.out.println(stringBuffer);
System.out.println(stringBuffer.append("java真香"));
// 2. insert(); 添加、插入
stringBuffer.insert(0,"我在最前面");
System.out.println(stringBuffer.toString());
// 3.replace(); 替換
//這里的下標(biāo)含頭不含尾,如下面只替換下標(biāo)為0-4的內(nèi)容
stringBuffer.replace(0,5,"hello");// 包頭不包尾
System.out.println(stringBuffer.toString());
// 4. delete(); 刪除
stringBuffer.delete(0,5);
System.out.println(stringBuffer.toString());
//5.反轉(zhuǎn)reverse()
stringBuffer.reverse();
System.out.println(stringBuffer.toString());
// 6. 清空
stringBuffer.delete(0,stringBuffer.length());
System.out.println(stringBuffer.toString());
}
}
運(yùn)行結(jié)果
java是世界第一
java是世界第一java真香
我在最前面java是世界第一java真香
hellojava是世界第一java真香
java是世界第一java真香
香真avaj一第界世是avaj
2.7 String和stringBuffer運(yùn)行效率比較代碼演示:
package classes.demo07;
//驗(yàn)證StringBuilder效率高于StringBuffer
public class Demo03 {
public static void main(String[] args) {
//開始時間
long star = System.currentTimeMillis();
/*String ss=" ";
for (int i = 0; i < 9999; i++) {
ss+=i;
}*/
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < 99999; i++) {
stringBuffer.append(i);
}
System.out.println(stringBuffer.toString());
long end = System.currentTimeMillis();
System.out.println("用時:"+(end-star));
}
}
運(yùn)行結(jié)果
用時:37
————————————————————————————————————————————————————————————————————————————
3.更多參考
千峰教育-常用類
原文鏈接:https://blog.csdn.net/qq_60501861/article/details/125492680
相關(guān)推薦
- 2022-11-03 react+tsx中使用better-scroll詳解_React
- 2022-06-01 C#條件編譯、內(nèi)聯(lián)函數(shù)、CLS介紹_C#教程
- 2022-03-05 C語言宏函數(shù)container?of()簡介_C 語言
- 2022-08-14 Hyper-V設(shè)置虛擬機(jī)固定Ip的方法步驟_Hyper-V
- 2022-06-19 微信小程序前端如何調(diào)用python后端的模型詳解_python
- 2022-06-09 詳解Python中*args和**kwargs的使用_python
- 2022-11-13 Redis中HyperLogLog的使用詳情_Redis
- 2022-04-23 Linux基于客戶端用戶密鑰登錄服務(wù)端用戶
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支