1.为什么要学习字符串的处理?
在开发中需要大量的使用字符串,比如登录注册,留言之类的。
根据java的api文档中可知,String类表示字符串,java中的所有字符串都实现为此类的实例。
字符串是不变的,他们的值在创建后无法修改,字符串缓冲区支持可变字符串。因为String对象是不可变的,所以可以共享他们。
2.创建String对象,封装要处理字符串的两种方式、
2.1直接双引号得到字符串对象,封装字符串数据。
package com.web.java_api;public class demo1 {public static void main(String[] args) {//直接使用双引号得到字符串对象,封装字符串数据String name ="使用双引号得到字符串对象";System.out.println(name);}
}
输出结果:
使用双引号得到字符串对象
2.1.1 那既然”使用双引号得到字符串对象"是对象,那么那么存储的应该是对象的值呀?为什么打印的是值呢?
因为字符串做了一些改进,他会根据 里面的地址去找到内容打印出来。
2.2调用String类的构造器初始化字符串对象
package com.web.java_api;public class demo1 {public static void main(String[] args) {//直接使用双引号得到字符串对象,封装字符串数据String name = "使用双引号得到字符串对象";System.out.println(name);//new String 创建字符串对象,并且调用构造器初始化字符串//创建一个空白字符串对象,不含任何问题String s = new String();System.out.println(s);//这种方式不常用,也不推荐,他是根据字符串的内容,来创建对象String s1 = new String("好的");System.out.println(s1);//根据字符数组的内容,来创建字符串对象char[] chars = {'a', 'b', 'c', '您', '好'};String s2 = new String(chars);System.out.println(s2);//根据字节数组的内容,来创建字符串对象byte[] bytes = {97, 98, 99};String s3 = new String(bytes);System.out.println(s3);}
}
使用双引号得到字符串对象
好的
abc您好
aab
3.字符串是什么?
可以用来创建对象封装的字符串数据,并且对其进行处理。
4.String常用的方法
方法名 | 说明 |
---|---|
public int length() | 获取字符串的长度返回(就是字符个数) |
public char charAt(int index) | 获取某个索引位置值的字符放回 |
public char[] toCharArray() | 获取当前字符串转换成字符数组返回 |
public boolean equals(Object,anObject) | 判断当前字符串与另一个字符串的内容,一样返回true |
public boolean equalsIgnoreCase(String anotherString) | 判断当前字符串与另一个字符串的内容是否一样(忽略大小写) |
public String substring (int beginIndex,int endIndex) | 根据开始和结束的索引进行截取,得到新的字符串(包前不包后) |
public String substring (int beginIndex) | 从传入的索引开始截取,截取到末尾,得到新的字符串 |
public String replace(charSequence target,CharSequence replacement) | 使用新值,将字符串中的旧值替换,得到新的字符串 |
public boolean contains(CharSequence s) | 判断字符串中是否包含了某个字符串 |
public boolean startWith(String prefix) | 判断字符串是否以某个字符串内容开头,开头则返回true |
---|---|
public String[] split(String regex) | 把字符串按照某个字符串内容分割,并返回字符串数组回来 |
5.获取字符串的长度length
package com.web.java_api;public class demo2 {public static void main(String[] args) {String name = "hello javaApi";//获取字符串的长度System.out.println(name.length());}
}
6.提取字符串中某个索引位置处的字符 charAt
package com.web.java_api;public class demo3 {public static void main(String[] args) {//提取字符串中某个索引位置处的字符String name = "提取字符串中某个索引位置处的字符";char c = name.charAt(1);System.out.println(c);}
}
//取
7.字符串的遍历
package com.web.java_api;public class demo4 {public static void main(String[] args) {String name = "字符串的遍历";for (int i = 0; i < name.length(); i++) {//当中 i =0 1 2 3 4 5 6 ....char c = name.charAt(i);System.out.println(c);}}
}
字
符
串
的
遍
历
8.把字符串转换成一个字符数组 toCharArray
package com.web.java_api;public class demo5 {public static void main(String[] args) {//把字符串转换成一个字符数组 再进行遍历String name = "把字符串转换成一个字符数组";char[] charArray = name.toCharArray();for (int i = 0; i < charArray.length; i++) {System.out.println(charArray[i]);}}
}
把
字
符
串
转
换
成
一
个
字
符
数
组
9.判断字符串内容是否相同equals
package com.web.java_api;public class demo6 {public static void main(String[] args) {String name = "判断字符串内容是否相同";String ename = "判断字符串内容是否";String qname ="判断字符串内容是否相同";if (name.equals(ename)) {System.out.println("内容一样");} else {System.out.println("内容不一样");}if (name.equals(qname)) {System.out.println("内容一样");} else {System.out.println("内容不一样");}}
}
10.忽略大小写比较字符串内容equalsIgnoreCase
package com.web.java_api;public class demo7 {public static void main(String[] args) {//忽略大小写比较字符串内容//常常是用来比较验证码String code = "34AdBf";String ucode = "34aDbF";if(code.equalsIgnoreCase(ucode)){System.out.println("验证码正确");}else {System.out.println("验证码错误");}}
}
//验证码正确
11.字符串截取substring
package com.web.java_api;public class demo8 {public static void main(String[] args) {//截取字符串内容String name = "截取字符串内容";String substring = name.substring(0, 5);System.out.println(substring);String substring1 = name.substring(5);System.out.println(substring1);}
}
//截取字符串
//内容
12.把字符串中的某个内容替换成新内容,并且返回新的字符串对象给我们replace
package com.web.java_api;public class demo9 {public static void main(String[] args) {String message = "你打游戏真的垃圾,真的垃圾";String replace = message.replace("垃圾", "**");System.out.println(replace);}
}
//你打游戏真的**,真的**
13.判断字符串是否包含某个关键字contains
package com.web.java_api;public class demo10 {public static void main(String[] args) {//判断字符串中是否包含某个关键字String name = "判断字符串中是否包含某个关键字";boolean contains = name.contains("字符串");if (contains) {System.out.println("包含");} else {System.out.println("不包含");}boolean contains1 = name.contains("字符串s");if (contains1) {System.out.println("包含");} else {System.out.println("不包含");}}
}
//包含
//不包含
14.判断字符串有没有以某一个字符串开头startsWith
package com.web.java_api;public class demo11 {public static void main(String[] args) {String name = "张三";boolean startsWith = name.startsWith("张");if (startsWith) {System.out.println("是");} else {System.out.println("否");}}
}
15.把字符串按照指定内容分割成多个字符串,放到一个字符串数组中返回给我们split
package com.web.java_api;public class demo12 {public static void main(String[] args) {String name = "张三,李四,王五,赵六";String[] split = name.split(",");for (int i = 0; i < split.length; i++) {System.out.println(split[i]);}}
}//张三
//李四
//王五
//赵六
16 String使用时的注意事项
String对象的内容不可改变,也被称为不可变字符串对象。
但是我们在操作的时候会发现我们可以发现,我们是可以改变的呀?如代码所示
package com.web.java_api;public class demo13 {public static void main(String[] args) {String name = "张三";name += "程序员";name += "呀";System.out.println(name);}
}
//张三程序员呀
如代码所示,我们发现name指向的字符串对象改变了,那为何说String对象是不可变字符串对象?
因为只要是以""方式写出的字符串对象,会在堆内存中的字符串常量池中存储。
我们每次试图改变字符串对象内容实际上是产生新的字符串对象了,变量每次都是指向了新的字符串对象,之前字符串对象的内容确实是没有改变的,所以我们说String对象是不可变的。
通过new出来方式创建字符串对象,会存储到字符串常量池中,每new一次都会产生一个新的对象放在堆内存中。内容相同的时候,只会存储一次。这样做可以节约内存。
17.利用String学习的知识做一个用户登录功能
需求:正确的用户名和密码都是admin, 在控制台开发一个登录界面,接受用户输入的用户名和密码,判断用户是否登录成功,只有三次机会。
package com.web.java_api;import java.util.Scanner;public class demo14 {public static void main(String[] args) {for (int i = 3; i > 0; i--) {Scanner sc = new Scanner(System.in);System.out.println("------------进入到开发系统--------------");System.out.print("请您输入账号:");String loginName = sc.next();System.out.print("请你输入密码:");String password = sc.next();if (login(loginName, password)) {System.out.println("登录成功");return;} else {System.out.println("登录失败,还剩余" + (i - 1) + "次机会");}}}public static boolean login(String loginName, String password) {String okName = "admin";String okPassword = "admin";return (loginName.equals(okName) && password.equals(okPassword));}
}
注意:本篇文章是笔者的学习笔记,有因为笔者的能力有限,会出现一些笔者没有想到的问题,如果您在浏览或者阅读的时候发现了问题,还请您在评论区留言,笔者看到后会在第一时间解决,谢谢。