15.String

  1. 15.字符串-String
    1. 15.1 知识点
      1. 字符串声明
      2. 字符串拼接
      3. String中常用方法
        1. 判断字符串是否相等
        2. 其他常用方法
      4. 总结
    2. 15.2 知识点代码
    3. 15.3 练习题

15.字符串-String


15.1 知识点

字符串声明

// 直接赋值字符串,注意:如果字符串相同,那么它们指向同一实体,在公共内存区域
String s1 = "A韬老狮A";
String s2 = "A韬老狮A";
// 使用new String,注意:使用new,即使字符串相同也是不同实体
String s3 = new String("韬老狮");
String s4 = new String("韬老狮");
char[] chars = {'a', 'b', 'c'};
String s5 = new String(chars);
System.out.println(s5);//abc

字符串拼接

// Java中字符串拼接规则和C#中相同,通过+好即可拼接
// 拼接时并不是修改原String,而会生成新的String,和C#中规则相同
// s1 = s1 + "123" + 1 + 1.2f;
// System.out.println(s1);

String中常用方法

判断字符串是否相等

Java中没有运算符重载,所以==是用于判断引用地址。

if (s1 == s2)
{
    System.out.println("s1引用和s2引用地址指向一个空间");// 可以打印
}

if (s3 == s4)
{
    System.out.println("s3引用和s4引用地址指向一个空间");
}
else
{
    System.out.println("s3引用和s4引用地址不同");// 打印这个
}

// String之间进行判断,使用equals方法,还有一个不区分大小写的equalsIgnoreCase方法
if (s3.equals(s4))
{
    System.out.println("s3和s4的字符串相等");
}
String s6 = new String("ABC");
String s7 = new String("abc");
if (s6.equalsIgnoreCase(s7))
{
    System.out.println("忽略大小写的判断字符串是否相等");// 可以打印
}

其他常用方法

// 长度 int length()
System.out.println(s1.length());//5

// 正向查找 int indexOf(String s)
System.out.println(s1.indexOf("A"));//0

// 反向查找 int lastIndexOf(String s)
System.out.println(s1.lastIndexOf("A"));//4

// 获取指定索引处字符 char charAt(int i)
System.out.println(s1.charAt(1));//韬

// 获取子字符串 String substring(int beginIndex),string substring(int beginIndex, int endIndex)
System.out.println(s1.substring(2));//老狮A
System.out.println(s1.substring(2, 4));//老狮

// 去除首尾空格 String trim()
String s33 = "   1231 23123   ";
System.out.println(s33);//   1231 23123
System.out.println(s33.trim());//1231 23123

// 字符串替换 String replace(target, replacement)
System.out.println(s33.replace('1', 'A'));//   A23A 23A23

// 判断字符串开始和结尾 boolean startsWith(String str), boolean endsWith(String str)
String s34 = "222333.txt";
System.out.println(s34.startsWith("223"));//false
System.out.println(s34.endsWith(".txt"));//true

// 大小写转换 大转小 String toLowerCase(), 小转大 String toUpperCase()
String s35 = "AAAABBB";
System.out.println(s35.toLowerCase());//aaaabbb
String s36 = "aaAAbbBB";
System.out.println(s35.toUpperCase());//AAAABBB

// 字符串分割 String[] split(String sign)
String s37 = "123,345,678,123";
String[] strs = s37.split(",");
for (String str : strs)
{
    System.out.println(str);
    // 123
    // 345
    // 678
    // 123
}

// 字符串格式化 String format(String, Object...)
// %b、%B:boolean类型格式化符号
// %s、%S:String类型格式化符号
// %c、%C:char类型格式化符号
// %d:十进制数格式化符号
// %o:八进制数格式化符号
// %x、%X:十六进制数格式化符号
// %e:十进制数的科学计数法格式化符号
// %tF:年-月-日 时间格式
// %tD:月/日/年 时间格式
// %tc:全部日期和时间信息
// %tr:时:分:秒 PM(AM) 时间格式
// %tT:时:分:秒 24小时制 时间格式
// %tR:时:分 24小时制 时间格式
boolean b = true;
Date date = new Date();
String s = String.format("%tT", date);
System.out.println(s);//14:24:30

总结

Java中String在使用上和C#类似,但是需要注意以下两点区别:

  1. 直接赋值字符串,如果字符串相同,则指向同一引用; new String,即使字符串相同引用也不同。
  2. Java中字符串比较使用equals,用==号是比较的引用地址。

15.2 知识点代码

import java.util.Date;

