zoukankan      html  css  js  c++  java
  • String类

    public final class String extends Object

    1、用final修饰的最终类,是代表字符串的类;

    2、字符串在底层是以字符数组的形式存储;

    3、任何的字符串都是String的对象

    4、字符串常量可以共享(下图)

    String s1 = “ab”;

    String s2 = new String(“ab”); 

    s1和s2指向的是同一块内存空间,区别在于s1先指向运行时常量池,运行时常量池再指向堆内存,而s2是先在堆内存中开辟一块空间,用来存储运行时常量池中value的地址,然后根据value所在空间的地址去堆内存中找对应的字符数组,若没有,则在常量池中新开辟一块空间,并在堆内存中创建对应的字符数组,若有,直接调用即可。

    String s3 = “a”+“b”;

    字符串在使用+拼接的时候底层实际上是调用了StringBuilder中的append的方法

    String s4 = “a”; 产生1个对象

    s4 = s4+”b” 产生4个对象(new StringBuilder,”b”,”ab”,toString方法会返回一个new String对象)

    字符串拼接方式:

    1、+

    2、直接使用StringBuilder的append方法

    3、concat()

    StringBuilder和StringBuffer的方法签名一模一样,用法一致,区别在于前者是线程不安全的,后者是线程安全的 

    表示没有输入任何字符: str.equals(””)

    常用方法:

    创建字符串对象:String str = “”;

    调用方法:

    str.length()   获取字符串长度

    str.charAt()   获取指定下标位置字符

    str.toCharArray()   将字符串转化为字符数组

    字符数组转化为字符串

    char[] c = {‘ ’,’ ’,’ ’,};

    String str = new String(c);或者String str = new String(c,起始位置,个数); 指定要转换的字符个数

    str1.compareTo(str2)   按字典顺序比较两个字符串(相减不为零才返回该差的值,否则会一致遍历,若长度不等,较短与较长对应值都相等,则返回长度之差)

    str1.compareToIgnoreCase(str2)   忽略字母大小写进行比较

    str.toUpperCase()   转化为大写

    str.toLowerCase()   转化为小写

    注意:字符串提供了一系列的操作而不改变原字符串的方法,操作的结果是产生一个新的字符串,原字符串并没有发生任何改变

    str1.equals(str2)   判断字符串是否相等

    str1.equalsIgnoreCase(str2)   忽略大小写

    instanceof   判断对象和类的关系

    对象 instanceof 类/接口   表示判断对象是否是指定类/接口及其父类/父接口的对象

    如果对象的实际类型继承或者实现类/接口,则该对象也是继承或者实现的类/接口的对象

    str1.concat(str2)   将新字符串拼接在原字数串尾端(底层实际是数组的复制合并过程)

    str.contains(“”)   判断是否包含,只能判断具体子串

    str.endsWith(“”)   后缀(判断是否以””中的字符结束)

    str.startsWith(“”)   前缀

    str.getBytes(“utf-8”)   字符串转字节(括号中可以指定编码,默认是GBK)

    str.hashcode()   字符串的哈希码唯一

    str.indexOf(‘’)   获取字符/字符串在给定的字符串中第一次出现时的下标,也可以指定从某个下标开始找str.indexOf(“”,count),表示从下标为count的位置开始往后找,若没有该字符/字符串,则返回-1

    str.lastIndexOf()   获取字符/字符串在给定的字符串中最后一次出现时的下标,也可以指定从某个下标开始找str.lastIndexOf(“”,count),表示从下标为count的位置开始往前找,若没有该字符/字符串,则返回-1

    str.intern()   强制返回指向给定的字符串的常量池地址

    str.isEmpty()   判断字符串的长度是否为0,注意区别于null,长度:0 != null

    str.replace(‘’,’’)   用指定字符替换原字符

    str.substring(起始,结束)   截取指定字符串,一般表示范围的时候,习惯上包头不包尾/含小不含大

    str.trim()   去掉字符串前后的空白

    String str = String.valueOf()   将其它类型(包括基本类型和引用类型)的数据转化为字符串

    注意:打印一个对象(引用类型)时,底层先调用String.valueOf()方法,当对一个对象进行valueOf操作的时候,底层实际上是调用了Object对象的tostring方法,因此输出结果是该对象的地址

    特殊的:打印字符数组时,底层也是先调用valueOf()方法,但该方法返回值是new String(),因此输出的结果是对应字符数组的字符串

     

    获取字符串中的字符

    将字符串用split方法按指定的正则规则切分成字符串数组,遍历该字符串数组,得到单个字符

    String s1 = "a,1,2,b,4,d";
    
    String[] s2 = s1.split(",");
    
    for(String c:s2){
    
        System.out.println(c);
    
    }

    字符串和其它类型数据的互相转化

    ·基本数据类型—>字符串

    1、String s = String.valueOf(八种基本类型)

    2、String s = “”+八种基本类型数据

    3、StringBuilder s = new StringBuilder().append(八种基本类型数据);

    ·字符串—>基本数据类型

    int i = Integer.parseInt();      //这种方法除了字符不适用外,其它七种基本类型都适用,只需要将数据类型换为对应的即可

    char c = s.charAt(0);      //字符串转字符(字符串只能有一个字符),其中s是String对象

    ·数型数组—>字符串(数型数组包括整数和小数)

    int[] in = {1,2,3,4,5};
    String st = "";
    for (int i = 0; i < in.length; i++) {
        String s = String.valueOf(in[i]);
        st += new String(new StringBuilder().append(s));
    }
    System.out.println(st);

    ·字符串—>数型数组

    String s = "123456";
    char[] cs = s.toCharArray();
    for (char c : cs) {
        int i = c-'0';
        System.out.println(i);
    }

    ·字符数组—>字符串

    char[] cs = {'a','b','c','d','e'};
    
    String s = "";
    
    s+=new String(new StringBuilder().append(cs));
    
    System.out.print(s);

    ·字符串—>字符数组

    String s = "abcde";
    
    char[] cs = s.toCharArray();
    
    for(char c:cs)
    
        System.out.println(c);

     

  • 相关阅读:
    ActiveX Technology Background
    Visual Editor Project for Eclipse
    Ubuntu下安装phpmyadmin
    Eclipse + SWT 进行 GUI 界面开发 简介
    使用Silverlight for Embedded开发绚丽的界面(4)
    微软宣布推出Windows Embedded Compact 2013正式版
    Here is the Book List of a programmer who want to upgrade his/her skill (zz)
    NVARCHAR versus VARCHAR (zz)
    Stlport Tips
    别在js中写后台地址了,用好React/Vue脚手架的环境变量
  • 原文地址:https://www.cnblogs.com/lj-cn/p/9433979.html
Copyright © 2011-2022 走看看