• java基础之String类


    String

    • String类的两种实例化方法
    • String类字符串常量与StringBuffer的区别
    • String类对正则的支持

    1.1字符串:

       一串字符组成字符串,CharSequence是字符串的最高的父接口,常用的实现类有两个:

             ·String

             ·StringBuffer

    不管是String对象还是StringBuffer的对象,都叫做字符串对象,简称字符串。

    1.2类对象的实例化方式

    两种实例化方式:

    •          ·通过直接赋值完成
    •          ·通过new关键字调用String的构造方法

         String s1 = "张三";//直接使用赋值形式完成字符串对象实例化

           String s2 = new String("张三");//通过new关键字实例化字符串对象

    在开发中,我们一般只会使用第一种方式完成字符串的实例化,使用直接赋值的形式,会先去堆内存空间查找是否有相同内容的空间,如果有则直接指向此空间,如果没有则开辟新的空间并且赋值。

    String类提供了length()方法用于取得字符串的长度。

    package com.wanczy.stringDemo;
    
    public class StringDemo01 {
        public static void main(String[] args) {
            String s1 = "张三";//直接使用赋值形式完成字符串对象实例化
            String s2 = new String("张三");//通过new关键字实例化字符串对象
            System.out.println(s1.length());//取得字符串的长度
        }
    }

    注意:

        对于字符串的比较,因为是对象,所以不能使用==来比较,必须使用equal()方法比较内容是否相同。

    package com.wanczy.stringDemo;
    
    public class StringDemo01 {
        public static void main(String[] args) {
            String s1 = "张三";//直接使用赋值形式完成字符串对象实例化
            String s2 = new String("张三");//通过new关键字实例化字符串对象
            System.out.println(s1);
            System.out.println(s2);
            
            System.out.println(s1 == s2);//比较堆内存空间的地址是否相同
            System.out.println(s1.equals(s2));//比较字符串内容是否相同
          "".equals(s1);//使用""围起来的就是字符串对象
        }
    }

    注意:字符串一旦申明,则无法改变,指的是堆内存空间的内容无法改变。

            /*for (int i = 0; i < 100; i++) {
                s1 = s1+i;//效率非常低
            }*/
            StringBuffer sb = new StringBuffer(s1);
            for (int i = 0; i < 100; i++) {
                sb.append(i);//追加
            }
                System.out.println(sb);
        }
        

    String类的常用的操作方法有很多:

    ·构造方法

             ·public String(byte[] bytes):实例化字符串对象,参数是字节数组

             ·public String(byte[] bytes,  Charset charset):以指定的编码格式将字节数组转换成字符串

             ·public String(byte[] bytes,   int offset,   int length):将字节数组的一部分转换成字符串

             ·public String(char[] value):将字符数组转换成字符串

             ·public String(char[] value,  int offset,  int count):将字符数组的一部分转换成字符串

    ·普通方法

             ·public String concat(String str) 和+号效果相同。

             ·public boolean endsWith(String suffix):是否以指定的字符串结尾,不支持正则

             ·public boolean equals(Object anObject):判断内容是否相同

             ·public byte[] getBytes():将字符串转化成字节数组

             ·public byte[] getBytes(Charset charset):转换成指定编码格式的字节数组

             ·public int indexOf(String str):是否存在指定的字符串,存在返回下标,不存在返回-1

             ·public boolean isEmpty():判断是否为空

             ·public int lastIndexOf(String str):返回最后一次出现的下标,不存在返回-1

             ·public int length():返回字符串长度

             ·public boolean matches(String regex):字符串匹配方法,支持正则

             ·public String replace(char oldChar, char newChar):进行单个字符替换

             ·public String replace(CharSequence target,  CharSequence replacement):字符串替换

             ·public String replaceAll(String regex,  String replacement):替换全部匹配的字符串

             ·public String replaceFirst(String regex,  String replacement):替换第一个匹配的字符串

             ·public String[] split(String regex):字符串分割,支持正则分割

             ·public boolean startsWith(String prefix):判断是否以指定的字符串开始

             ·public String substring(int beginIndex,  int endIndex):字符串截取,从beginIndex开始,到endIndex -1 结束

             ·public char[] toCharArray():转换成字符数组

             ·public String toLowerCase():所有的大写变小写

             ·public String toUpperCase():所有的小写变大写

             ·public String trim():去掉字符串前后空格

             ·public static String valueOf(基本数据类型):将基本数据类型转换成字符串

    2.String类对正则的支持,主要是体现在支持正则的方法上面:

             ·匹配

             ·替换所有

             ·替换第一次匹配

             ·分割

    package com.wanczy.stringDemo;
    
    public class StringDemo03 {
        public static void main(String[] args) {
    //        String s = "12341a2432143";
    //        if(s.matches("\d+")){
    //            System.out.println("全部由数字组成");
    //        }else{
    //            System.out.println("不全部是由数字组成");
    //        }
            
    //        String s = "asd2323asdf444sadf34";
    //        s = s.replaceAll("\d+", "大家好才是真的好");//替换全部匹配内容
    //        System.out.println(s);
    //        String s = "asd2323asdf444sadf34";
    //        s = s.replaceAll("a", "大家好才是真的好");
    //        System.out.println(s);
    //        String s = "asd2323asdf444sadf34";
    //        s = s.replaceFirst("\d+", "大家好才是真的好");//替换第一次匹配内容
    //        System.out.println(s);
            
            String s = "asd2 323a sdf 44 4s,adf 3,4";
            String sa[] = s.split(" ");
            for (int i = 0; i < sa.length; i++) {
                System.out.println(sa[i]);
            }
        }
    }

    3.总结

    ·String类对象的实例化

           ·要去理解String类的一些构造方法(byte数组转换成指定编码的字符串,char数组转换成字符串)

           ·将StringBuffer对象转换成String类对象(toString()方法,还有就是new String(StringBuffer sb))

           ·学会使用String类中的方法。

  • 相关阅读:
    取文本中数字
    成绩统计excel
    excel日期转化为周次
    ConcurrentHashMap之实现细节(转)
    线程互斥(互斥变量)
    Spring的历史论(数据脱敏)
    Java之递归
    触摸java常量池
    利用ant脚本 自动构建svn增量/全量 系统程序升级包
    JDK1.5/1.6/1.7新特性
  • 原文地址:https://www.cnblogs.com/wusha/p/7158157.html
Copyright © 2020-2023  润新知