国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

String類基礎(chǔ)的那些事!

30e8336b8229 / 3487人閱讀

摘要:第三階段常見對象的學(xué)習(xí)第一章常見對象類一類的概述及其構(gòu)造方法概述多個字符組成的一串?dāng)?shù)據(jù),例如也可以看成是一個字符數(shù)組。

第三階段 JAVA常見對象的學(xué)習(xí) 第一章 常見對象——String類 (一) String 類的概述及其構(gòu)造方法 (1) 概述

多個字符組成的一串?dāng)?shù)據(jù),例如 “abc” 也可以看成是一個字符數(shù)組。

而通過 API我們又可以知道

A:字符串字面值“abc”也可以看成是一個字符串對象

B:字符串是常量,一旦被賦值,就不能改變

(2) 構(gòu)造方法
//空構(gòu)造
public String()

//把字節(jié)數(shù)組轉(zhuǎn)換成字符串
public String(byte[] bytes)

//把字節(jié)數(shù)組的一部分轉(zhuǎn)換成字符串
public String(byte[] bytes,int offset,int length)

//把字符數(shù)組轉(zhuǎn)換成字符串
public String(char[] value)

//把字符數(shù)組的一部分轉(zhuǎn)換成字符串
public String(char[] value,int offset,int count)

//把字符串常量值轉(zhuǎn)換成字符串    
public String(String original)

//下面的這一個雖然不是構(gòu)造方法,但是結(jié)果也是一個字符串對象
String s = "hello";

簡單總結(jié):String類的構(gòu)造方法可以將 字節(jié)、字符數(shù)組、字符串常量(全部或者部分)轉(zhuǎn)換為字符串類型

(3) 字符串方法
//返回此字符串的長度
public int length ();
(4)構(gòu)造方法和lenght方法的小案例
//以前三個為例
public class StringDemo {
    public static void main(String[] args) {
        //public String():空構(gòu)造
        String s1 = new String();
        System.out.println("s1:" + s1);
        System.out.println("s1.length:" + s1.length());
        System.out.println("-------------------------");

        //把字節(jié)數(shù)組轉(zhuǎn)換成字符串:public String(byte[] bytes)
        byte[] bys = {97,98,99,100,101}; //abcde
        String s2 = new String(bys);
        System.out.println("s2:" + s2);
        System.out.println("s2.length:" + s2.length());
        System.out.println("-------------------------");

        //把字節(jié)數(shù)組的一部分轉(zhuǎn)換成字符串:
        //public String(byte[] bytes,int offset,int length)
        String s3 = new String(bys,1,3);
        System.out.println("s3:" + s3);
        System.out.println("s3.length:" + s3.length());
    }
}
//運行結(jié)果:
s1:
s1.length:0
-------------------------
s2:abcde
s2.length:5
-------------------------
s3:bcd
s3.length:3

注:97,98,99,100,101 在ASCII碼中代表abcde,不熟悉的朋友請自行查閱

(5) 經(jīng)典例題(必看)

例題一:

/*
 *  字符串特點:一旦被賦值,就不能改變
 */
public class StringDemo {
    public static void main(String[] args) {
        String s = "Hello";
        s += "World";
        System.out.println("s:" + s);
    }
}

//運行結(jié)果:
s:HelloWorld

解釋:不能改變是指字符串對象本身不能改變,而不是指對象的引用不能改變,上述過程中,字符串本身的內(nèi)容是沒有任何變化的,而是分別創(chuàng)建了三塊內(nèi)存空間,(Hello) (World) (HelloWorld) s → Hello + World → HelloWorld 。String內(nèi)容的改變實際上是通過字符串之間的拼接、斷開進行的,如上例中拼接后s的引用也就指向了 拼接后的HelloWorld

總結(jié):開發(fā)中,盡量少使用 + 進行字符串的拼接,尤其是循環(huán)內(nèi),我們更加推薦使用StringBuild、StringBuffer,此內(nèi)容下一篇詳細講解。

例題二:

//兩者的區(qū)別
String s = new String("hello");
String s = "hello";

