java常用類_1

包裝類

包裝類是把八大基本數(shù)據(jù)類型封裝到一個類中,并提供屬性和方法。

是為了更方便的操作基本數(shù)據(jù)類型越驻,而不是取代基本數(shù)據(jù)類型。

Number 類

Number數(shù)值類型是byte道偷、double缀旁、float、int勺鸦、long 和 short類的抽象父類并巍,提供把包裝類轉(zhuǎn)化成基本數(shù)據(jù)類型的方法(xxxValue)。

Integer

Integer是int基本數(shù)據(jù)類型的包裝類换途,在Integer內(nèi)部封裝了一個final int value 的屬性

常用方法:

1.構(gòu)造方法

Integer(int?value)

構(gòu)造一個新分配的Integer對象懊渡,它表示指定的int值刽射。

Integer(String?s)

構(gòu)造一個新分配的Integer對象,它表示String參數(shù)所指示的int值剃执。

2.int<->Integer<->string

????????????//int->Integer

???????? Integer? i1 = new Integer(10);

???????? Integer? i2= Integer.valueOf(20);


????????????// Integer->int

???????? int a = i1.intValue();


???????? // String->Integer

???????? Integer? i3 = new Integer("30");

???????? Integer? i4= Integer.valueOf("40");


???????? //Integer->String

???????? System.out.println(i3.toString());



???????????? // String->int

???????? int b= Integer.parseInt("50");


???????????? //int->String

???????? String? str= Integer.toString(10);

???????? //String str2 = Integer.toString(8, 2);

???????? //System.out.println(str2);

3.Comparable接口

Comparable 表示具有比較能力誓禁,對象可比較大小,此接口強行對實現(xiàn)它的每個類的對象進行整體排序肾档。這種排序被稱為類的自然排序摹恰。

????????a.compareTo(b)

在數(shù)字上比較 如果該 Integer 等于 Integer 參數(shù),則返回 0 值怒见;

如果該 Integer 在數(shù)字上小于 Integer 參數(shù)俗慈,則返回小于 0 的值;?

如果 Integer 在數(shù)字上大于 Integer 參數(shù)速种,則返回大于 0 的值;?


自動裝箱和自動拆箱

把基本數(shù)據(jù)類型自動轉(zhuǎn)化成對象的包裝類的過程稱為自動裝箱(auto-boxing)

如? ? ? ? ?Integer? i = 10;? ? ?//Integer i=new Integer(10);

把包裝類自動轉(zhuǎn)化成對于的基本數(shù)據(jù)類型的過程稱為自動拆箱(auto-unboxing)

如? ? ? ? ? int? a = i;? ? ? ? ? ? ? //int? a =i.intValue();

使得代碼較為簡便低千,但不要過于頻繁使用拆裝箱操作配阵。


String?

String 類代表字符串。Java 程序中的所有字符串字面值(如"abc" )都作為此類的對象示血。

字符串本質(zhì)上是一個字符數(shù)組棋傍,它們的值在創(chuàng)建之后不能更改,所以字符串是常量难审;

可以把字符串看出是字符數(shù)組的包裝類瘫拣,內(nèi)部聲明一個private final char value[];

????String a="abc";

? ? String b="abc";

? System.out.print(a==b);

?????結(jié)果:true

原因:編譯時,這兩個"abc"被認為是同一個對象保存到了常量池中告喊;運行時JVM則認為這兩個變量賦的是同一個對象麸拄,所以返回true。

?String 對象是不可變的黔姜,可以共享拢切。

通過字面量創(chuàng)建的字符串分配在常量區(qū)。

字符串常用方法

1.構(gòu)造方法

byte[] bytes1= {97,98,99};

String str= new String(bytes1);

------------------------------------

byte[] byte2 = {-42,-48};

??????? String str3 = null;

??????? try {

??????????? // 使用指定的字符集對字節(jié)序列進行解碼

??????????? str3 = new String(byte2,"GBK");

??????? }catch (UnsupportedEncodingException e) {

??????????? e.printStackTrace();

??????? }

------------------------------------

對一個utf-8的字節(jié)序列進行解碼

??????? byte[] byte3 ={-28,-72,-83,-28,-72,-83};

??????? try {

??????????? // String str4 = new String(byte3, "UTF-8");

??????????? String str4 = new String(byte3,0,3, "UTF-8");

??????? }catch (UnsupportedEncodingException e) {

??????????? e.printStackTrace();

??????? }

