久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

#String類(lèi)簡(jiǎn)述(小白理解,,小白編寫(xiě),,歡迎大神指點(diǎn),小白跪謝)

 路人甲Java 2021-04-26

@

一,、前言(可忽略)

作者是一位自學(xué)JAVA的小白,,通過(guò)網(wǎng)上視頻學(xué)習(xí)和自己對(duì)String類(lèi)的理解,現(xiàn)將自己對(duì)String類(lèi)的認(rèn)知描述如下:(希望能與各位同行好友共同分享自己所學(xué)的java知識(shí),同時(shí),,也熱切期望各位同行前輩能夠幫助作者指出不足,,讓小白的編程技術(shù)能更上一層樓,感謝各位同行大佬,。
String是一種引用類(lèi)型,,通過(guò)存儲(chǔ),、引用方法區(qū)字符串常量池中對(duì)應(yīng)的字符串的地址來(lái)實(shí)現(xiàn)存儲(chǔ)、賦值等一系列相應(yīng)的操作,,字符串存儲(chǔ)在方法區(qū)字符串常量池中,,在已有的基礎(chǔ)上不會(huì)新建。垃圾回收器不會(huì)釋放常量,。

二、String變量的認(rèn)知

String引用變量直接字符串賦值
(深入原理:是將字符串的內(nèi)存地址賦值給變量,,然后String變量通過(guò)索引內(nèi)存地址找到位于字符串常量地址池中的字符串)
(小白理解:String是一種引用類(lèi)型,,通過(guò)引用字符串內(nèi)存地址來(lái)調(diào)用字符串,JVM不會(huì)在已有的基礎(chǔ)上新建或者釋放字符串)
例一:

   public static void main(String[] args) {
        String name="hello";
        String name1="hello";
        System.out.println(name==name1);//比較的是字符串內(nèi)存地址

輸出:

true

例二:
但這種情況不是

        String i=new String("abc");
        String j=new String("abc");
        System.out.println(i==j);

輸出

false

因?yàn)閚ew是在堆內(nèi)存創(chuàng)建Sring對(duì)象來(lái)保存在字符串常量池中的String對(duì)象(字符串)的內(nèi)存地址

i和j保存的是在堆內(nèi)存中的String對(duì)象的內(nèi)存地址

并不是在字符串常量池中的String對(duì)象(字符串)的內(nèi)存地址

如要使new的對(duì)象輸出為true,,則必須調(diào)用String.equals方法

         System.out.println(i.equals(j));//true,,但可能報(bào)空指針異常
         //最好這樣寫(xiě):(來(lái)自一位資歷深厚的程序員,雖不是我)
         System.out.println("abc".equals(j));
         System.out.println(name);//注意:直接輸出String引用變量會(huì)直接調(diào)用重寫(xiě)toString方法

三,、String類(lèi)的構(gòu)造方法

 String s=new String(""); //s1指向堆內(nèi)存中new的String對(duì)象,由該String對(duì)象保存字符串的內(nèi)存地址,,
 String s1=""; 通過(guò)創(chuàng)建String對(duì)象來(lái)引用字符串
 String s2=new String(char 數(shù)組);       //將char數(shù)組內(nèi)的元素轉(zhuǎn)換成字符串
 String s3=new String(char 數(shù)組,offset(起始下標(biāo)),coute(長(zhǎng)度));//將char數(shù)組內(nèi)起始下標(biāo)為i往后j個(gè)長(zhǎng)度的元素轉(zhuǎn)換為字符串
 String s4=new String(byte 數(shù)組);//將byte數(shù)組內(nèi)的元素轉(zhuǎn)換成字符串
 String s3=new String(byte 數(shù)組,起始下標(biāo),長(zhǎng)度); //將byte數(shù)組內(nèi)起始下標(biāo)為i往后j個(gè)長(zhǎng)度的元素轉(zhuǎn)換為字符串

以上是常用的,,實(shí)在不行,自己看源碼或者API(英文可以找英文,,中文不行找語(yǔ)文老師),。

四,、String類(lèi)的基本方法

4.1 toString()方法

? ?? public String toString()

? ?? 作用:將對(duì)象轉(zhuǎn)換成字符串,,

        Exercise string=new Exercise();
        System.out.println(string.toString());

? ?? 輸出:該對(duì)象的包名.類(lèi)名@該對(duì)象的內(nèi)存地址

一般使用的話(huà),是輸出該對(duì)象構(gòu)造函數(shù)的參數(shù),,改寫(xiě)toString()方法成我們想要輸出的格式
返回需求形式

   public String toString()
   {
     return year+"年"+month+"月"+day+"日";
   }

注意:輸出String對(duì)象不必重寫(xiě)toString()方法,,問(wèn)就是已經(jīng)寫(xiě)好了(看源碼)。

4.2 equals()方法

? ??public boolean equals(Object anObject)

? ??作用:比較兩個(gè)對(duì)象的內(nèi)存地址是否相等

一般使用的話(huà),,是比較兩個(gè)對(duì)象的內(nèi)容(構(gòu)造函數(shù)的參數(shù))是否相等

    @Override
    public boolean equals(Object obj) {
        if (obj==null||!(obj instanceof Exercise)){
            return false;
        }
        if (obj==this){
            return true;
        }
        Exercise exercise=(Exercise)obj;
        if (this.id==exercise.id&&this.name==exercise.name)//比較構(gòu)造函數(shù)的參數(shù)
        {
            return  true;
        }
        return false;
    }

注意:比較兩個(gè)對(duì)象不能用“==”,,因?yàn)閖ava中是看兩個(gè)對(duì)象的內(nèi)存地址,如比較兩個(gè)對(duì)象是否相同或內(nèi)容相同,,必須重寫(xiě)equals()方法,。

        String string=new String();
        String string1=new String();
        System.out.println(string==string1);//false