前者創(chuàng)建了2個 (1個) 對象,后者創(chuàng)建了1個 (0個) 對象

下面解釋中若存在情況滿足則,分別為創(chuàng)建1個和0個對象

解釋:

String s = new String("hello"); 創(chuàng)建實例過程

在堆中創(chuàng)建一個對象 “hello” (new出來的),讓 s 引用這個對象

在字符串常量池中查找是否存在內(nèi)容為 “hello”的字符串對象

? A:若存在,將new出的對象與字符串常量池中已存在的相聯(lián)系

? B:若不存在,則在字符串常量池中創(chuàng)建一個內(nèi)容為 "abc" 的字符串對象,并與堆中 的對相聯(lián)系

String s = "hello"; 創(chuàng)建實例過程

在字符串常量中查找是否存在內(nèi)容為"hello"的字符串對象

? A:若存在,讓s直接引用該對象

? B:若不存在,則直接讓s引用該對象

總結(jié):前者new一個對象,“hello”隱式創(chuàng)建一個對象,后者只有“hello”創(chuàng)建一個對象,在開發(fā)中,盡量使用 String s = "hello" 的方式,效率比另一種高。

例題三:

public class StringDemo {
    public static void main(String[] args) {
        String s1 = new String("hello");
        String s2 = new String("hello");
        System.out.println(s1 == s2);//false
        System.out.println(s1.equals(s2));//true

        String s3 = new String("hello");
        String s4 = "hello";
        System.out.println(s3 == s4);//false
        System.out.println(s3.equals(s4));//true

        String s5 = "hello";
        String s6 = "hello";
        System.out.println(s5 == s6);//true
        System.out.println(s5.equals(s6));//true
    }
}
//運行結(jié)果
false
true
false
true
true
true

解釋: == 比較地址值是否相同、String中的equals()比較字符串內(nèi)容是否一致

例題四:

public class StringDemo2 {
    public static void main(String[] args) {
        String s1 = "Hello";
        String s2 = "World";
        String s3 = "HelloWorld";

        System.out.println(s3 == s1 + s2);
        System.out.println(s3.equals(s1 + s2));
        System.out.println(s3 == "Hello" + "World"); //重點
        System.out.println(s3.equals("Hello" + "World"));
    }
}
//運行結(jié)果
false
true
true
true

總結(jié):

字符串中如果是變量相加,先開空間,再拼接

字符串中如果是字符串相加,是先加,然后在常量池中找,如果有就直接返回否則就創(chuàng)建

(二) String類的功能 (1) 判斷功能
//比較字符串的內(nèi)容是否相同,區(qū)分大小寫
boolean equals(Object obj)

//比較字符串的內(nèi)容是否相同,不區(qū)分大小寫
boolean equalsIgnoreCase(String str)

//判斷大字符串中是否包含小字符串
boolean contains(String str)

//判斷某個字符串是否以某個指定的字符串開頭
boolean startsWith(String str)

//判斷某個字符串是否以某個指定的字符串結(jié)尾
boolean endsWith(String str)

//判斷字符串是否為空
boolean isEmpty()

注意:
String s = “ ”;   // 字符串內(nèi)容為空
String s = null;  // 字符串對象為空

簡單模擬登錄案例 (String版)

import java.util.Scanner;

/*
 *  模擬登陸案例,給三次機會,并且提示剩余次數(shù)
 *      A:定義用戶名和密碼(已經(jīng)存在的)
 *      B:鍵盤錄入用戶名和密碼
 *      C:比較用戶名和密碼
 *      D:給三次機會,用循環(huán)改進
 */

public class StringDemo {
    public static void main(String[] args) {
        for (int x = 0; x < 3; x++) {
            String username = "admin";
            String password = "admin888";

            Scanner sc = new Scanner(System.in);
            System.out.println("請輸入用戶名");
            String name = sc.nextLine();
            System.out.println("請輸入密碼");
            String psw = sc.nextLine();
            if (name.equals(username) && psw.equals(password)) {
                System.out.println("登錄成功");
            } else {
                if ((2 - x) == 0) {
                    System.out.println("你的賬號已經(jīng)被鎖定,請與管理員聯(lián)系");
                } else {
                    System.out.println("登錄失敗,你還有" + (2 - x) + "次機會");
                }
            }
        }
    }
}
(2) 獲取功能
//獲取字符串的長度
int length()