public class Lesson15_字符串_String
{
    public static void main(String[] args)
    {
        //知识点1:字符串声明
        //1.直接赋值字符串,注意:如果字符串相同,那么他们指向同一实体,在公共内存区域
        String s1 = "A韬老狮A";
        String s2 = "A韬老狮A";
        //2.new String,注意:使用new,即使字符串相同也是不同实体
        String s3 = new String("韬老狮");
        String s4 = new String("韬老狮");
        char[] chars = {'a', 'b', 'c'};
        String s5 = new String(chars);
        System.out.println(s5);//abc

        //知识点2:字符串拼接
        //Java中字符串拼接规则和C#中相同,通过+好即可拼接
        //拼接时并不是修改原String,而会生成新的String,和C#中规则相同
        //s1 = s1 + "123" + 1 + 1.2f;
        //System.out.println(s1);

        //知识点3:String中常用方法
        //1.判断字符串是否相等!!!!!
        //  Java中没有运算符重载,所以==是用于判断引用地址
        if (s1 == s2)
        {
            System.out.println("s1引用和s2引用地址指向一个空间");//可以打印
        }

        if (s3 == s4)
        {
            System.out.println("s3引用和s4引用地址指向一个空间");
        }
        else
        {
            System.out.println("s3引用和s4引用地址不同");//打印这个
        }

        //  String之间进行判断,使用equals方法,还有一个不区分大小写的equalsIgnoreCase方法
        if (s3.equals(s4))
        {
            System.out.println("s3和s4的字符串相等");
        }
        String s6 = new String("ABC");
        String s7 = new String("abc");
        if (s6.equalsIgnoreCase(s7))
        {
            System.out.println("忽略大小写的判断字符串是否相等");//可以打印
        }

        //2.长度 int length()
        System.out.println(s1.length());//5


        //3.正向查找 int indexOf(String s)
        System.out.println(s1.indexOf("A"));//0


        //4.反向查找 int lastIndexOf(String s)
        System.out.println(s1.lastIndexOf("A"));//4


        //5.获取指定索引处字符 char charAt(int i)
        System.out.println(s1.charAt(1));//韬


        //6.获取子字符串 String substring(int beginIndex),string substring(int beginIndex, int endIndex)
        System.out.println(s1.substring(2));//老狮A
        System.out.println(s1.substring(2, 4));//老狮


        //7.去除首尾空格 String trim()
        String s33 = "   1231 23123   ";
        System.out.println(s33);//   1231 23123
        System.out.println(s33.trim());//1231 23123


        //8.字符串替换 String replace(target, replacement)
        System.out.println(s33.replace('1', 'A'));//   A23A 23A23


        //9.判断字符串开始和结尾 boolean startsWith(String str), boolean endsWith(String str)
        String s34 = "222333.txt";
        System.out.println(s34.startsWith("223"));//false
        System.out.println(s34.endsWith(".txt"));//true


        //10.大小写转换 大转小 String toLowerCase(), 小转大 String toUpperCase()
        String s35 = "AAAABBB";
        System.out.println(s35.toLowerCase());//aaaabbb
        String s36 = "aaAAbbBB";
        System.out.println(s35.toUpperCase());//AAAABBB



        //11.字符串分割 String[] split(String sign)
        String s37 = "123,345,678,123";
        String[] strs = s37.split(",");
        for (String str : strs)
        {
            System.out.println(str);
            //            123
            //            345
            //            678
            //            123
        }


        //12.字符串格式化 String format(String, Object...)
        //   %b、%B:boolean类型格式化符号
        //   %s、%S:String类型格式化符号
        //   %c、%C:char类型格式化符号
        //   %d:十进制数格式化符号
        //   %o:八进制数格式化符号
        //   %x、%X:十六进制数格式化符号
        //   %e:十进制数的科学计数法格式化符号
        //   %tF:年-月-日 时间格式
        //   %tD:月/日/年 时间格式
        //   %tc:全部日期和时间信息
        //   %tr:时:分:秒 PM(AM) 时间格式
        //   %tT:时:分:秒 24小时制 时间格式
        //   %tR:时:分 24小时制 时间格式
        boolean b = true;
        Date date = new Date();
        String s = String.format("%tT", date);
        System.out.println(s);//14:24:30



        //总结
        //Java中String在使用上和C#类似
        //但是需要注意以下两点区别
        //1.直接赋值字符串,如果字符串相同,则指向同一引用;new String,即使字符串相同引用也不同
        //2.Java中字符串比较使用equals,用==号是比较的引用地址

    }
}

15.3 练习题

请说明下面代码的问题,并给出解决问题的方案

String str1 = new String("123");

String str2 = new String("123");

if(str1 == str2)
    System.out.println("字符串相同");

Java中判断字符串内容是否相等不能使用==,因为Java中没有运算符重载。值类型使用==时,判断值是否相等。引用类型使用==时,判断引用地址是否相等。而String是引用类型,所以==判断String只能判断引用地址是否相等,在此处不能用于判断字符串内容。我们需要使用equals方法来判断字符串内容是否相等。



转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