zoukankan      html  css  js  c++  java
  • Java String StringBuffer

    1、String类

    (1)概述:

    String类代表字符串,字符串是常量,创建之后不能更改,一旦这个字符串确定了,就会在内存中(堆中的常量池)生成这个字符串,字符串本身不能改变,但变量的地址是能够改变的,字符串的本质是一个字符的数组。

    (2)字符串的构建

    字符串中有大量的的重载构造方法,通过String类的构造方法可以完成字符穿的构建,还可以通过双引号的方式进行创建对象

    两者的是否相同?

    package com.oracle.demo02;
    
    public class Demo02 {
    
        public static void main(String[] args) {
            String str1="aaabbb";
            String str2=new String("aaabbb");
            System.out.println(str1==str2);
            System.out.println(str1.equals(str2));
    
        }
    
    }

    str1创建在内存中只有一个对象

    str2创建在内存中有两个对象,一个 new的对象在堆中,一个字符串本身对象,在字符串常量池中

     (3)String构造方法

    -------------------String()初始化一个新创建的String对象,表示一个空字符序列

    例如:String s1 = new String(); //创建String对象,字符串中没有内容

    ------------------- String(byte[  ] bytes)通过平台使用的默认字符解码指定byte数组,构建新的String

     例如:byte[] bys = new byte[]{97,98,99,100};

    String s2 = new String(bys);

    --------------------String(byte[  ] bytes  int offset  ,int  length )通过平台使用的默认字符解码指定byte子数组,构建新的String

    例如:String s3 = new String(bys, 1, 3); //创建String对象,把一部分数组元素作为字符串的内容,参数offset为数组元素的起始索引位置,参数length为要几个元素

    --------------------String(char[ ] values) 分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。

    例如:

    char[] chs = new char[]{’a’,’b’,’c’,’d’,’e’};

    String s4 = new String(chs); //创建String对象,把数组元素作为字符串的内容

    --------------------String(char[] value, int offset, int count)分配一个新的 String,它包含取自字符数组参数一个子数组的字符。

    例如:

    String s5 = new String(chs, 0, 3);//创建String对象,把一部分数组元素作为字符串的内容,参数offset为数组元素的起始索引位置,参数count为要几个元素

    (4)String类的方法查找

    ---------------length()返回字符串的长度

    String aaa="abcdefgrthajnsdjkcv";
            int b=aaa.length();
            System.out.println(b);

    ----------------------获取部分字符串substring(int beginindex)或者substring(int beginIndex ,  int endIndex)

    ---------------------判断是否以xxx为开头starsWith(xxx)返回值为true或false

    ----------------------判断是否以xxx为结尾endsWith(xxx)返回值为true或false

    ----------------------判断字符串是否包含另一个字符contains( char   s)判断是否包含指定字符串,包含返回true,不包含返回false

    String str = "abcde";
    int index = str.indexOf(“bcd”); //判断是否包含指定字符串,包含则返回第一次出现该字符串的索引,不包含则返回-1
    boolean b2 = str.contains("bcd");//判断是否包含指定字符串,包含返回true,不包含返回false

    ----------------------- 将字符串转成一个字符数组。或者字节数组。.getBytes()转换成一个数组。toCharArray()转换成一个字符数组

    String str = "abcde";
    char[] chs = str.toCharArray();
    byte[] bytes = str.getBytes();

     

    -------------------------- 判断两个字符串中的内容是否相同equals()

     --------------------------判断两个String是否相等,不考虑大小equalsIgnoreCase()

    String str = "abcde";
    String str2 = "abcde";
    String str3 = "hello";
    boolean b1 = str.equals(str2);
    boolean b2 = str.e/quals(str3);

    ---------------------------------获取该字符串的内容toString()

    public class Demo02 {
        public static void main(String[] args) {
            String str = new String("hello");
            System.out.println( str.toString() );
            System.out.println(str);
        }
    }

     还有:

    l 判断该字符串的内容是否为空的字符串

    l 获取给定的字符,在该字符串中第一次出现的位置

    l 获取该字符串中指定位置上的字符

    l 把该字符串转换成 小写字符串

    l 把该字符串转换成 大写字符串

    l 在该字符串中,将给定的旧字符,用新字符替换

    l 在该字符串中, 将给定的旧字符串,用新字符串替换

    l 去除字符串两端空格,中间的不会去除,返回一个新字符串

    public class Demo03 {
        public static void main(String[] args) {
            String str="hellojavanihaojava.txt";
            //求字符串长度
            System.out.println(str.length());
            //截取字符串
            System.out.println(str.substring(3));
            System.out.println(str.substring(3,5));
            //判断前缀
            System.out.println(str.startsWith("b"));
            //判断结尾
            System.out.println(str.endsWith(".txt"));
            //判断一个字符串中是否包含另一个字符串
            System.out.println(str.contains("java"));
            //返回一个字符串在另一个字符串中第一次出现的索引值
            //如果不存在该字符串则返回-1
            System.out.println(str.indexOf("5"));
            String str1="nihaojava";
            //将字符串转为字节数组
            byte[] b1=str1.getBytes();
            for(int i=0;i<b1.length;i++){
                System.out.print(b1[i]+" ");
            }
            //将字符串转为字符数组
            char[] c1=str1.toCharArray();
            for(int j=0;j<c1.length;j++){
                System.out.print(c1[j]+" ");
            }
            //判断两个字符串是否内容相同(忽略大小写)
            System.out.println(str1.equalsIgnoreCase("NiHaojava"));
        }
    }

     String类方法使用练习

     题目一:获取指定字符串中,大写字母、小写字母、数字的个数。

    package demo01;
    
    public class Demo03 {
            public static void main(String[] args) {
                String str="ADSFGbaersg1123125337";
                int bigCount = 0; //大写字母的个数
                int smallCount = 0; //小写字母的个数
                int numberCount = 0; //数字的个数
                for (int i=0; i < str.length(); i++) {
                     char ch = str.charAt(i); //获取指定位置上的字符
                    if (ch>='A' && ch<='Z') {
                        bigCount++;
            } else if (ch>='a' && ch<='z') {
            smallCount++;
            } else if (ch>='0' && ch<='9') {
                    numberCount++;
            }
            }
            System.out.println("大写字母个数:"+bigCount);
            System.out.println("小写字母个数:"+smallCount);
            System.out.println("数字个数:"+numberCount);
            }
            }
                

    l 题目二:将字符串中,第一个字母转换成大写,其他字母转换成小写,并打印改变后的字符串。

    package demo01;
    
    public class Demo04 {
        public static void main(String[] args) {
            String str="aA";
            //获取第一部分为字符串
            String start = str.substring(0,1);
            //获取第二部分为字符串
            String end = str.substring(1);
            //把第一部分字符串转换成大写字母,把第二部分字符串转换成小写字母
            String big = start.toUpperCase();
            String small = end.toLowerCase();
            //把两部分字符串连接在一起,得到一个完整的字符串
            System.out.println(big+small);
                }
    }

    l 题目三:查询大字符串中,出现指定小字符串的次数。如“hellojava,nihaojava,javazhenbang”中查询出现“java”的次数。

    public static int getCount(String big, String small){
        int count = 0; //出现小串的次数
        int index = -1;//出现小串的位置
        /*
            while的循环条件三步骤:
            步骤一. big.indexOf(small) 获取小串在大串中出现的位置
            步骤二. 把小串出现的位置,赋值给变量index
            步骤三. 判断出现的位置是否为-1, 如果位置等于-1,说明大串中已经查询不到小串了;如果位置不等于-1,那么,进行循环,完成次数累加与修改大串的操作
    */
        while ((index = big.indexOf(small)) != -1 ){
            count++;//出现次数+1
            //更改大串内容
            big = big.substring(index+1);
    }
    return count;
    }

     练习2

    用代码演示String类中的以下方法的用法
    (1)boolean isEmpty(): 判断字符串是不是空串,如果是空的就返回true
    (2)char charAt(int index): 返回索引上的字符
    (3)String toLowerCase(): 字符串转成小写
    (4)String toUpperCase(): 字符串转成大写
    (5)String replace(char oldChar, char newChar): 将字符串中的老字符,替换为新字符
    (6)String repalce(String old, String newstr): 将字符串中的老字符串,替换为新字符串
    (7)String trim(): 去掉字符串两端空格

        public static void main(String[] args) {
            //(1)boolean isEmpty(): 判断字符串是不是空串,如果是空的就返回true
            String str1=new String();
            boolean a=str1.isEmpty();
            System.out.println(a);
            //(2)char charAt(int index): 返回索引上的字符
            String str2="abcde";
            char b=str2.charAt(2);
            System.out.println(b);
            //(3)String toLowerCase(): 字符串转成小写
            String str3="ABCDEFG";
            String c=str3.toLowerCase();
            System.out.println(c);
            //(4)String toUpperCase(): 字符串转成大写
            System.out.println(c.toUpperCase());
            //(5)String repalce(char oldChar, char newChar): 将字符串中的老字符,替换为新字符
            String str4="abc";
            String d=c.replace("b","s");
            System.out.println(d);
            //(6)String repalce(String old, String newstr): 将字符串中的老字符串,替换为新字符串
            String e=d.replace(d, "falg");
            System.out.println(e);
            //(7)String trim(): 去掉字符串两端空格
            String str5="   ffff   ";
            System.out.println(str5);
            String f=str5.trim();
            System.out.println(f);    
        }//main
    
    }/

     2、字符串缓冲区

    字符串缓冲区支持可变的字符串,

    StringBuffer又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。

     (1)StringBuffer类

     StringBuffer方法的使用:

    -----------------append():将指定字符串添加到此字符序列

    ----------------delete(int start,int end)删除从start到end的字符

    -----------------insert(int offset ,String str)将str插入该字符串中

    -----------------replace(int start ,int end .String str)使用str替换该字符串中从start到end的字符

    -----------------reverse()将字符串使用反序取代

    -----------------toString()返回此序列中数据的字符串表现形式

    创建一个字符串缓冲区对象。用于存储数据。
    StringBuffer sb = new StringBuffer();
    sb.append("haha"); //添加字符串
    sb.insert(2, "it");//在指定位置插入
    sb.delete(1, 4);//删除
    sb.replace(1, 4, "cast");//替换指定范围内的内容
    String str = sb.toString();

    练习:int[] arr = {34,12,89,68};将一个int[]中元素转成字符串  格式 [34,12,89,68]

    public static String toString_2(int[] arr) {
            StringBuffer sb = new StringBuffer();        
            sb.append("[");
            for (int i = 0; i < arr.length; i++) {
                if(i!=arr.length-1){
                    sb.append(arr[i]+",");
                }else{
                    sb.append(arr[i]+"]");
                }
            }        
            return sb.toString();
        }

      StringBuilder类它也是一个可变的字符序列它比 StringBuffer 要快。

  • 相关阅读:
    关键路径的计算
    JSF简单介绍
    介绍:一款Mathematica的替代开源软件Mathetics
    素材链接
    JSP动作--JSP有三种凝视方式
    【InversionCount 逆序对数 + MergeSort】
    全响应跨设备的Zoomla!逐浪CMS2 x2.0正式公布
    DirectSound的应用
    “海归”首选北上广 薪资期望不太高-有感
    Servlet登陆功能的实现
  • 原文地址:https://www.cnblogs.com/cgj1994/p/10004057.html
Copyright © 2011-2022 走看看