• Java String语法


    String类代表字符串。 Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。

    字符串不变; 它们的值在创建后不能被更改。 字符串缓冲区支持可变字符串。 因为String对象是不可变的,它们可以被共享。(常量池技术)

    Java语言为字符串连接运算符(+)提供特殊支持,并为其他对象转换为字符串。

    1.char charAt(int index);//返回 char指定索引处的值。

    2.int compareTo(String anotherString);//按字典顺序比较两个字符串。

    如:int cha=s1.compareTo(s2);

    比较字符串s1和s2,逐位比较,返回 第一个不同的字符,如果下标是i,返回(s1[i]-s2[i])。

    如果s1="abc";s2="abc";返回0

    如果s1="123456789";s2="123";返回后面不相同的部分("456789")的长度,这里返回6

    如果s1="123";s2="123456789";返回-6

    如果s1="159";s2="130"或者"136";返回第一个不相同的字符之差,返回'5'-'3'=2

    3.boolean endsWith(String suffix);//测试此字符串是否以指定的后缀结尾

    boolean startsWith(String suffix);//测试此字符串是否以指定的前缀开头

    4.int indexOf(int ch);//返回指定字符第一次出现的字符串内的索引

    5.int indexOf(int ch, int fromIndex);//返回指定字符第一次出现的字符串内的索引,以指定的索引开始搜索。
    6.int indexOf(String str);//返回指定子字符串第一次出现的字符串内的索引。
    7.int indexOf(String str, int fromIndex);//返回指定子串的第一次出现的字符串中的索引,从指定的索引开始。如果找不到,返回-1

    8.int length();//获取长度

    9.String substring(int beginIndex, int endIndex);//返回一个字符串,该字符串是此字符串的子字符串。取头断尾。

    10.String trim(String str);//删去前后缀的空白格

    11.char[] toCharArray();//将String型转化为新的char字符数组,用于修改内部字符,比Substring()截取拼接快多了

            String s="hello";
            int nowx=1,xx=3;
            char c[]=s.toCharArray();
            c[nowx]=c[xx];
            c[xx]=s.charAt(nowx);
            String next=new String(c);

    12.整型浮点型和String互转,封装类和String里的静态方法

    String str="123";
    int a=Integer.parseInt(str);//String转整型
    String sa=String.valueOf(a);//整型转回String
    double f=1234.56;
    String sf=String.valueOf(f);//浮点型转String
    double ff=Double.parseDouble(sf);//String转浮点型

    13.String toLowerCase();//字母全部变小写,其他字符不变,包括中文或符号
    14.String toUpperCase();//字母全部变大写,其他字符不变,包括中文或符号

    15.String[] split(String regex);//按相同字符串regex的内容进行分割,存进String数组

    但这个regex是一个匹配模式,不是普通的字符串,如果遇到"."、"*"、"|"、"+"、"\"等符号都需要转义,否则运行后有些是抛出异常有些是没有达到预期结果,遇到这种情况加个"\"试试,如"\."、"\*"、"\+"等。在regex中,"|"这个字符是连字符,可以按多种符号进行分割。

    public class TestString {
        public static void main(String[] args) {
            String s1="守林鸟+博客园";
            String []s=s1.split("\+");
            for(int i=0;i<s.length;i++)
                System.out.println(s[i]);
            System.out.println("-----------------");
            s1="守林鸟|博客园";
            s=s1.split("\|");
            for(int i=0;i<s.length;i++)
                System.out.println(s[i]);
            System.out.println("-----------------");
            s1="守林鸟\博客园";
            s=s1.split("\\");
            for(int i=0;i<s.length;i++)
                System.out.println(s[i]);
            System.out.println("-----------------");
            s1="shou lin niao bo ke.yuan";
            s=s1.split("lin|bo|\.");
            for(int i=0;i<s.length;i++)
                System.out.println(s[i]);
        }
    }

    输出:

    守林鸟
    博客园
    -----------------
    守林鸟
    博客园
    -----------------
    守林鸟
    博客园
    -----------------
    shou
    niao
    ke
    yuan

    16.String为什么是final的?

    (1)为了实现常量池技术,在常量池中,需要的时候直接拿(指向引用),不需要开辟内存,省空间。

    (2)因为字符串是不可变的,所以是多线程安全的,同一个字符串实例可以被多个线程共享。这样便不用因为线程安全问题而使用同步。字符串自己便是线程安全的。

    17.创建一个字符串不论方式,先在常量池中检查有没有,没有就加进去。 没有用new创建字符串则是引用常量池里的字符串,用new创建则是在堆中创建。

            String s1="aaa";
            String s2="aaa";
            String s3=new String("aaa");
            String s4=new String("aaa");
            System.out.println((s1==s2) + " " + (s3==s4)+" "+(s1==s3));//true false false

    牛客刷题

    1.java7后switch支持String作为条件。switch语句和子句表达式都不能为null,NullPointerException

  • 相关阅读:
    c++ 中 pair 的 使用方法
    初窥c++11:lambda函数及其用法
    HDU2089-不要62
    算法训练 K好数
    点评删除和编辑
    事务
    SQL Function 自定义函数
    常用CSS实例
    分页显示数据
    开发教程指南
  • 原文地址:https://www.cnblogs.com/shoulinniao/p/11631202.html
Copyright © 2020-2023  润新知