JAVA String类

概述:数据类型比较时用“==”内容比较用equals

  1. String 字符串类型,可以自定义字符串变量指向字符串对象

  2. String 是不可变字符串的原因是:

     1. String 变量每次修改都是产生并指向了新的字符串对象
    
     2. 原来的字符串对象是没有改变的,所以称不可变字符串
    

创建字符串对象的2钟方式:

1. 直接使用 “” 定义

String name = "字符串"

2. 通过String类的构造器创建对象

// public String(); 创建一个空白字符串对象,不含任何内容 (几乎不用)
String s1 = new String();

// public String(String original); 根据传入的字符来创建字符串对象 (几乎不用)
String s2 = new String("字符串");

// public String(char[] chs); 根据字符数组的内容来创建字符串对象
char[] chars = {'a', 'b', '你', '他'};
String s3 = new String(chars);
System.out.println(s3);

// public String(byte[] chs); 根据字节数组的内容来创建字符串对象
byte[] bytes = {97, 98, 99, 65, 66, 67}; // 字节范围 -128 ~ 127
String s4 = new String(bytes);
System.out.println(s4); // abcABC

3. 注意:使用构造器和直接使用 “” 不一样

String s1 = "abc"; // 直接存储的是地址 指向相同 指向常量池(栈内存)
String s2 = "abc";
System.out.println(s1 == s2); // true

char[] chars = {'a', 'b', 'c'};
String s3 = new String(chars); // 构造器方法 存储的是构造器地址,指向不同 指向堆内存
String s4 = new String(chars);
System.out.println(s3 == s4); // false

System.out.println(s1 == s3); // false

常用API

1. 比较 equals && equalsIgnoreCase (与JS不同 字符串比较不能用 ==)

  1. == 比较的是两边对应的地址不是内容
  2. equals 比较内容
  3. equalsIgnoreCase 忽略大小写比较内容 常用于 验证码
// 正确的登录名和密码
String okName = "itheima"; // 地址指向常量池
String okPassword = "123456";

// 输入登录名和密码
Scanner sc = new Scanner(System.in);
System.out.println("登录名称:");
String inName = sc.next(); // 地址指向堆内存
System.out.println("登陆密码:");
String inPassword = sc.next();

System.out.println(okName == inName); // false
System.out.println(okPassword == inPassword); // false

// 字符串比较要使用 equals 不能用 ==
boolean bolName = okName.equals(inName); // true
boolean bolPassword = okPassword.equals(inPassword); // true
System.out.println(bolName);
System.out.println(bolPassword);

// equalsIgnoreCase 忽略大小写进行比较
String str1 = "23AfGH";
String str2 = "23afgh";
System.out.println(str1.equals(str2)); // false
System.out.println(str1.equalsIgnoreCase(str2)); // true

2. public int length() 返回此字符串的长度

String name = "hello world";
int length = name.length();
System.out.println(length);

3. public char charAt(int index) 获取某个索引位置处的字符

String name = "hello world";
char chart = name.charAt(1);
System.out.println(chart);

4. public char[] toCharArray() 将当前字符串转换为字符数组返回

String name = "hello world";
char[] chars = name.toCharArray();
for (char i:chars) {
    System.out.println(i);
}

5. public String substring(int beginIndex, [int endIndex]) 根据开始和结束索引进行截取,得到新的字符串

String name = "hello world";
String str = name.substring(1, name.length() - 1); // 第二个参数默认是 name.length() 就像下面那个
System.out.println(str);

String name = "hello world";
String str = name.substring(1);
System.out.println(str);

6. public boolean contains(CharSequence s) 判断是否包含某个关键字

String name = "hello world";
System.out.println(name.contains("E")); // false
System.out.println(name.contains("e")); // true

7. public String replace(CharSequence target, CharSequence replacement) 使用新值,将字符串中的旧值替换,得到新的字符串

String name = "hello world";
String str = name.replace("e", "哈");
System.out.println(str);

8. public boolean startsWith(String prefix) 判断是否以 传入内容 开始

String name = "hello world";
System.out.println(name.startsWith("helo")); // false
System.out.println(name.startsWith("hel")); // true

9. public String[] split(String regex) 根据传入的规则切割字符串,得到字符串数组返回

// 与JS类似 字符串分割
String name = "hello world";
String[] array = name.split("o");
for (String i:array) {
    System.out.println(i);
}
// hell w rld (注意没有 o)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值