zoukankan      html  css  js  c++  java
  • Java——String类

    String类概述及其构造方法
    String类概述:
          字符串是由多个字符组成的一串数据(字符序列)
          字符串可以看成是字符数组
    String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
    String 类是一个final类型的类,不能重写
    构造方法:(String 类里面自己维护一个字符串数组)
    public String()

    public String(byte[] bytes)
    public String(byte[] bytes,int offset,int length)

    public String(char[] value)
    public String(char[] value,int offset,int count)

    public String(String original)

    String类的判断功能:
    boolean equals(Object obj);

    boolean equalsIgnoreCase(String str);
    boolean contains(String str);

    boolean startsWith(String str);
    boolean endsWith(String str);

    boolean isEmpty();

    String类的获取功能:
    int length();
    char charAt(int index);
    int indexOf(int ch);      //默认转换 : byte,short,char—int—long—float—double;
    //byte,short,char相互之间不转换,他们参与运算首先转换为int类型
    int indexOf(String str);
    int indexOf(int ch,int fromIndex);
    int indexOf(String str,int fromIndex);
    String substring(int start);
    String substring(int start,int end);

    String类的转换功能:
    byte[] getBytes();    
    // 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
    char[] toCharArray();   
    // 将此字符串转换为一个新的字符数组。
    static String valueOf(char[] chs);   
    //转字符串
    static String valueOf(int i);

    String toLowerCase();

    String toUpperCase();

    String concat(String str);

    String类的其他功能:
    替换功能
    String replace(char old,char new);
    String replace(String old,String new);
    //去除字符串两空格       
    String trim();        //返回字符串的副本,忽略前导空白和尾部空白。
    按字典顺序比较两个字符串 
    int compareTo(String str);

    int compareToIgnoreCase(String str);


    String类的特点及面试题:
    █ 字符串是常量,它的值在创建之后不能更改
            String s = “hello”; s += “world”; 问s的结果是多少?
    █ 面试题
            String s = new String(“hello”)和String s = “hello”;的区别?
            字符串比较之看程序写结果
            字符串拼接之看程序写结果


    StringDemo.Java     构造函数 StringDemo2.java     方法
    package com.java.string;
    public class StringDemo {

            public static void main(String[] args) {
                    String string = "abc";
                    string+="hello";
                    System.out .println(string);

                    String s1=new String();
                    System.out.println("s1 = "+s1); 
    //String类重写toString方法,输出该String的内容
                    //s1 =
                    System.out .println("s1.length() = "+s1.length());  //s1.length() = 0

                    byte[] bytes={97,98,99,100,101};
                    String s2=new String(bytes);
                    String s3=new String(bytes,1,3);               
                    System.out .println("s2 = "+s2);  //s2 = abcde
                    System.out .println("s2.length() = "+s2.length());  //s2.length() = 5
                    System.out .println("s3 = "+s3);   //s3 = bcd
                    System.out .println("s3.length() = "+s3.length());  //s3.length() = 3

                    char[] ch={'a','b','e','中','国'};
                    String s4=new String(ch);
                    System.out.println("s4 = "+s4);  //s4 = abe中国
                    System.out .println("s4.length() = "+s4.length());  //s4.length() = 5

                    String s5=new String(s4);
                    System.out .println("s5 = "+s5);  //s5 = abe中国
                    System.out .println("s5.length() = "+s5.length());  //s5.length() = 5

                    String string_1="abc";  //string_1指向常量池“abc”的地址
                    String s_1=new String("abc");  //重点,堆上开辟空间的时候先去找常量池有没有“abc”,有的话堆上空间就只是简单地存储常量池“abc”地址
                    System.out.println("string_1==s_1 ? "+(string_1==s_1));  //string_1==s_1 ? false  ;这里比较的是地址
                    System.out.println("string_1.equals(s_1) ? "+(string_1.equals(s_1) ));  //string_1.equals(s_1) ? true;这里比较的是内容
            }
    }
    package com.java.string;
    public class StringDemo2 {
            public static void main(String[] args) {
                    String s1 = new String("hello");
                    String s2 = new String("hello");
                    System.out.println(s1==s2);  //false
                    System.out.println(s1.equals(s2));  //true

                    String s3 = new String("hello");
                    String s4 = "hello";
                    System.out.println(s3==s4);  //false
                    System.out.println(s3.equals(s4));  //true

                    String s5 = "hello";
                    String s6 = "hello";
                    System.out.println(s5==s6);  //true
                    System.out.println(s5.equals(s6));  //true

                    String ss1 = "hello";
                    String ss2 = "world";
                    String ss3 = "helloworld";
                    //两个字符串变量相加,先在堆上开空间s4,然后再相加
                    //如果是两个字面常量相加,先相加,然后再到常量池里找有没有,如果有就直接返回
                    System.out.println(ss3==ss1+ss2);  //false;ss3指向常量池里的串地址;ss1+ss2返回的是堆上开辟的空间的地址
                    System.out.println(ss3=="hello"+"world");  //true
                    System.out.println(ss3==ss1+"world");   //false
                    System.out.println(ss3.equals(ss1+ss2));  //true

                    System.out.println(ss3.equalsIgnoreCase("HelloWorld"));  //true;不区分大小写,只看看相不相同
                    System.out.println(ss3.contains("wod"));  //false
                    System.out.println(ss3.startsWith("he"));  //true
                    System.out.println(ss3.endsWith("ad"));  //false
                    System.out.println(ss3.isEmpty());  //false

                    byte[] bytes={97,98,99,100,101};
                    String ss4=new String(bytes);
                    byte in=99;
                    System.out.println(ss4.indexOf(in));  //2

                    String xx="hello";   //h的ascII码104
                    String oo="abc";     //a的ascII码97
                    System.out.println(oo.compareTo(xx));        //-7  ;两个字符串首字母ascII码相减
            }
    }


    //练习
    1、把数组中的数据按照指定个格式拼接成一个字符串
    举例:int[] arr = {1,2,3};        输出结果:[1, 2, 3]
    2、字符串反转
    举例:键盘录入”abc”                输出结果:”cba”
    3、统计大串中小串出现的次数
    举例:在字符串” woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun”中java出现了5次
    /*把数组中的数据按照指定个格式拼接成一个字符串
    举例:int[] arr = {1,2,3};        输出结果:[1, 2, 3] */

    public class test1 {
            public static void main(String[] args) {
                    int[] arr={1,2,3};
                    String str="";
                    str+="[";
                    for(int i=0;i<arr.length;++i){
                            str+=arr[i];
                            if(arr.length-1==i){
                                    break;
                            }
                            str+=", ";
                    }
                    str+="]";
                    System.out.print(str);
            }
    }
    /*字符串反转
    举例:键盘录入”abc”                输出结果:”cba”*/

    public class test2 {
            public static void main(String[] args) {
                    Scanner input=new Scanner(System.in);
                    String str=input.nextLine();
                    //System.out.println(new StringBuilder(str).reverse().toString());
                    //StringBuilder(String str);   //构造一个字符串生成器,并初始化为指定的字符串内容。
                    String strReverse=stringReverse(str);
                    System.out.println(strReverse);
                    input.close();
            }
            public static String stringReverse(String str){
                    char[] ch=str.toCharArray();
                    for(int i=0;i<str.length()/2;++i){
                            char tmp=ch[i];
                            ch[i]=ch[str.length()-1-i];
                            ch[str.length()-1-i]=tmp;
                    }
                    String str1=new String(ch);
                    return str1;
            }
    /*统计大串中小串出现的次数
    举例:在字符串” woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun”中java出现了5次*/

    public class test3 {
            public static void main(String[] args) {
                    String str="woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun";
                    String subStr="java";
                    int num=getCount(str,subStr);
                    System.out.println(num);       
            }
            public static int getCount(String str,String subStr){
                    int count=0;
                    int i=str.indexOf(subStr);
                    while(i!=-1){
                            count++;
                            str=str.substring(i+subStr.length());
                            i=str.indexOf(subStr);
                    }
                    return count;
            }
    }
















  • 相关阅读:
    localStorage cache
    webpack的学习过程
    npm install --save/--save-dev的区别
    .gitignore常见问题
    jQuery的优点与缺点
    JSONP是什么
    Node.js-Usage & Example
    【转】Swig Getting Started
    【转】使用Spring MVC统一异常处理实战
    C++-Qt【5】-QT的QString,char*,QByteArray转化以及中文乱码的问题
  • 原文地址:https://www.cnblogs.com/meihao1203/p/9181742.html
Copyright © 2011-2022 走看看