1.String类概述
API (Application Programming Interface,应用程序编程接口)
1.Java写好的技术(功能代码),咱们可以直接调用。
2.Oracle也为Java提供的这些功能代码提供了相应的API文档(技术使用说明书)。
3.String.lang.String类代表字符串,String类定义的变量可以用于指向字符串对象,然后操作该字符串。
4.Java程序中的所有字符串文字(例如“abc”)都为此类的对象
5.String常被称为不可变字符串类型,它的对象在创建后不能被更改。
1.String是什么?可以做什么?
答:字符串类型,可以定义字符串变量指向字符串对象。
2.String是不可变字符串的原因?
答:(1)String变量每次的修改其实都是产生并只想了新的字符串对象。
(2)原来的字符串对象都是没有改变的,所以称为不可变字符串。
2.String类创建对象的2种方式
方式一:直接使用" "定义。(推荐的)
方式二:通过String类的构造器创建对象。
然后我们在idea上用一下:
public class StringDemo1 {
public static void main(String[] args) {
// 方式一:直接使用双引号得到字符串对象
String name = "我爱你China";
System.out.println(name);
// 方式二:
//1.public String():创建一个空白字符对象,不含有任何内容(几乎不用// )
String s1 = new String();
System.out.println(s1);
//2.public String(String):根据传入的字符串内容,来创建字符对象(几乎不用)
String s2 = new String("我是中国人");
System.out.println(s2);
//3.public String(char[] c):根据字符数组的内容,来创建字符串对象
char[] chars = {
'a' , 'b' ,'中' , '国'};
String s3 = new String(chars);
System.out.println(s3);
// 4.public String(byte[] b): 根据字节数组的内容,来创建字符串对象
byte[] bytes = {
97 , 98, 99 ,65 ,66 ,67};
String s4 = new String(bytes);
System.out.println(s4);
3.String类常见面试题
1.以" "方式给出的字符串对象,在字符串常量迟中存储,而且相同内容只会在其中存储一份.
2.通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中.
String ss1 = "abc";
String ss2 = "abc";
System.out.println(ss1 == ss2);
String ss3 = "abc";
String ss4 = "abc";
System.out.println(ss3 == ss4);
运行结果:
true
true
原理其实是这样的:
看
4.String类常用的API-字符串内容比较
- 字符串的内容比较:
推荐使用String类提供的"equals"比较:只关心内容一样即可
方法名 说明
public boolean equals(object an0bject) 将此字符串与指定对象进行比较,只关心字符内容是否一致!
public boolean equalsIgnoreCase(String anotherString) 将此字符串与指定对象进行比较,忽略大小写比较字符串.只关心字符内容是否一致.
下面我们去idea中实践一下:
import java.util.Scanner;
public class StringEqualsDemo4 {
public static void main(String[] args) {
//1.正确登录名和密码
String okname = "yueyue";
String okPassword = "123456";
//2. 请你输入登录名称和密码
Scanner sc = new Scanner(System.in);
System.out.println("登录名称:");
String name = sc.next();
System.out.println("登录密码:");
String password = sc.next();
//3.判断用户输入的登录名称和密码与正确的内容是否相等
if (okname.equals(name) && okPassword.equals(password)){
System.out.println("登录成功");
}else{
System.out.println("用户名或者密码错误了");
}
//4. 忽略大小写比较内容的API;一般用于比较验证码这样的业务逻辑
String sysCode = "23AdFh";
String code1 = "23aDfh";
System.out.println(sysCode.equals(code1));
System.out.println(sysCode.equalsIgnoreCase(code1));
}
}
E:\Java\jdk-11.0.9\bin\java.exe "-javaagent:E:\soft\IntelliJ IDEA 2021.2.1\lib\idea_rt.jar=65339:E:\soft\IntelliJ IDEA 2021.2.1\bin" -Dfile.encoding=UTF-8 -classpath E:\java\example\out\production\Demo1 demo3.StringEqualsDemo4
登录名称:
yueyue
登录密码:
123456
登录成功
false
true
Process finished with exit code 0
5.String类常用API-遍历、替换、截取、分割操作
1.public int length( ) 返回此字符串的长度
2.public char charAt(int index) 获取某个索引位置处的字符
3.public char[ ] toCharArray(): 将当前字符串转换成字符数组返回
4.public String substring(int beginInex, int endIndex) 根据开始和索引进行截取,得到新的字符串
5.public String substring(int beginIndex) 从传入的索引处截取,截取到末尾,得到新的字符串.
6.public String replace(CharSequence target, CharSequence replacement) 使用新值,将字符串中的旧值替换,得到新的字符串
7.public String[ ] split(String regex) 根据传入的规则切割字符串,得到字符串数组返回.
下面我们在idea中实践一下:
public class Stringdemo2 {
public static void main(String[] args) {
// 1.pubic int length(): 获取字符串的长度
String name = "我爱你中国love";
System.out.println(name.length());
//2.public char charAt(int index):获取某个索引位置
char c = name.charAt(1);
System.out.println(c);
System.out.println("-------遍历字符串中的每个字符--------");
for (int i = 0; i < name.length() ; i++) {
char ch = name.charAt(i);
System.out.println(ch);
}
// 3.public char[] toCharArray(); 把字符串转换成字符数组
char[] chars = name.toCharArray();
for (int i = 0; i < chars.length; i++) {
char ch = chars[i];
System.out.println(ch);
}
//4.public String substring(int beginIndex, int endIndex):截取内容(包前不包后)
String name2 = "Java是最厉害的编程语言!";
String rs = name2.substring(0, 9);
System.out.println(rs);
String rs1 = name2.substring(4, 9);
System.out.println(rs1);
// 5.public String substring(int beginIndex):从当前索引一直截取到末尾
String rs2 = name2.substring(4);
System.out.println(rs2);
//6.public String replace(CharSequence target, CharSequence replacement)
String name3 = "奥特曼是最厉害的80后,奥特曼帮帮的,我好爱奥特曼";
String rs3 = name3.replace("奥特曼","***");
System.out.println(rs3);
//7.public boolean contains(CharSequence s)
System.out.println(name3.contains("奥特曼"));
System.out.println(name3.contains("奥特曼"));
// 8.public boolean startsWith(String prefix)
System.out.println(name3.startsWith("奥特曼"));
System.out.println(name3.startsWith("奥特曼是最厉害的"));
System.out.println(name3.startsWith("奥特曼是最厉害的2"));
//9.public String[] split(String s): 按照某个内容把字符串分割成字符串数组返回
String name4 = "王宝,贾乃,陈羽";
String[] names = name4.split(",");
for (int i = 0; i < name.length(); i++) {
System.out.println("选择了:" + names[i]);
}
}
}
E:\Java\jdk-11.0.9\bin\java.exe "-javaagent:E:\soft\IntelliJ IDEA 2021.2.1\lib\idea_rt.jar=65403:E:\soft\IntelliJ IDEA 2021.2.1\bin" -Dfile.encoding=UTF-8 -classpath E:\java\example\out\production\Demo1 demo3.Stringdemo2
9
爱
-------遍历字符串中的每个字符--------
我
爱
你
中
国
l
o
v
e
我
爱
你
中
国
l
o
v
e
Java是最厉害的
是最厉害的
是最厉害的编程语言!
***是最厉害的80后,***帮帮的,我好爱***
true
false
true
true
false
选择了:王宝
选择了:贾乃
选择了:陈羽
总结
String类中有许多功能强大的类,我们需要每一个都熟练的运用.