Java-认识String(上)

简介: Java-认识String(上)

一、String概念及创建



      1.1 String概念


Java中字符串是由字符组成的一个字符数组,是复合数据类型,也是一种引用类型。所有涉及到可能修改字符串内容的操作都是创建一个新对象,改变的是新对象;String类中的字符实际保存在内部维护的value字符数组中


1.2 String的创建


               String类提供的构造方式非常多,常用的就以下三种:


//常量字符串构造
        String str="hello word";
        System.out.println(str);
        //new String对象
        String str1=new String("hello!");
        System.out.println(str1);
        //用字符数组构造
        char[] chars={'h','e','l','l','o',' ','w','o','r','l','d'};
        String str2=new String(chars);
        System.out.println(str2);

fdc72987cf7f4701ae54e233d77775ff.png


注意:String是引用类型,内部并不存储字符串本身,而是存储一个地址,在Java中“”引起来的也是String类型对象。


String s1="hello";
        String s2="world";
        String s3=s1;

37cff22c0e0448cd89e87a3a7ae84afd.png



二、String常用方法



          由于字符串是不可变对象, 不是修改当前字符串, 而是产生一个新的字符串


       2.1 String对象的比较


               字符串的比较是常见操作之一,Java中提供了4中方式:


1. ==比较是否引用同一个对象


 int a=5;
        int b=10;
        //基本数据类型变量,==比较两个变量的值
        System.out.println(a==b);
        //引用类型变量,==比较两个引用变量引用是否为同一对象
        String s1="hello";
        String s2="world";
        String s3="hello";
        String s4=s1;
        System.out.println(s1==s2);
        System.out.println(s1==s3);
        System.out.println(s1==s4);

523a436106ca4a05ac05f39882a9db3e.png


 2.boolean equals(Object anObject) 方法,比较字符串的内容是否相等,返回的是boolean类型。


 String s1 = new String("hello");
        String s2 = new String("hello");
        String s3 = new String("Hello");
        //s1、s2、s2引用对象不同,但s1和s2内容相同
        System.out.println(s1.equals(s2));
        System.out.println(s1.equals(s3));


e5a84ad39edf4b02ab78c5627c169243.png


3.int compareTo(String s) 方法


compareTo返回的是int类型,比较方式: 先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值;如果前k个字符相等(k为两个字符长度最小值),返回两个字符串长度差值。


String s1=new String("abc");
String s2=new String("ac");
String s3=new String("abc");
String s4=new String("abcdef");
System.out.println(s1.compareTo(s2));//输出字符差值-1
System.out.println(s1.compareTo(s3));//输出0
System.out.println(s1.compareTo(s4));//输出长度差值-3

cfc5539413aa4a13bbd8f87e37e14a08.png


 4. int compareToIgnoreCase(String str) 方法:与compareTo方式相同,但是忽略大小写比较。


 String s1=new String("abc");
   String s2=new String("ac");
   String s3=new String("ABC");
   String s4=new String("abcdef");
   System.out.println(s1.compareToIgnoreCase(s2));//输出字符差值
   System.out.println(s1.compareToIgnoreCase(s3));//输出0
   System.out.println(s1.compareToIgnoreCase(s4));//输出长度差值

e0a0d9ba8e45460fbbfb8d93bd2d70a9.png

2.2  字符串查找


               字符串查找也是字符串中非常常见的操作,String类提供的常用查找的方法:


image.png

String s1="aabbccaabbcc";
System.out.println(s1.charAt(2)); //b
System.out.println(s1.indexOf('c'));  //4
System.out.println(s1.indexOf('b',4));  //8
System.out.println(s1.indexOf("bbcc"));     //2
System.out.println(s1.indexOf("bcc",4));  //9
System.out.println(s1.lastIndexOf('c'));    //11
System.out.println(s1.lastIndexOf('c',6));  //5
System.out.println(s1.lastIndexOf("bcc"));      //9
System.out.println(s1.lastIndexOf("bcc",8));  //3


2.3 转化


               1.数字和字符串转化 String.valueOf、Integer.parseInt、Double.parseDouble


 //数字转字符串
        String s1=String.valueOf(15);
        String s2=String.valueOf(1.5);
        String s3=String.valueOf(true);
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);

490c0f70c94f4404ba2b57a5ed634f96.png

 //字符串转数字,Integer、Double是Java中的包装类型
        int s1=Integer.parseInt("15");
        double s2=Double.parseDouble("1.5");
        System.out.println(s1);
        System.out.println(s2);


 2.大小写转换 toUpperCase、toLowercase