//獲取指定索引的字符
char charAt(int index)

//返回指定字符在此字符串中第一次出現(xiàn)的索引
int indexOf(int ch)
//為什么這里是int而不是char?
//原因是:‘a(chǎn)’和‘97’其實都能代表‘a(chǎn)’ int方便

//返回指定字符串在此字符串中第一次出現(xiàn)的索引
int indexOf(String str)

//返回指定字符在此字符串中從指定位置后第一次出現(xiàn)的索引
int indexOf(int ch,int fromIndex)

//返回指定字符串在此字符串中從指定位置后第一次出現(xiàn)的索引
int indexOf(String str,int fromIndex)

//從指定位置開始截取字符串,默認到末尾
String substring(int start)

//從指定位置開始指定位置結(jié)束截取字符串
String substring(int start,int end)

字符串中數(shù)據(jù)統(tǒng)計案例

import java.util.Scanner;

/*
 *  案例:統(tǒng)計一個字符串中大寫字母字符,小寫字母字符,數(shù)字字符出現(xiàn) * 的次數(shù)
 */
 
public class StringDemo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入需要統(tǒng)計的數(shù)據(jù)");
        String s = sc.nextLine();

        int numberCount = 0;
        int smallCout = 0;
        int bigCout = 0;

        for (int x = 0; x < s.length(); x++) {
            char ch = s.charAt(x);
            if (ch >= "a" && ch <= "z") {
                smallCout++;
            } else if (ch >= "A" && ch <= "a") {
                bigCout++;
            } else if (ch >= "0" && ch <= "9") {
                numberCount++;
            }
        }
        
        System.out.println("大寫字母:" + bigCout + "個");
        System.out.println("小寫字母:" + smallCout + "個");
        System.out.println("數(shù)字:" + numberCount + "個");
    }
}
//運行結(jié)果
請輸入需要統(tǒng)計的數(shù)據(jù)
HelloWorld520
大寫字母:2個
小寫字母:8個
數(shù)字:3個
(3) 轉(zhuǎn)換功能
//把字符串轉(zhuǎn)換為字節(jié)數(shù)組
byte[] getBytes()

//把字符串轉(zhuǎn)換成字符數(shù)組
char[] toCharArray()

//把字符數(shù)組轉(zhuǎn)換成字符串
static String valueOf(char[] chs)

//把int類型的數(shù)據(jù)轉(zhuǎn)換成字符串
static String valueOf(int i)
//注意:String類的valueOf方法可以把任何類型的數(shù)據(jù)轉(zhuǎn)換成字符串!
  
//把字符串轉(zhuǎn)換成小寫    
String toLowerCase()

//把字符串轉(zhuǎn)換成大寫
String toUpperCase()

//把字符串拼接
String concat(String str)
(4) 其他功能
//替換功能 
String replace(char old,char new)
String replace(String old,String new)

//去除字符串兩端空格
String trim()

//按字典比較功能
int compareTo(String str)
int compareToIgnoreCase(String str) 

逆序輸出字符串案例

/*
 *  鍵盤輸入 "abc"
 *  輸出結(jié)果 "cba"
 */

import java.util.Scanner;

public class StringDemo2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入:");
        String line = sc.nextLine();

        char[] chs = line.toCharArray();

        String result = "";

        for (int x = chs.length - 1; x >= 0; x--) {
            result += chs[x];
        }      
        System.out.println("reusult:" + result);
    }
}
//運行結(jié)果
請輸入:
abc
reusult:cba

大串中查詢小串案例

import java.util.Scanner;