4.3 equalsIgnoreCase()方法

? ??public boolean equalsIgnoreCase(String anotherString)

? ??參數(shù):anotherString - 與此 String 進(jìn)行比較的 String。

? ??作用: 忽略字母大小寫(xiě)比較字符串大小

        System.out.println("ABC".equalsIgnoreCase("abc")); //忽略字母大小寫(xiě)比較字符串大小

4.4 getBytes()方法

? ??public byte[] getBytes()

? ??作用:將字符串的字符轉(zhuǎn)換成對(duì)應(yīng)的Byte組元素

        String string3="abc";
        byte []Byte=string3.getBytes();
        //將字符串的字符轉(zhuǎn)換成對(duì)應(yīng)的Byte組元素
        for (int i = 0; i <Byte.length ; i++) {
            System.out.println( Byte[i]);
        }

4.5 indexOf()方法

? ??作用:查找某個(gè)字符串在當(dāng)前字符串第一次出現(xiàn)的下標(biāo)

        String string4="ABCDefG";
        String string5="G";
        System.out.println("ABCDefG".indexOf("G"));//6
        //查找某個(gè)字符串在當(dāng)前字符串第一次出現(xiàn)的下標(biāo)

4.6 lastindexOf()方法

? ??作用:查找某個(gè)字符串在當(dāng)前字符串中最后一次出現(xiàn)的下標(biāo)

        System.out.println("GABCDefG".lastIndexOf("G"));//7

4.7 charAt( )方法

? ??public char charAt(int index)

? ??參數(shù):index-索引,,下標(biāo)

? ??作用:字符串是一個(gè)String對(duì)象,,String對(duì)象能調(diào)用方法charAt(索引指定處的值)

           char c="China".charAt(1);//字符串是一個(gè)String對(duì)象,String對(duì)象能調(diào)用方法charAt(索引指定處的值)
           System.out.println(c);//h

4.8 compareTo()方法