--------------------------------------

通過字符數(shù)組構(gòu)建字符串

??????? char[] c1 = {'a','b','c','中','國'};

??????? // String str5 = new String(c1);

??????? Stringstr5 = new String(c1,0,3);


2.字符串的比較

public static void main(String[] args) {

???????? // 【3】字符串比較

???????? String str1 = "abc";

???????? String str2 = "Abc";


???????? System.out.println(str1.compareTo(str2));

???????? // 忽略大小寫比較

???????? System.out.println(str1.compareToIgnoreCase(str2));


???????? // 需求:請輸入驗證碼

???????? /*String validCode = "a4Df";

???????? System.out.println("請輸入驗證碼:"+validCode);

???????? Scanner sc= new Scanner(System.in);

???????? String? inputStr = sc.next();


???????? if(inputStr.compareToIgnoreCase(validCode)? == 0) {

????????????? System.out.println("驗證碼正確");

???????? }else? {

????????????? System.out.println("驗證碼錯誤");

???????? }*/


???????? System.out.println(str1.contentEquals(str2));

???????? System.out.println(str1.equals(str2));

???????? System.out.println(str1.equalsIgnoreCase(str2));

???? }

3.查找秆吵、搜索字符串

public static void main(String[] args) {

??????? // 查找淮椰、搜索字符串中是否包含其他子串

??????? String str1 = "hello world";


??????? // 是否包含子串

??????? System.out.println(str1.contains("world"));


??????? System.out.println(str1.startsWith("he"));

??????? System.out.println(str1.endsWith("world"));

??????? System.out.println(str1.startsWith("ll", 2));


??????? // 需求:判斷一個文件是否是png圖片

??????? String fileName = "logo.png";

??????? if(fileName.endsWith(".png")) {

??????????? System.out.println(fileName+"是一張圖片");

??????? }



??????? // 查找字符串

??????? String str2 = "hello world hello";

??????? // 從左向右查找字符'o'第一次出現(xiàn)的位置,找到返回索引,沒找到返回-1

??????? System.out.println(str2.indexOf('t'));

??????? System.out.println(str2.indexOf('o',5));

??????? // 從左向右查找字符串“l(fā)l”第一次出現(xiàn)的位置,找到返回索引纳寂,沒找到返回-1

??????? System.out.println(str2.indexOf("ll"));

??????? System.out.println(str2.indexOf("ll",5));


??????? // 從右向左查找字符'o'第一次出現(xiàn)的位置,找到返回索引主穗,沒找到返回-1

??????? System.out.println(str2.lastIndexOf('o'));

??????? // lastIndex(char,fromIndex)

??????? // lastIndex(string);

??????? // lastIndex(string,fromIndex);

??? }


4.格式化字符串

通過指定占位符(%開始)格式化字符串

????????????????????%d? ? ? ? ? ? ? ? 格式化整形

????????????????????%f? ? ? ? ? ? ? ? ?格式化浮點型

????????????????????%.nf? ? ? ? ? ? ? 格式化浮點型四舍五入保留n為小數(shù)

????????????????????%c????????????????格式化字符

????????????????????%s????????????????格式化字符串


???????? // 格式化字符串

???????? float price = 998.126f;

???????? int a? = 10;

???????? int b = 2;

???????? // 10 / 2 = 5


???????? String str1= String.format("%d / %d = %d", a,b,(a/b));

???????? System.out.println(str1);

???????? // 四舍五入保留兩位小數(shù)

???????? String str2? =String.format("$%.2f", price);

???????? System.out.println(str2);

???? }

5.把字符串按指定編碼集編碼成對于的字節(jié)序列

????????//String str3 = "abc";

??????? String str3 = "中國";???????

??????? // 使用默認的字符集(GBK)

??????? byte[] byte1 = str3.getBytes();

??????? System.out.println(Arrays.toString(byte1));


??????? //String str4 = "abc";

??????? String str4 = "中國";???

??????? // 使用utf8編碼

??????? byte[] bytes2 = str4.getBytes("UTF-8");

??????? System.out.println(Arrays.toString(bytes2));

6.替換字符串

