• Java自学笔记(15):字符串:简介,不可变性,String类常用方法与可变字符串StringBuffer类


    字符串:由0到多个字符组组成的字符序列

    “”为空串null

    public class StringDemo {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            String str = "Hello";
            System.out.println(str);
        }
    
    }

    String不是基本数据类型,而是引用数据类型

    如何创建字符串对象:

    方法声明 功能描述
    String() 创建一个内容为空的字符串对象
    String(char[] value) 根据指定的字符数组船舰一个字符串对象
    String(String value) 根据指定的字符串内容创建对象
    public class StringDemo {
    
        public static void main(String[] args) {
            // String三个方法的使用
            String str = new String();  //输出值为空
            System.out.println(str);
            char[] ch = {'H','e','l','l','o'};
            String str1 = new String(ch);  //输出Hello,由字符数组拼接而来
            System.out.println(str1);
            String str2 ="一人血怒,全家升天";  
            String str3 = new String(str2);  //输出str3
            System.out.println(str3);
        }
    
    }

    直接赋值出的对象和new出的对象储存位置不同

    public class StringDemo {
    
        public static void main(String[] args) {
            String str1="Welcome to Java";
            String str2=new String("Welcome to Java");
            String str3="Welcome to Java";
            System.out.println(str1==str2);  //false
            System.out.println(str1==str3);  //true
        }
    
    }

    inter方法,通过debug查看str的值

    public class StringDemo {
    
        public static void main(String[] args) {
            String str1="Welcome to Java";
            String str2=new String("Welcome to Java");
            str2=str2.intern();    //将常量池中的值的引用赋值给str2
            String str3="Welcome to Java";
            System.out.println(str1==str2);  //true
            System.out.println(str1==str3);  //true
        }
    
    }

    字符串的不可变性

    值相同的两个字符串只保留一份,String对象是不可变的,他的内容是不能改变的

    public class StringDemo {
    
        public static void main(String[] args) {
            //字符串不可变性演示
            String str = "Java";
            str = "Hello";
            System.out.println(str);  //Hello  
        }
    
    }

    为什么是Hello呢?

    其实是str的储存位置发生了变化,生成了新的字符串,在调试模式中可以看到id发生了变化:


    String 类常用方法

    字符与字符串的相互转换

    方法 类型 描述
    public String (char[] value) 构造 将全部的字符数组内容变为字符串
    public String (char[] value,int offset,int count) 构造

    将部分的字符数组内容变为字符串,offset为开始点,

    count表示要操作的长度

    public char charAt(int index) 普通 取得指定索引位置上的字符
    pubkic char[] toCharArray() 普通 将字符串转换为字符数组

    字符串与字节

    方法 类型 描述
    public String(byte[] bytes) 构造 将全部的字节数组内容变为字符串
    public String (byte[] bytes,int offset,int length) 构造

    将部分的字节数组内容变为字符串,offset为开始点,

    length表示要操作的长度

    public byte[] getBytes();

    普通 将字符串变为字节数组

    public byte[] getBytes(String charsetName) throws

    UnsupportedEncodingException

    普通 字符串转码操作

     字符串比较

    方法 类型 描述
    public booiean equals(String anObject) 普通 区分大小写的相等判断
    public boolean equalsIgnoreCase(String anotherString) 普通 不区分大小写的相等判断
    public int compareTo(String anotherString) 普通 比较两个字符串的大小,返回的是编码差值

    字符串查找(表格太难写了!!)

       方法名称                                                         类型  描述

      public  boolean contains(String str)                      普通  判断指定内容是否存在

      public  int indexOf(String str)                                普通  右前向后查找指定字符串位置,如果超找到了则返回(第一个字母)位置索引,如果找不到返回-1

      public  int indexOf(String str,int fromIndex)          普通  由指定位置从前向后查找指定字符串的位置,找不到返回-1

      public  int lastIndexOf(String str)                  普通  由后向前查找字符串位置,找不到返回-1

      public  int lastIndexOf(String str,int fromIndex)          普通  从指定位置由后向前查找字符串位置,找不到返回-1

      public  boolean startsWith(String prefix)                    普通  判断是否以指定的字符开头

      public  boolean startsWith(String prefix,int toffset)    普通  从指定位置开始判断是否以指定的字符开头

      public  boolean endWith(String suffix)                       普通  判断是否以指定的字符串结尾

     字符串替换操作

    public String relaceAll(String regex,String replacement)              普通             全部替换

    public String relaceFirst(String regex,String replacement)       普通    替换首个

    字符串截取

    public String substring (int beginIndex)普通 从指定位置截取到结尾

     public String substring (int beginindex,int endIndex)截取指定范围的内容

    字符串拆分

    ············  split(String regex)       ```         按照指定的字符串全拆分

    ············  split(String regex,int limit)       ```         拆分为指定的长度

    其他方法

    isEmply()   判断是否为空字符串

    length() 取得长度

    trim() 去掉左右空格

    toLowerCase() 将全部字符串转化为小写

    toUpperCase() 大写

    intern() 入池

    concat(String str) 字符串连接

    折磨多累死个人


    StringBuffer类

    和String一样,也用来代表字符串

    进行字符串处理时不生成新的对象

    如果经常对一个字符串进行修改,使用StringBuffer更加适合

    StringBuffer是一个线程安全的,但是效率慢些

    初始化:

    StringBuffer s = new StringBuffer();

    StringBuffer s = new StringBuffer("abc");

    String与StringBuffer之间没有联系     StringBuffer s =   "abc";是错误的

    方法:

    append()  追加字符串

    deleteCharAt () 删除指定位置的字符

    delete()  删除指定长度的字符  (int start ,int end)

    insert() 将指定内容插入指定位置

    reverse() 倒置字符串,生成新的字符串

    public class StringDemo {
    
        public static void main(String[] args) {
            StringBuffer str = new StringBuffer("Welcome to Java");
            StringBuffer str1=str.reverse();
            System.out.println(str1.toString());  //avaJ ot emocleW
    
        }
    
    }

    setCharAt() 用指定字符修改指定位置的字符

    trimTOSize() 将字符串的空间缩短为字符串长度 

  • 相关阅读:
    data guard switchover切换异常
    oracle dataguard
    建立信任关系
    sqlplus 打印很乱,而且很短就换行
    老友记英语
    每天读一遍
    extern的用法
    linux信号处理
    http server v0.1_http_parse.c
    http server v0.1_http_webapp.c
  • 原文地址:https://www.cnblogs.com/tkj521Ya/p/11258110.html
Copyright © 2020-2023  润新知