亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java的String類

發布時間:2020-06-08 22:14:25 來源:網絡 閱讀:263 作者:專注地一哥 欄目:大數據
  1. 概述
    只要是用雙引號括起來的都叫字符串
    String類在包java.lang.String中,只要是java.lang中的包,在寫程序時都不需要import進來
    字符串的內容一旦創建,將不可再改變,是一個常量
    正是因為字符串不可改變,所以字符串是可以共享使用的。想想如果共享的東西大家可以隨便修改,用一次殘一次,誰還想去共享呀,想想都惡心,共享單車大家都可以用,就代表用的時候可以隨便糟蹋它,拆它???
    字符串效果上相當于是char[]字符數組,但是底層原理是byte[]數組
  2. String類的創建(3+1種方式)
    2.1 三種構造方法
    public String(); 創建一個空白的字符串,不含有任何的內容
    public String(char[] array); 根據字符串數組的內容,來創建對應的字符串
    public String(byte[] array); 根據字節數組的內容,來創建對應的字符串
    三種構造方法用代碼演示一遍
    public class ConstructString {
    public static void main(String[] args) {
    //第一種構造方法:public String(); 創建一個空白的字符串,不含有任何的內容
    String str1 = new String();
    System.out.println("第一個字符串:" + str1); //第一個字符串:

    //第二種構造方法:public String(char[] array); 根據字符串數組的內容,來創建對應的字符串
    char[] charArray = {'A', 'B', 'C'};
    String str2 = new String(charArray);
    System.out.println("第二個字符串:" + str2);  //第二個字符串:ABC
    
    //第三種構造方法:public String(byte[] array); 根據字節數組的內容,來創建對應的字符串
    byte[] byteArray = {97, 98, 99};  //注意,byte數組的元素,是ASCII碼表的字符對應值
    String str3 = new String(byteArray);
    System.out.println("第三個字符串:" + str3);  //第三個字符串:abc

    }
    }
    2.2 一種直接創建
    String str4 = "HelloWorld!"
    1
    不管有沒有new,只要是雙引號內的東西,JVM會都會判斷到是字符串,所以可以直接創建

  3. 常量池
    3.1 字符串中關于比較的小知識
    我們要知道,在java中,用if(String1 == String2)比較兩個字符串,比較的是這兩個字符串的地址是否一樣,而如果想知道它們的值是否一樣,XM返傭www.fx61.com/brokerlist/xm.html,用的是String的equals方法,比如:
    public static void main(String[] args) {
    String str1 = new String("hello");
    String str2 = new String("hello");

    //比較str1的地址是不是和str2的地址一樣
    System.out.println( str1 == str2 );   //false 不一樣
    
    //比較str1的值和str2的值是不是一樣
    System.out.println( str1.equals(str2) ); //true 一樣,都是hello

    }
    3.2 堆 (heap) 中的常量池
    str1和str2的比較結果為true,證明了它們是同一個字符串,只不過有兩個名字而已,在內存中都是指向同一個地址,它們在的地方叫常量池,所以常量池的hello字符串是可以共享使用,不可修改的。
    str1和str3不一樣,證明它們的地址是不一樣的,通過new來創建的字符串,都不是在常量池中,但也是常量
    public class ConstantPool {
    public static void main(String[] args) {
    String str1 = "hello";
    String str2 = "hello";
    String str3 = new String("hello");

    System.out.println(str1 == str2);  //true
    System.out.println(str1 == str3);  //false
    System.out.println(str2 == str3);  //false

    }
    }

  4. 字符串的比較方法
    4.1 String的equals方法
    由 3.常量池 中的小知識,我們知道比較兩個字符串的值是否一樣,用的是equals方法,返回值是一個布爾值,一樣就是true,不一樣就是false。

public boolean equals(Object obj)
補充:任何對象都可以用Object進行接收,String類的當然也可以。

