最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

千鋒教育Java入門全套視頻教程(java核心技術(shù),適合java零基礎(chǔ),Java

2023-07-19 22:45 作者:顏如玉大哥哥  | 我要投稿

?問題:

  • String-字符串如何存儲(chǔ)?
String底層實(shí)際上是一個(gè)字符數(shù)組
private final char value[];//底層代碼
  • 每個(gè)字符是如何存儲(chǔ)的?
跟編碼表有關(guān)系
  • ASCII表
  • Unicode
  • utf-(常用utf-8在國內(nèi)使用)三個(gè)字節(jié)來描述一個(gè)字符
  • gbk-(專門中文字符集)兩個(gè)字節(jié)來描述一個(gè)字符

概念:

編碼:將字符,根據(jù)指定的字符集來轉(zhuǎn)換成 數(shù)值
解碼:將數(shù)值,根據(jù)指定的字符集轉(zhuǎn)化為字符

看看幾個(gè)String題:

String s1 = "abc";
String s2 = "abc";
System.out.println("s1 == s2: "+(s1==s2));
final String s3 = "abc";
final String s4 = "abc";
System.out.println("s3 == s4: "+(s3==s4));
String s5 ="abc";
String s6 ="abc";
String s7 = (s5+s6).intern();
System.out.println("s7 == (s5+s6)): "+(s7 == (s5+s6)));
String s8 = "abcabc";
System.out.println("s8==(s1+s2):"+(s8==(s1+s2)));
System.out.println("s8==(s3+s4):"+(s8==(s3+s4)));
System.out.println("s8==s7:"+(s8==s7));

運(yùn)行結(jié)果:

s1 == s2: true
s3 == s4: true
s7 == (s5+s6)): false
s8==(s1+s2):false
s8==(s3+s4):true
s8==s7:true

下面這段代碼創(chuàng)建了幾個(gè)對象?

String s = new String("abc");

答案:創(chuàng)建了兩個(gè)對象,一個(gè)在常量池,一個(gè)在堆內(nèi)存

判斷定義為String類型的s1和s2是否相對

String s1 = new String("abc");
String s2 = "abc";
System.out.println("s1 == s2: "+(s1==s2));
System.out.println("s1.equals(s2): "+(s1.equals(s2)));

答案:

s1 == s2: false

s1.equals(s2): true

常用的構(gòu)造方法
  • public String():空構(gòu)造
String str = new String();
  • public String(byte bytes[]) :把字節(jié)數(shù)組轉(zhuǎn)換成字符串
byte [] bytes = {97,98,99,100};
String str = new String(bytes);
  • public String(byte bytes[], int offset, int length):把字節(jié)數(shù)組的一部分轉(zhuǎn)換成字符串
byte [] bytes = {97,98,99,100};
String str = new String(bytes,1,3);
  • public String(char value[]):把字符數(shù)組轉(zhuǎn)換成字符串
char [] c = {'a','b','c','d','e','f'};
String str = new String(c);
  • public String(char value[], int offset, int count):把字符數(shù)組的一部分轉(zhuǎn)換成字符串
char [] c = {'a','b','c','d','e','f'};
String str = new String(c,1,4);
  • public String(String original):把字符串常量值轉(zhuǎn)換成字符串
String str = new String("abcdefg");
indexOf()和lastIndexOf()
indexOf取給定字符在字符串中第一次出現(xiàn)的位置的位置
 String email = "123456789@xxx.com";
//第一次出現(xiàn)的位置
System.out.println(email.indexOf('@'));
lastIndexOf//取給定字符在字符串中最后一次出現(xiàn)的位置
String email = "123456789@xxx.com";
//取給定字符在字符串中最后一次出現(xiàn)的位置
System.out.println(email.lastIndexOf('@'));
indexOf和lastIndexOf還可以針對字符串來求第一次(最后一次)出現(xiàn)下標(biāo)
 //indexOf和lastIndexOf還可以針對字符串來求第一次(最后一次)出現(xiàn)下標(biāo)
