欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

#String类简述(小白理解,小白编写,欢迎大神指点,小白跪谢)

程序员文章站 2022-06-27 23:26:58
文章目录一、前言(可忽略)二、String对象的认知三、String类的构造方法四、String类的基本方法一、前言(可忽略)作者是一位自学JAVA的小白,通过网上视频学习和自己对String类的理解,现将自己对String类的认知描述如下:(希望能与各位同行好友共同分享自己所学的java知识,同时,也热切期望各位同行前辈能够帮助作者指出不足,让小白的编程技术能更上一层楼,感谢各位同行大佬。String是一种引用类型,通过存储、引用方法区字符串常量池中对应的字符串的地址来实现存储、赋值等一系列相应的操...

一、前言(可忽略)

作者是一位自学JAVA的小白,通过网上视频学习和自己对String类的理解,现将自己对String类的认知描述如下:(希望能与各位同行好友共同分享自己所学的java知识,同时,也热切期望各位同行前辈能够帮助作者指出不足,让小白的编程技术能更上一层楼,感谢各位同行大佬。
String是一种引用类型,通过存储、引用方法区字符串常量池中对应的字符串的地址来实现存储、赋值等一系列相应的操作,字符串存储在方法区字符串常量池中,在已有的基础上不会新建。垃圾回收器不会释放常量。

二、String变量的认知

String引用变量直接字符串赋值
(深入原理:是将字符串的内存地址赋值给变量,然后String变量通过索引内存地址找到位于字符串常量地址池中的字符串)
(小白理解:String是一种引用类型,通过引用字符串内存地址来调用字符串,JVM不会在已有的基础上新建或者释放字符串)
例一:

   public static void main(String[] args) {
        String name="hello";
        String name1="hello";
        System.out.println(name==name1);//比较的是字符串内存地址

输出:

true

例二:
但这种情况不是

        String i=new String("abc");
        String j=new String("abc");
        System.out.println(i==j);

输出

false

因为new是在堆内存创建Sring对象来保存在字符串常量池中的String对象(字符串)的内存地址

i和j保存的是在堆内存中的String对象的内存地址

并不是在字符串常量池中的String对象(字符串)的内存地址

如要使new的对象输出为true,则必须调用String.equals方法

         System.out.println(i.equals(j));//true,但可能报空指针异常
         //最好这样写:(来自一位资历深厚的程序员,虽不是我)
         System.out.println("abc".equals(j));
         System.out.println(name);//注意:直接输出String引用变量会直接调用重写toString方法

三、String类的构造方法

 String s=new String(""); //s1指向堆内存中new的String对象,由该String对象保存字符串的内存地址,
 String s1=""; 通过创建String对象来引用字符串
 String s2=new String(char 数组);       //将char数组内的元素转换成字符串
 String s3=new String(char 数组,offset(起始下标),coute(长度));//将char数组内起始下标为i往后j个长度的元素转换为字符串
 String s4=new String(byte 数组);//将char数组内的元素转换成字符串
 String s3=new String(byte 数组,起始下标,长度); //将byte数组内起始下标为i往后j个长度的元素转换为字符串

以上是常用滴,实在不行,自己看源码或者API(英文可以找英文,中文不行找中文)。

四、String类的基本方法

4.1 equalsIgnoreCase()方法

作用: 忽略字母大小写比较字符串大小

        String string2="ABC";
        String string3="abc";
        System.out.println(string2.equalsIgnoreCase(string3)); //忽略字母大小写比较字符串大小

4.2 getBytes()方法
作用:将字符串的字符转换成对应的Byte组元素

        byte []Byte=string3.getBytes();
        //将字符串的字符转换成对应的Byte组元素
        for (int i = 0; i <Byte.length ; i++) {
            System.out.println( Byte[i]);
        }

4.3 indexOf()方法
作用:查找某个字符串在当前字符串第一次出现的下标

        String string4="ABCDefG";
        String string5="G";
        System.out.println(string4.indexOf(string5));//6
        //查找某个字符串在当前字符串第一次出现的下标

4.4 charAt( )方法
作用:字符串是一个String对象,String对象能调用方法charAt(索引指定处的值)

           char c="China".charAt(1);//字符串是一个String对象,String对象能调用方法charAt(索引指定处的值)
           System.out.println(c);//h

4.5 compareTo()方法
作用:compareTo方法比较字符串大小(拿着第一个字符串的第一个字符与后面字符串的第一个字符一一对应比较

           int result="abc".compareTo("abc");
           //compareTo方法比较字符串大小(拿着第一个字符串的第一个字符与后面字符串的第一个字符一一对应比较
           System.out.println(result);//=0  前后一致

           int result2="abc".compareTo("abcd");
           System.out.println(result2);//=-1   前小后大

           int result4="abcd".compareTo("abc");
           System.out.println(result4);//=1    前大后小

           int result3="abcd".compareTo("abce");
           System.out.println(result3);//=-1

           int result5="abce".compareTo("abcd");
           System.out.println(result5);//=1

4.6 contains()方法
作用:判断第一个字符串中是否包含第二个字符串 true包含 false 不包含

            System.out.println("Hello World!".contains("Hello"));
           //判断第一个字符串中是否包含第二个字符串  true包含 false 不包含

4.7 endsWith()方法
作用:判断第一个字符串是否以后面的字符串结尾 true 是

           System.out.println("I want to learn Java".endsWith("Java"));
           //判断第一个字符串是否以后面的字符串结尾  true 是

本文地址:https://blog.csdn.net/weixin_46607064/article/details/111867570