equals方法具有對稱性,也就是str1.equals(str2)和str2.equals(str1)的結果是一樣的
注意:如果比較雙方是一個常量一個變量,推薦把字符串常量寫在前面
即推薦“abc”.equals(str) 不推薦:str.equals(“abc”)
因為如果字符串str是一個null,“abc”.equals(str)的結果肯定是false,但是str.equals(“abc”)這樣寫將會導致空指針異常 NullPointerException,不要隨隨便便搞一個異常出來。
4.1 String的equalsIgnoreCase方法
它和equals方法的區別在于,它忽略了大小寫,Ignore忽略,Case大小寫
public static void main(String[] args) {
String str1 = "hello";
String str2 = "HellO";

    //比較str1的值和str2的值是不是一樣,嚴格區分大小寫
    System.out.println( str1.equals(str2) );   //false 

    //比較str1的值和str2的值是不是一樣,忽略大小寫
    System.out.println( str1.equalsIgnoreCase(str2));  //true
}
  1. String中與獲取相關的方法
    概述
    public int length(); 獲取字符串當中含有的字符個數,拿到字符串長度
    public String concat(String str); 將當前字符串和參數字符串拼接成為返回值作為新的字符串
    public char charAt(int index); 獲取指定索引位置的單個字符。(索引從0開始)
    public int indexOf(String str); 查找參數字符串在本字符串當中首次出現的索引位置,如果沒有沒有-1值
    5.1 length()和concat(String str)
    public static void main(String[] args) {
    //length()方法,獲取字符串的長度
    int length = "abcdefghijk".length();
    System.out.println("字符串的長度是:" + length);

    //concat(String str),拼接字符串
    String str1 = "Hello";
    String str2 = "World";
    String str3 = str1.concat(str2); //str1經過拼接后產生了一個新的字符串,而str1本身不變
    
    //打印拼接后的字符串
    System.out.println(str1); 
    System.out.println(str2); 
    System.out.println(str3); 

    }

/輸出結果:
字符串的長度是:11
Hello
World
HelloWorld
/
5.2 charAt(int index)和indexOf(String str)
public static void main(String[] args) {
//charAt(int index),獲取指定索引位置的單個字符
char ch = "hello".charAt(1);
System.out.println("在1號索引位置的字符是:" + ch);

    //indexOf(String str),查找參數字符串在本來字符串當中出現的第一次索引位置
    //如果沒有,就返回-1值
    String original = "helloworld!";
    int index = original.indexOf("ll0");
    System.out.println("第一次索引值是:" + index); //2
}

6、Struts1和Struts2的區別
(1)從action類上分析:
Struts1要求Action類繼承一個抽象基類。Struts1的一個普遍問題是使用抽象類編程而不是接口。
Struts 2 Action類可以實現一個Action接口,也可實現其他接口,使可選和定制的服務成為可能。Struts2提供一個ActionSupport基類去實現常用的接口。Action接口不是必須的,任何有execute標識的POJO對象都可以用作Struts2的Action對象。
(2)從Servlet 依賴分析:
Struts1 Action 依賴于Servlet API ,因為當一個Action被調用時HttpServletRequest 和 HttpServletResponse 被傳遞給execute方法。
Struts 2 Action不依賴于容器,允許Action脫離容器單獨被測試。如果需要,Struts2 Action仍然可以訪問初始的request和response。但是,其他的元素減少或者消除了直接訪問HttpServetRequest 和 HttpServletResponse的必要性。
(3)從action線程模式分析:
Struts1 Action是單例模式并且必須是線程安全的,因為僅有Action的一個實例來處理所有的請求。單例策略限制了Struts1 Action能作的事,并且要在開發時特別小心。Action資源必須是線程安全的或同步的。
Struts2 Action對象為每一個請求產生一個實例,因此沒有線程安全問題。(實際上,servlet容器給每個請求產生許多可丟棄的對象,并且不會導致性能和垃圾回收問題)

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海门市| 包头市| 芜湖县| 廉江市| 阿瓦提县| 清苑县| 海兴县| 航空| 南岸区| 白玉县| 沂水县| 克东县| 开远市| 万载县| 宜兰市| 大冶市| 长武县| 承德市| 博白县| 台东市| 全南县| 昭通市| 平泉县| 岑溪市| 沙坪坝区| 高碑店市| 拜泉县| 绥芬河市| 偃师市| 浦县| 萝北县| 兰西县| 葫芦岛市| 桃园县| 宝鸡市| 渝中区| 肥西县| 静安区| 平谷区| 广宁县| 浮山县|