public class StringDemo {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入被統(tǒng)計的數(shù)據(jù)");
        String maxString = sc.nextLine();
        System.out.println("請輸入統(tǒng)計關(guān)鍵詞");
        String minString = sc.nextLine();
        int count = getCount(maxString, minString);
        System.out.println("count:" + count);
    }

    public static int getCount(String maxString, String minString) {
        //定義一個統(tǒng)計變量,初始化為0
        int count = 0;

        //先在大串中查找小串第一次出現(xiàn)的位置
        int index = maxString.indexOf(minString);

        //索引不是-1,說明存在,統(tǒng)計變量++
        while (index != -1) {
            count++;
            //把剛才的索引 + 小串的長度作為開始位置截取上一次的大串
            //返回一個新的字符串,并把該字符串的值重新賦給大串
            int startIndex = index + minString.length();
            maxString = maxString.substring(startIndex);
            index = maxString.indexOf(minString);
        }
        return count;
    }
}

//運行結(jié)果
請輸入被統(tǒng)計的數(shù)據(jù)
Hello520World520
請輸入統(tǒng)計關(guān)鍵詞
520
count:2
結(jié)尾:

如果內(nèi)容中有什么不足,或者錯誤的地方,歡迎大家給我留言提出意見, 蟹蟹大家 !^_^

如果能幫到你的話,那就來關(guān)注我吧!(系列文章均會在公眾號第一時間更新)

在這里的我們素不相識,卻都在為了自己的夢而努力 ?

一個堅持推送原創(chuàng)Java技術(shù)的公眾號:理想二旬不止

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/74919.html

相關(guān)文章

  • 【面試】Java基礎(chǔ)那些-Thr

    摘要:為了提高程序運行的效率,在軟件發(fā)布后,檢查默認是被關(guān)閉的。注意不能保證原子性,不能代替,且其會阻止編譯器對代碼的優(yōu)化。以下方法用來判斷一個字符串中是否包含中文字符。 前言 面試中對于技術(shù)職位,一般分筆試與面談,如果面試官的一些小問題你可以立馬找到對應(yīng)的知識點擴展開來,那么這就是你的優(yōu)勢,本系列將講述一些java面試中的事,不會很詳細,但是應(yīng)該比較全面吧。 主要內(nèi)容 assert有什么作...

    ShowerSun 評論0 收藏0
  • 【面試】Java基礎(chǔ)那些-Two

    摘要:前言面試中對于技術(shù)職位,一般分筆試與面談,如果面試官的一些小問題你可以立馬找到對應(yīng)的知識點擴展開來,那么這就是你的優(yōu)勢,本系列將講述一些面試中的事,不會很詳細,但是應(yīng)該比較全面吧。 前言 面試中對于技術(shù)職位,一般分筆試與面談,如果面試官的一些小問題你可以立馬找到對應(yīng)的知識點擴展開來,那么這就是你的優(yōu)勢,本系列將講述一些java面試中的事,不會很詳細,但是應(yīng)該比較全面吧。 主要內(nèi)容 pa...

    you_De 評論0 收藏0
  • String那些

    摘要:的不可變性眾所周知,是常量,不可變,這一點很重要。那中,包裝類的一個特質(zhì)就是值操作時體現(xiàn)對應(yīng)的基本類型的特質(zhì)。同樣的,等這些包裝類和在這種情況下的表現(xiàn)是相同的。那么無論你對傳入?yún)?shù)做了什么操作,都不會影響原來的值。 1. String的不可變性 眾所周知,String是常量,不可變,這一點很重要。其底層的實現(xiàn)是char[]: /** The value is used for ...

    gghyoo 評論0 收藏0
  • 【面試】Java基礎(chǔ)那些-One

    摘要:前言面試中對于技術(shù)職位,一般分筆試與面談,如果面試官的一些小問題你可以立馬找到對應(yīng)的知識點擴展開來,那么這就是你的優(yōu)勢,本系列將講述一些面試中的事,不會很詳細,但是應(yīng)該比較全面吧。 前言 面試中對于技術(shù)職位,一般分筆試與面談,如果面試官的一些小問題你可以立馬找到對應(yīng)的知識點擴展開來,那么這就是你的優(yōu)勢,本系列將講述一些java面試中的事,不會很詳細,但是應(yīng)該比較全面吧。 主要內(nèi)容 說到...

    Stardustsky 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<