public static void main(String[] args)? {

???????? String str1 = "hello,world";

???????? String newStr1 = str1.replace('o', '8');

???????? System.out.println(newStr1);


???????? String newStr2 = str1.replace("ll", "");

???????? System.out.println(newStr2);


???????? // 需求:186-1234-2234

???????? String str3 = "186-1234-2234";

???????? System.out.println(str3.replace("-", ""));


???????? // 正則表達式專門用于驗證字符串是否符合特定的格式。

???????? String str4 = "6764";

???????? // 驗證str4是否輸入的是一串數(shù)字

???????? boolean r = str4.matches("\\d+");

???????? System.out.println(r);


???????? // 需求:abc123te23daf去掉數(shù)字

???????? String str5 = "abc123te23daf";

????????//String newStr5 = str5.replaceAll("\\d+","");

???????? String newStr5 = str5.replaceFirst("\\d+", "");

???????? System.out.println(newStr5);

}

7.拆分字符串

public static void main(String[] args)? {


???????? // 根據(jù)指定字符串拆分字符串

???????? String str1 = "abc-123";

???????? String[] arr = str1.split("-");

???????? System.out.println(Arrays.toString(arr));


???????? // 需求:請快速構(gòu)建一個26個小寫英文字母的數(shù)組

???????? String str2= "abcdefghijklmnopqrstuvwxyz";

???????? String[] arr2 = str2.split("");?????

???????? System.out.println(Arrays.toString(arr2));


???????? // 根據(jù)正則拆分字符串

???????? String str3 = "abc123ta12asd";

???????? String[] arr3 = str3.split("\\d+");

???????? System.out.println(Arrays.toString(arr3));


???????? // 需求:請獲取一個文件的文件名

???????? String fileName = "logo.png";

???????? String[]arr4 = fileName.split("\\.");

???????? System.out.println(Arrays.toString(arr4));

???? }

8.求子串毙芜、大小寫轉(zhuǎn)換

public static void main(String[] args)? {

??????? //求子串

??????? String str1 = "abc123";

??????? // fromIndex:開始位置忽媒,endInde 結(jié)束的位置

??????? // 含頭不含尾

??????? String sub1 = str1.substring(0, 3);

??????? System.out.println(sub1);


??????? String sub2 = str1.substring(3);

??????? System.out.println(sub2);



??????? // 大小寫轉(zhuǎn)換

??????? String str3 = "Abc";

??????? System.out.println(str3.toUpperCase());

??????? System.out.println(str3.toLowerCase());

??? }

9.其他方法

public static void main(String[] args)? {

??????? // 去掉前導空格和后導空格

??????? String str1 = "? abc? ? ";

??????? String newStr1 = str1.trim();

??????? System.out.println(str1.length());


??????? // 獲取字符串的字符數(shù)組

??????? char[] arr = str1.toCharArray();

??????? System.out.println(Arrays.toString(arr));


??????? // 把其他數(shù)據(jù)類型轉(zhuǎn)化為字符串

??????? String str2= String.valueOf(10);

??????? System.out.println(str2);

??? }

StringBuffer和StringBuilder


StringBuffer

StringBuffer是字符的可變?nèi)萜鳌腋粥?梢栽诔绦蜻\行過程中向容器中添加猾浦、刪除陆错、修改字符。

StringBuffer 本質(zhì)上是一個字符數(shù)組的包裝類金赦,并提供了很多方法向這個字符數(shù)組中添加音瓷、刪除、修改字符夹抗。

StringBuffer 是線程安全的

StringBuffer工作原理

StringBuffer 內(nèi)部維護了一個字符數(shù)組绳慎,默認字符數(shù)組的長度是16.當開發(fā)者向這個字符數(shù)組中添加元素時,如果有額外空間漠烧,直接添加到數(shù)組中杏愤,如果沒有額外空間,StringBuffer內(nèi)部自動拓容已脓。

拓容規(guī)則:當前容量*2+2,根據(jù)拓容的新空間珊楼,復(fù)制當前的數(shù)組內(nèi)容到新數(shù)組中。

public static void main(String[] args) {

???????? String Buffersb = new StringBuffer();

???????? sb.append("a");

???????? sb.append("b");

???????? System.out.println(sb.capacity());


???????? sb.append("1234567890ABCD");

???????? sb.append('x');

???????? System.out.println(sb);

???????? System.out.println(sb.capacity());


???????? // 未來如果確定不再向sb中添加字符度液,

???????? // 優(yōu)化內(nèi)部的數(shù)組到指定的長度

???????? sb.trimToSize();

???????? System.out.println(sb.capacity());

???? }