System.out.println(email.indexOf("xxx"));
toCharArray()
把字符串中的每個(gè)字符放到字符數(shù)組中
String email = "123456789@xxx.com";
char[] charArray = email.toCharArray();
System.out.println(Arrays.toString(charArray));
運(yùn)行結(jié)果
[1, 2, 3, 4, 5, 6, 7, 8, 9, @, x, x, x, ., c, o, m]
Arrays.copyOf()和System.arraycopy()
數(shù)組的拷貝(兩種方式)
int [] numbers = {1,2,3};
int [] arrCopy1 = new int[numbers.length];
System.arraycopy(numbers,0,arrCopy1,0,numbers.length);
System.out.println(Arrays.toString(arrCopy1));
int [] arrCopy2= Arrays.copyOf(numbers, numbers.length);
System.out.println(Arrays.toString(arrCopy2));
substring()
字符串截取(獲取子字符串)
String str1 = "123qwertyuiop";
String substring1 = str1.substring(2, 5);
String substring2 = str1.substring(2);
System.out.println("substring1: "+substring1);
System.out.println("substring2: "+substring2);
replace()
替換字符串中的字符
String str2 ="123qwer456zxCV789asdf";
String replace = str2.replace("123", "");
String replace1 = str2.replace('1', 'a');
System.out.println("replace:"+replace);
System.out.println("replace1:"+replace1);
根根據(jù)正表達(dá)式來替換字符串中匹配的內(nèi)容
//根根據(jù)正表達(dá)式來替換字符串中匹配的內(nèi)容
String replaceAll = str2.replaceAll("[0-9]", "");
System.out.println("replaceAll:"+replaceAll);
split()
字符串分割
字符串分割的時(shí)候,要注意,如果分隔符在字符串的末尾,可以將這個(gè)分隔符忽略掉
字符串分割才用的是正則表達(dá)式匹配,并非是給定的字符串
String line = "張三,李四,";
//[1][3-9][0-9]{9} = 1[3-9][0-9]{9}
String[] arr = line.split(",");
System.out.println(Arrays.toString(arr));
 String p = "skaldk12831203askldaklkadl2askdl12";
String[] arr2 = p.split("[0-9]+");
System.out.println(Arrays.toString(arr2));

String regex = "[0-9A-Za-z]{8,15}@[a-zA-Z0-9]{2,10}.[a-zA-Z0-9]{2,10}";
boolean matches = "anmasakjaa@xxx.com".matches(regex);//匹配
System.out.println(matches);
trim()
trim可以修剪掉字符串兩端的空格*
String blank = " asasd aa aa  ";
System.out.println(blank);
//trim可以修剪掉字符串兩端的空格
System.out.println(blank.trim());
equalsIgnoreCase()
比較兩個(gè)字符串的內(nèi)容是否相等,忽略大小寫。
str = "AbC";
boolean b = str.equalsIgnoreCase("aBc");
System.out.println(b);//true
擴(kuò)展
字符集, 也就是我們通常說的編碼格式
StandardCharsets表示標(biāo)準(zhǔn)字符集
我們中文支持的字符集有UTF-8、GBKGB2312,但是收錄漢字最齊全就是UTF-8
瀏覽器默認(rèn)的字符集編碼是ISO-8859-1,如果我們要處理瀏覽器傳遞過來的數(shù)據(jù),需要
對編碼進(jìn)行處理,才能正確的識(shí)別數(shù)據(jù)
亂碼產(chǎn)生的原因:字符集在傳輸?shù)臅r(shí)候使用的編碼與在解析的時(shí)候使用的編碼不一致
Charset charset = StandardCharsets.ISO_8859_1;//StandardCharsetss標(biāo)準(zhǔn)字符集。

這里我們的java文件的編碼格式是UTF-8,因此我們這里的字符串編碼格式就是UTF-8
String str = "中文";
將之前使用UTF-8編碼格式的字符串重新進(jìn)行組裝,組裝的時(shí)候采用的編碼格式是ISO-8859-1
這個(gè)時(shí)候我們再來打印這個(gè)字符串,發(fā)現(xiàn)這個(gè)字符串展示出來的就是亂碼
String newStr = new String(str.getBytes(), charset);
System.out.println(newStr);