? ??作用:compareTo方法比較字符串大小(拿著第一個(gè)字符串的第一個(gè)字符與后面字符串的第一個(gè)字符一一對(duì)應(yīng)比較

           int result="abc".compareTo("abc");
           //compareTo方法比較字符串大小(拿著第一個(gè)字符串的第一個(gè)字符與后面字符串的第一個(gè)字符一一對(duì)應(yīng)比較
           System.out.println(result);//=0  前后一致

           int result2="abc".compareTo("abcd");
           System.out.println(result2);//=-1   前小后大

           int result4="abcd".compareTo("abc");
           System.out.println(result4);//=1    前大后小

           int result3="abcd".compareTo("abce");
           System.out.println(result3);//=-1

           int result5="abce".compareTo("abcd");
           System.out.println(result5);//=1

4.9 contains()方法

? ??作用:判斷第一個(gè)字符串中是否包含第二個(gè)字符串 true包含 false 不包含

            System.out.println("Hello World!".contains("Hello"));
           //判斷第一個(gè)字符串中是否包含第二個(gè)字符串  true包含 false 不包含

4.10 startsWith()方法

? ?? 作用:測(cè)試字符串是否以某字符串開(kāi)頭

        System.out.println("2021-1-5".startsWith("2021"));//true
        System.out.println("2021-1-5".startsWith("2020"));//false

4.11 endsWith()方法

? ?? 作用:判斷第一個(gè)字符串是否以后面的字符串結(jié)尾

           System.out.println("I want to learn Java".endsWith("Java"));
           //判斷第一個(gè)字符串是否以后面的字符串結(jié)尾  true 是

4.12 isEmpty()方法

? ?? 作用:判斷某個(gè)字符串是否為空

        System.out.println("程序猿江小白".isEmpty());//false
        String string8="";
        System.out.println(string8.isEmpty());//true

4.13 replace()方法

? ?? 作用: 將當(dāng)前字符串中的某些字符串替換為指定字符串,,并重新生成子字符串

System.out.println("ABCGEF".replace("G","D"));//ABCDEF

4.14 split()方法

? ?? 作用:以某個(gè)字符串為分隔符將當(dāng)前字符串拆分成多個(gè)子字符串

String[]ymd="2021-1-2".split("-");
        for (int i = 0; i <ymd.length ; i++) {
            System.out.println(ymd[i]);
        }
        /**
         * 2021
         * 1
         * 2
         */

String param="name=zhangliang&password=123&age=20";
 //以"="或"|"為分隔符將當(dāng)前字符串拆分成多個(gè)子字符串
        String[] string10=param.split("=|&");//| 或
        for (int k = 0; k <string10.length ; k++) {
            System.out.println(string10[k]);
        }
        /**
         * name
         * zhangliang
         * password
         * 123
         * age
         * 20
         */

4.15 substring( )方法

? ?? 作用:截取父字符串,,生成子字符串

        System.out.println("How should I face with my lost future".substring(13));
        //face with my lost future
        //從beginIndex開(kāi)始截取,,截取endIndex-beginIndex個(gè)長(zhǎng)度,,到第endIndex-1位字符結(jié)束(不包括endIndex位字符)
        System.out.println("How should I face with my lost future".substring(0,2));
        //Ho

4.16 toCharArray()方法

? ?? 作用:將字符串轉(zhuǎn)換成char數(shù)組

        char[]chars1="China".toCharArray();
        for (int i = 0; i <chars1.length ; i++) {
            System.out.println(chars1[i]);
        }
        /**
         *   C
         *   h
         *   i
         *   n
         *   a
         */

4.17 toLowerCase()方法

? ?? 作用:將字符串全部以小寫(xiě)字符表示

System.out.println("AMeriCAN".toLowerCase());//american

4.18 toUpperCase()方法

? ?? 作用:將字符串全部以大寫(xiě)字符表示

 System.out.println("chIna".toUpperCase());//CHINA

4.19 trim()方法

? ?? 作用:去除字符串前后的空白

 System.out.println("       time        ".trim());//time
 System.out.println("        love       story     ".trim());//love      story//

4.20 valueof()方法

? ?? 作用:將非字符串轉(zhuǎn)換成字符串

/**
         * String中唯一的靜態(tài)方法獨(dú)苗
         * String.valueof
         * 作用:將非字符串轉(zhuǎn)換成字符串
         */
         String string1=String.valueOf(new StringTest02());
        /**
         *  valueof方法,,在參數(shù)為一個(gè)對(duì)象時(shí),如果該對(duì)象沒(méi)有重寫(xiě)toString()底層會(huì)自
         *  動(dòng)調(diào)用object.toString方法
         *  為什么輸出引用的時(shí)候,,會(huì)調(diào)用toString()方法
         *  因?yàn)閜rintln底層是調(diào)用的valueof(),,而valueof()底層調(diào)用的是obj的toString
         *  方法
         *  System.out.println()打印輸出時(shí)都是先轉(zhuǎn)換成字符串
         */

        System.out.println(string1);

4.21 StringBuffer()方法與StringBuilder()方法

? ?? 作用:拼接字符串

        StringBuffer stringBuffer=new StringBuffer();
        //指定初始化容量的StringBuffer對(duì)象(字符串緩沖區(qū)對(duì)象)默認(rèn)初始化16個(gè)長(zhǎng)度的byte數(shù)組
        stringBuffer.append("A");//拼接字符串調(diào)用append進(jìn)行追加,如果byte數(shù)組滿(mǎn)了會(huì)自動(dòng)擴(kuò)容
        stringBuffer.append("B");
        stringBuffer.append("C");
        System.out.println(stringBuffer);//ABC
        
        StringBuilder stringBuilder=new StringBuilder();
        stringBuilder.append("a");
        stringBuilder.append("b");
        stringBuilder.append("c");
        System.out.println(stringBuilder);//abc
        /**
         * StringBuffer與StringBuilder的區(qū)別
         * StringBuffer中的方法都有:synchronized關(guān)鍵字修飾,。表示StringBuffer在多線(xiàn)程環(huán)境下運(yùn)行是安全的
         * StringBuilder中的方法沒(méi)有,,表示在多線(xiàn)程環(huán)境下是不安全的,但效率較高
         */

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多