0
点赞
收藏
分享

微信扫一扫

java-字符串(String类以及String类的周边类)

鱼满舱 2022-01-08 阅读 27

目录

需要掌握:

什么是String 

String类的特殊性

字符串String的构造

常用方法

字串符的比较

其他方法


本节我们来学习Java中的字符串

需要掌握:


什么是String 

 String是代表字符串的类,本身是一个最终类,使用final修饰,不能被继承。

String首先是一个Java中的普通类,可以理解为是用来描述字符串的类,所以Java中对象具备的特性,String对象同样具备

String s1 = "Hello"; String s2 = "hello";

比较s1和s2是否相等

s1 == s2;

这不是正确的用法,但是并不意味着一定得不到正确的结果

正确的用法是s1.equals(s2);

public static void main(String[] args) {
        String s1 = "Hello";
        String s2 = "Hello";
        System.out.println(s1.equals(s2));//正确的用法
        System.out.println(s1 == s2); //错误的用法,得到错误的结果和正确的结果都是有可能的
                                      // JVM利用这种模糊性,为String做了很多优化
                                         
                                          优化后的s1和s2指向同一个对象

    }

 程序执行的结果是两种用法都得到了正确的结果:

理解一下:

如果你使用正确的写法,一定可以得到正确的结果;

如果你写的正确,结果错误,那是jvm出bug了;

如果你写的错误,结果可能是正确的,也可能是错误的。

初学者把精力放在学习正确的方法上,我们只要保证自己会使用正确的写法即可,可不过分深究为何某时错误解法会得出正确的答案。


String类的特殊性

String类的对象具有普通对象的特性,除此之外,由于String类对象是使用最频繁的一种对象,可以说有50%左右的对象都是String类的对象,所以String类对象有其特殊性:

      例如:String s ="Hello"  不考虑优化的情况下,认为就是 String s = new String("Hello");

                  实际上其背后蕴含着 new对象 + 指向初始化的过程,因为使用的多赋予特权做了简化

        String s = "Hello";   //这里是一个对象是“Hello”

        s = s + " World";      //得到了一个新对象"Hello World",让s指向了这个对象,并不会改变旧的对象

了解了以上这两条特性,我们就可以去认识String的常见方法了


字符串String的构造

1,String s = "Hello";(99%是这种用法)

      String s = new String("Hello");

2,把二进制数据(没有经过字符集解码的数据,解码成String)    1%

二进制数据的表示形式:byte[] bytes ={ 121,131,151}

经过字符集解码

示例:

public class Demo2 {
    public static void main(String[] args) throws Exception {
        //水 unicode:6c34
        //浒 unicode:6d52
        //传 unicode:4f20
        byte[] bytes={0x6c,0x34,0x6d,0x52,0x4f,0x20};
        //这里是unicode编码
        String s = new String(bytes,0,bytes.length,"unicode");//解码
        System.out.println(s);//输出
    }
}

常用方法

字串符的比较

equals(..)     相等性

equalsIgnoreCase(..) 忽略大小写的相等性比较

           Ignore:忽略

           Case:可以视为大小写

           Case sensitive 大小写敏感

compareTo(...)     大小比较

compareToIgnoreCase(....)忽略了大小写的比较


其他方法

1,理解字符串   字符组成的 串 String     即一系列的字符

"Hello"   逻辑上即:'H' 'e' 'l' 'l' 'o'

2,字符串有长度

s.length()    //与数组不同,数组的length是属性,不加(),而s这里是方法,需要加()去调用

                   //粗略地认为是字符的个数,不是字节的长度

s.isEmpty => true/false

s.length() ==0  这两个式子等价

3,通过字符串转换字符串数组 => char[]

4,取某个字符

public class Demo3 {
    public static void main(String[] args) {
        String s = "hello";
        System.out.println(s.length());
        System.out.println(s.isEmpty());
        System.out.println(s.charAt(4));
          char[] ss= s.toCharArray();
    }

}

输出结果: 


5,查找

indexOf(....),lastIndexOf(....)都可以传入字符或传入字符串或传入字符串和开始找的位置或传入字符和开始找的位置;故共有八种


4,数值类型,boolean类型 转字符串

String.valueOf((byte)1)

String.valueOf((short)1);

String.valueOf(1);

String.valueOf(1L);

1.0F,1.0,'c' ,true,false,null

5,大小写转换

字符串大小写转换

s = t.toUpperCase()         大写

s = t.toLowerCase()         小写   

字符大小写转换

 Character.toUpperCase();//转大写

 Character.toLowerCase();//转小写

 Character.isUpperCase();//判断是不是大写

 Character.isLowerCase();//判断是不是小写

 


这些知识可以帮助学编程的你了解String类及其方法嘛?若您发现有错误请各位尽情批评指正!!

如果对你有帮助,可以的话请三连支持,谢谢!!


举报

相关推荐

0 条评论