public static void main(String[] args) {
    String s1="abc";
    String s2="ABC";
    //小写转化为大写
    System.out.println(s1.toUpperCase());
    //大写转化为小写
    System.out.println(s2.toLowerCase());
}

9a49facf76544684aa0e9d9d85cce728.png


  3.字符串数组转化  toCharArray、new String()

 

 public static void main(String[] args) {
            String s1="hello";
            //字符串转化为字符数组
            char[] ch=s1.toCharArray();
            for (char ch1:ch) {
                System.out.println(ch1);
            }
            //字符数组转化为字符串
            String s2=new String(ch);
            System.out.println(s2);
}

809a39d9f51d4b7bb98b2306969673aa.png


4.格式化  format


 public static void main(String[] args) {
            String s=String.format("%d-%d-%d",2023,8,7);
            System.out.println(s);
      }

b12d17af98f24f60aa339c05eeeb9f0c.png



目录
相关文章
|
2月前
|
Java
【Java基础面试三十一】、String a = “abc“; ,说一下这个过程会创建什么,放在哪里?
这篇文章解释了在Java中声明`String a = "abc";`时,JVM会检查常量池中是否存在"abc"字符串,若不存在则存入常量池,然后引用常量池中的"abc"给变量a。
|
2月前
|
Java
【Java基础面试三十二】、new String(“abc“) 是去了哪里,仅仅是在堆里面吗?
这篇文章解释了Java中使用`new String("abc")`时,JVM会将字符串直接量"abc"存入常量池,并在堆内存中创建一个新的String对象,该对象会指向常量池中的字符串直接量。
|
1月前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
34 0
java基础(13)String类
|
2月前
|
Kubernetes jenkins 持续交付
从代码到k8s部署应有尽有系列-java源码之String详解
本文详细介绍了一个基于 `gitlab + jenkins + harbor + k8s` 的自动化部署环境搭建流程。其中,`gitlab` 用于代码托管和 CI,`jenkins` 负责 CD 发布,`harbor` 作为镜像仓库,而 `k8s` 则用于运行服务。文章具体介绍了每项工具的部署步骤,并提供了详细的配置信息和示例代码。此外,还特别指出中间件(如 MySQL、Redis 等)应部署在 K8s 之外,以确保服务稳定性和独立性。通过本文,读者可以学习如何在本地环境中搭建一套完整的自动化部署系统。
65 0
|
2天前
|
安全 Java 测试技术
Java零基础-StringBuffer 类详解
【10月更文挑战第9天】Java零基础教学篇,手把手实践教学!
10 2
|
15天前
|
IDE Java 开发工具
Java“未封闭的 String 表达式”怎么解决
要解决Java中的“未封闭的 String 表示”问题,需检查并修正字符串字面量,确保每个字符串被正确地用双引号括起来。若字符串跨越多行,可使用字符串连接操作符(+)或引入文本块(JDK 13 及以上版本)。这能帮助避免语法错误,并使代码更整洁易读。
|
13天前
|
存储 安全 Java
【一步一步了解Java系列】:认识String类
【一步一步了解Java系列】:认识String类
21 2
|
1月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
1月前
|
存储 安全 Java
Java——String类详解
String 是 Java 中的一个类,用于表示字符串,属于引用数据类型。字符串可以通过多种方式定义,如直接赋值、创建对象、传入 char 或 byte 类型数组。直接赋值会将字符串存储在串池中,复用相同的字符串以节省内存。String 类提供了丰富的方法,如比较(equals() 和 compareTo())、查找(charAt() 和 indexOf())、转换(valueOf() 和 format())、拆分(split())和截取(substring())。此外,还介绍了 StringBuilder 和 StringJoiner 类,前者用于高效拼接字符串,后者用于按指定格式拼接字符串
42 1
Java——String类详解
|
1月前
|
安全 Java
Java StringBuffer 和 StringBuilder 类详解
在 Java 中,`StringBuffer` 和 `StringBuilder` 用于操作可变字符串,支持拼接、插入、删除等功能。两者的主要区别在于线程安全性和性能:`StringBuffer` 线程安全但较慢,适用于多线程环境;`StringBuilder` 非线程安全但更快,适合单线程环境。选择合适的类取决于具体的应用场景和性能需求。通常,在不需要线程安全的情况下,推荐使用 `StringBuilder` 以获得更好的性能。