常用方法

public class Test01 {

???? public static void? main(String[] args) {

???????? StringBuffer sb1 = new StringBuffer();

???????? // 【1】添加

???????? sb1.append("hello");

???????? sb1.append('d');


???????? // 返回字符串的長度

???????? System.out.println(sb1.length());

???????? // 返回容器的大小

???????? System.out.println(sb1.capacity());


???????? // 【2】刪除

???????? //System.out.println(sb1);

???????? //sb1.delete(0, 5);

???????? //System.out.println(sb1);


???????? // 【3】insert(index,t) 在指定位置index添加t

???????? sb1.insert(0, "123");

???????? System.out.println(sb1);


???????? // 【4】修改

???????? sb1.setCharAt(0,? 'A');

???????? System.out.println(sb1);


???????? // 【5】setLength

???????? sb1.setLength(0);

????? // 清空容器內(nèi)容

???????? sb1.append("中國");

???????? System.out.println(sb1);

???? }

}

StringBuilder


StringBuiler就是為了緩解StringBuffer的執(zhí)行效率低而產(chǎn)生的厕宗,但線程不安全。

兩者工作原理與使用方法相似

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末堕担,一起剝皮案震驚了整個濱河市已慢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌霹购,老刑警劉巖佑惠,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異齐疙,居然都是意外死亡膜楷,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門贞奋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來把将,“玉大人,你說我怎么就攤上這事忆矛〔於祝” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵催训,是天一觀的道長洽议。 經(jīng)常有香客問我,道長漫拭,這世上最難降的妖魔是什么亚兄? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮采驻,結(jié)果婚禮上审胚,老公的妹妹穿的比我還像新娘匈勋。我一直安慰自己,他們只是感情好膳叨,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布洽洁。 她就那樣靜靜地躺著,像睡著了一般菲嘴。 火紅的嫁衣襯著肌膚如雪饿自。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天龄坪,我揣著相機與錄音昭雌,去河邊找鬼。 笑死健田,一個胖子當著我的面吹牛烛卧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播妓局,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼总放,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了跟磨?” 一聲冷哼從身側(cè)響起间聊,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤攒盈,失蹤者是張志新(化名)和其女友劉穎抵拘,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體型豁,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡僵蛛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了迎变。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片充尉。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖衣形,靈堂內(nèi)的尸體忽然破棺而出驼侠,到底是詐尸還是另有隱情,我是刑警寧澤谆吴,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布倒源,位于F島的核電站,受9級特大地震影響句狼,放射性物質(zhì)發(fā)生泄漏笋熬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一腻菇、第九天 我趴在偏房一處隱蔽的房頂上張望胳螟。 院中可真熱鬧昔馋,春花似錦、人聲如沸糖耸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蔬捷。三九已至垄提,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間周拐,已是汗流浹背铡俐。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留妥粟,地道東北人审丘。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像勾给,于是被迫代替她去往敵國和親滩报。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 【程序1】 題目:古典問題:有一對兔子播急,從出生后第3個月起每個月都生一對兔子脓钾,小兔子長到第三個月后每個月又生一對兔...
    開心的鑼鼓閱讀 3,320評論 0 9
  • 從網(wǎng)上復(fù)制的,看別人的比較全面桩警,自己搬過來可训,方便以后查找。原鏈接:https://www.cnblogs.com/...
    lxtyp閱讀 1,346評論 0 9
  • 在編寫程序的過程中捶枢,不了避免的要用到字符串握截,所以String類的常用方法的用法是必須掌握的。學習一個類的使用方法最...
    Geg_Wuz閱讀 1,264評論 0 4
  • 50道經(jīng)典Java編程練習題烂叔,將數(shù)學思維運用到編程中來谨胞。抱歉哈找不到文章的原貼了,有冒犯的麻煩知會聲哈~ 1.指數(shù)...
    OSET我要編程閱讀 6,962評論 0 9
  • 所有的基本類型蒜鸡,都有對應(yīng)的類類型 byte類型封裝類Byte胯努,short類型封裝類Short,int類型封裝類In...
    從小白到全棧閱讀 232評論 0 0