StringBufferStringBuilder區(qū)別
String Buffer線程安全的(上鎖了)
StringBuilder線程不安全(沒有加鎖)
String BufferStringBuilder都繼承AbstractStringBuilder
StringBuffer
StringBuffer:代表可變的字符序列,稱為字符串緩沖區(qū),可以將StringBuffer看作是一個(gè)高級的String
  • 工作原理:
預(yù)先申請一塊內(nèi)存,存放字符序列,如果字符序列滿了,會(huì)重新改變緩存區(qū)的大小,以容納更多的字符序列
StringBuffer是可變對象,這個(gè)是String最大的不同
  • 默認(rèn)緩沖區(qū)大小
默認(rèn)緩沖區(qū)大?。?6個(gè)字符
StringBuilder
字符串構(gòu)建器,因?yàn)樽址坏﹦?chuàng)建就不可再更改,如果我們需要對字符串進(jìn)行組裝,那么就會(huì)產(chǎn)生新的字符串,
產(chǎn)生新的字符串,就意味著有新的內(nèi)存開銷。如果存在打了字符串組裝,那么內(nèi)存開銷隨著組裝次數(shù)的增加,也會(huì)
不停的增加,為了減少字符串組裝的開銷,于是設(shè)計(jì)了字符串構(gòu)建器
StringBuilderStringBuffer常用方法

提示:他們兩個(gè)方法基本都是相同的。最大的區(qū)別就是StringBuilder是線程不安全的,效率高

構(gòu)造方法
  • public StringBuffer()`:無參構(gòu)造方法 默認(rèn)容量16
  • public StringBuffer(int capacity)`:指定容量的字符串緩沖區(qū)對象
  • public StringBuffer(String str)`:指定字符串內(nèi)容的字符串緩沖區(qū)對象

提升:擴(kuò)容公式:原容量<<1+2

append()

追加字符串

示范代碼

StringBuilder builder = new StringBuilder();
builder.append("abcde").append("aaa");

delete()

刪除使用的區(qū)間是[start,end)

示范代碼

builder.delete(0,1);
System.out.println(builder);

insert()

在指定下標(biāo)上插入字符串

示范代碼

//插入的時(shí)候,第一個(gè)參數(shù)表示偏移量
builder.insert(2,"@");
System.out.println(builder);
程序案例
100000000000000,將這個(gè)數(shù)字轉(zhuǎn)換為金融數(shù)字100,000,000,000,000

示范代碼

StringBuilder sb = new StringBuilder("100000000000000");
int len = sb.length();
for(int i=len-3; i>0; i-=3){
??sb.insert(i, ',');
}
System.out.println(sb);

reverse()

反轉(zhuǎn)字符

示范代碼

StringBuilder reverse = sb.reverse();
System.out.println(reverse.toString());

StringBufferStringBuilder方法用法差不多這里不在舉例StringBuffer`。


本次筆記也發(fā)送到了CSDN中:https://blog.csdn.net/JiaXinBinGan/article/details/131791412

千鋒教育Java入門全套視頻教程(java核心技術(shù),適合java零基礎(chǔ),Java的評論 (共 條)

分享到微博請遵守國家法律
白河县| 绥宁县| 色达县| 青阳县| 合山市| 永福县| 涟源市| 吉安市| 阿拉善盟| 绥宁县| 南宫市| 保亭| 临洮县| 大关县| 安仁县| 新余市| 巴林左旗| 英德市| 安吉县| 湾仔区| 沿河| 会泽县| 郑州市| 张家口市| 蓬溪县| 五大连池市| 新竹市| 西平县| 汉沽区| 汶上县| 台北市| 深州市| 淅川县| 贡山| 泰宁县| 大足县| 宜兰市| 新建县| 县级市| 五峰| 西乌珠穆沁旗|