Java SE:String类

String类内容多但理解起来难度不大,这一节学习可以放轻松一些。

老规矩:先上思维导图,梳理知识点脉络。

 

6b9912db581d43a8a78aea43e498d0a8.jpeg

 

一、字符串构造常用的三种方式:

(1)使用常量串构造   (2)直接newString对象    (3)使用字符数组进行构造

length()方法用于输出字符串长度。

e578f8534448405298be69878a229499.png

(2)输出结果: b0a2328884c44a739525229e5213c333.png

 

二、String类对象的比较:

基本数据类型比较的是对象的值,引用数据类型比较的是对象的地址(String类)。 

(1):定义a、b、c三个整型变量,并分别赋值为10、20和10。然后创建了三个String类对象,分别赋值为hello、hello、world,之后使str4这个引用指向了str1所指向的String类对象,此时str4和sr1指向同一个内存地址,对这个对象的任何修改都会同时影响到str1和str4。

21ad2632a3df4836be7502bb608113e3.png

(2)输出结果:

【1】a和b都是基本数据类型,值不同,返回false。

【2】a和c都是基本数据类型,值相同,返回true。

【3】str1和str2都是引用数据类型,内容一致但不是同一个对象,地址不同,返回fasle。

【4】str2和str3都是引用数据类型,内容不一致也不是同一个对象,地址不同,返回false。

【5】str1和str4都是引用数据类型,内容一致且是同一个对象,地震相同,返回true。

b67709e093cc43bb9eaab311c8b0f3be.png

 

三、字符串查找:

(1):给出了一个字符串s,并赋值。

【1】:charAt(3):返回3位置上字符。

【2】:indexOf('c'):返回c第一次出现的位置,没有返回-1。

【3】:indexOf('c',10):从10位置开始找c第一次出现的位置,没有返回-1。

【4】:indexOf("bbb"):返回bbb第一次出现的位置,没有返回-1。

【5】:indexOf("bbb",10):从10位置开始找bbb第一次出现的位置,没有返回-1。

【6】:lastIndexOf('c'):从后往前找,返回c第一次出现的位置,没有返回-1。

【7】:lastIndexOf('c',10):从10位置开始找c,从后往前找,没有返回-1。

【8】:lastIndexOf(“bbb”):从后往前找,返回bbb第一次出现的位置,没有返回-1。

【9】:lastIndexOf("bbb",10):从10位置开始找b,从后往前找,没有返回-1。

efb5451159b94f328c9427a88676761b.png 

(2):输出结果:

5d9564d7341a45c2973690e70a69c220.png

 

四、数值和字符串转换: 

(1):

【1】:数字转字符串:valueOf();

【2】:字符串转数字:Integer、Double等是java中的包装类型。

4469b611462440b0b13c56e58cc8f51b.png

(2):输出结果:

691832e30c1146bba2473da004942115.png

 

五、大小写转换:

(1): 小写转大写:toUpperCase()    大写转小写:toLowerCase()

21115f7e35d14f91b48e59bf91159819.png

(2)输出结果:

6d147addc65048aea29dd8a4d9aa62a4.png

 

六、字符串和数组相互转换

(1):

【1】、字符串转数组:通过for循环一个一个打印。

【2】、数组转字符串:通过new关键字实例化打印。

1ecaa8cf7c624f5cbb27a89efe6e9ce6.png

(2)输出结果:

9c6967cd0d6342a89f66d75f0e9b4055.png

 

 七、格式化:

(1):方法format();

28c93d82aa8c49df8c0f0b72801f9dd9.png

(2):输出结果:

3abdc21fd5344d31b06a1b63e8e2dffb.png

 

八、字符串替换:

(1):

【1】:repalceAll("l","_");将所有“l”替换为“_”。

【2】:replaceFirst("l","_");将第一个“l”替换为“_”。

6270ff23a97c4549aba74c9a56955330.png

(2)输出结果:

ea643a4d6dc548d0ac1b7c241406b2a2.png

 

九、字符串拆分:

(1):先定义了一个字符串str并赋值,其内容为“hello world hello bit”。

【1】:String[]  spilt(" "):   有空格的位置全部拆分。

【2】:String[]  spilt(" ",2):有空格的位置拆分,拆分为2组。

【3】:这是一个增强型for循环,s代表一个字符串型变量,result代表被遍历的数组,接着在每次循环打印字符串元素s。

c72c6af7fc30499e830e8a52bcfa5158.png

(2):输出结果:

4653b16decfe4c72b61eecbf9b0149de.png

 

十、字符串截取:

(1):

【1】:subString(3):从3位置截取到结尾。

【2】:subString(0,3):截取0到3位置的内容,区间左闭右开,不包含3号下标。

828be04c3e024854ac71a86e66e6b93f.png

(2):输出结果:

6353b8c81c4a48a0aa11d30b6ff9ea7f.png

十一、去掉字符串中的左右空格,保留中间空格:

(1):trim()方法用于去掉字符串的左右空格,保留中间空格。

6d6223fe99f443969b65dd199bc9ed41.png

(2):输出结果:

6108502fde90487da74186a6c229356e.png

 

十二、StringBulider和StringBuffer(用于String不可更改的特性,为了方便字符串的修改,StringBuilder的内容可以修改。)

(1):

【1】:创建应该StringBuilder类对象sb1,并赋值为hello。

【2】:让sb2引用指向sb1所指向的StringBuilder对象,此时sb1和sb2指向同一个对象。

【3】:append(' '):在字符串sb1后面加一个空格。

【4】:append("world"):在字符串sb1后面加一个world。

【5】:append(123):在字符串sb1后面加一个123。

【6】:打印sb1,结果为:hello world123。

【7】:sb1和sb2是同一个对象,打印true。

【8】:charAt(0):获取0位号上的字符:h。

【9】:length():获取字符串的有效长度:14。

【10】:capacity():获取底层数组的大小,这个大小通常会根据实际需求挑战。

【11】:setCharAt(0,'H'):将索引为0的字符设置为H。

【12】:insert(0,"Hello world!!!):将索引为0的位置插入字符串Hello world。 

【13】:indexOf("Hello"):获取Hello第一次出现的位置:0。

【14】:lastIndexOf("hello"):获取hello最后一次出现的位置:没有hello,返回-1。

2dabf97f023d4335acc6f52599004aa0.png

(2): 

【1】:deleteCharAt(0):删除sb1第一个字符。

【2】:delete(0,5):删除下标为0-4的字符,不包括5,左开右闭。

【3】:从sb1截取下标0-4的字符,并赋值给str变量。

【4】:reverse():字符串逆转。

【5】:将sb1转换为String类型再赋值给变量str,然后打印str。

85adc4d18c5748e6a2bfb73d8110dfd6.png

(3):输出结果:

61a61f1096334b60b232b8641491fa1d.png

十三、第一个只出现一次的字符:

(1):先创建了一个大小为256的整形数组,然后用一个for循环统计每个字符出现的次数。

s.charAt(i)返回字符串s索引为i的字符。 count[s.charAt(i)]++将对应的字符的计数+1,从而统计每个字符在字符串中出现的次数。

再有一个for循环,检查当前字符在计数数组count的计数是否为1,如果是,说明这个字符在字符串中只出现了1次,return i立即返回当前字符的索引位置,因为找到了第一个只出现1次的字符。

如果在整个循环中都没有找到只出现1次的字符,那么返回-1。

最后输入字符串“aaaabbsds”,打印输出结果为7。

970dc8d54d21427fa2d6e0386a27f8aa.png

(2):输出结果:

4e9b029a14d24b8f9ce21733cd0ed09b.png

十四:求最后一个单词的长度:(后面代码比较难看懂)

(1):先自定义输入一行单词。

【1】:while(sc.hasNext()){...}:这是一个循环条件,只要Scanner对象sc还有下一个输入项,循环就会继续执行。hasNext()方法用于判断是否还有更多的输入进行读取。

【2】:第229行代码:nextLine方法,作用是读取输入源中的一整行文本。当调用这个方法时,程序会等待用户在控制台输入一行内容,并按下回车键,接着返回一个String类型的值,即用户输入的那一行文本内容。

【3】:第233行代码:s.lastIndexOf(' '):这个方法用于在字符串s中查找最后一个空格字符的索引位置。

s.lastIndexOf(' ')+1:找到最后一个空格后的位置索引,这是为了从这个位置开始截取子字符串。

s.substring(s.lastIndexOf(' ')+1,s.length()):从字符串s中,从最后一个空格后的位置开始,一直截取到字符串的末尾,得到一个子字符串。

.length():获取这个子字符串的长度,并将其赋值给变量len,然后打印len。

最后调用close方法结束程序。

4ed4e0e2494642cab1ae263cb1592c22.png

(2):输出结果

8b3122820ba84b79b0df5fb2cde140a1.png

 

 

十五、监测字符串是否回文(终极大boss): 正着和反着读都一样

isValidChar方法用来判断字符是否有效,isPalindrome方法用来判断字符串是否回文。

(1):定义了一个isValidChar方法,返回值类型为boolean,判断给定的字符是否为有效的字符。如果小写字符ch介意a和z或0到9之间,返回true,否则返回false。

4a273ee7604d4fe880ca2a0155ca0e1d.png

(2):再定义了一个isPalindrome方法,返回值类型为boolean,参数类型为char,形参为ch,判断给定的字符串是否回文。首先调用toLowerCae()方法将字符串s全部转换为小写,然后分别初始化两个整形变量left和right,left指向字符串的开头,right指向字符串的结尾。

再给出了一个总循环,只要left指针小于right指针,就会持续进行。

再接着一个循环,从字符串的左侧开始,寻找第一个有效字符,如果不是有效字符,指针就向右移动一位。

再接着一个循环,从字符串的右侧开始,寻找第一个有效字符,如果不是有效字符,指针就向左移动一位。

fdf4a2b58a424405b6acc446e1a0cc59.png

(4):在main方法中,实例化了一个Bunch类bunch对象,然后给出了一个String型str变量,赋值为dad。然后使用isPalindrome判断str是否回文,并将结果存储在boolean型变量result中。

如果result为真,则打印“回文”,如果result为假,则打印“不是回文”。

最后用isValidChar方法判断字符‘y’是否为有效字符。

5f1d20a045504c9e82704de17d3f70c4.png 

(5):输出结果:

dad正着读和反着读均一样,所以是回文。

y介于a和z之间,是有效字符,所以返回true。

c0729c0654a9486d920af5d9851bc1a5.png

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值