Java中的String、正则表达式

来源:互联网 发布:淘宝网品种销量排行榜 编辑:程序博客网 时间:2024/06/05 04:47
  1. String对象是不可变的,String类对象一旦创建它的所有属性都是final型的,不可更改。String类中每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,用来包含修改后的字符串内容,但最初的String对象并没有发生改变。
    String s="djdksal";//最初创建的字符串
    s="aaa"+"123456";//在这个过程中会新生成其它的对象用来存储"aaa"和"123456",之后将s指向最终的生成对象所在的存储空间,但是代码最初生成的s是没有变化的.
  2. StringBuilder和StringBuffer是可变的,二者的区别在于StringBuffer是线程安全的,StringBuilder不是线程安全的。当多线程访问时最好使用线程安全的StringBuffer。在执行效率方面StringBuilder最高,StringBuffer次之,String最低。针对这种情况,一般来说,如果操作的数据量比较小,应该优先使用String类;如果是在单线程下操作大量数据,应该优先使用StringBuffer类;而对于多线程下操作大量数据则优先使用StringBuilder类;
  3. String中的常用方法:
    • length()计算字符串的长度
    • charAt()获取指定索引位置的字符
    • toCharArray()将字符串转化为字符数组
    • getBytes()方法将字符串转化为新的字节数组
    • toUpperCase()方法将字符串转化为大写
    • toLowerCase()方法将字符串转化为小写
    • equalsIgnoreCase()方法忽略大小写的情况下比较字符串是否相等
    • compareTo()方法将两个字符串进行比较大小(按词典顺序比较,大小写不相等)
    • contains()方法判断字符串中是否含有指定字符或者字符串
    • startsWith()方法判断字符串是都以指定字符或者字符串开头
    • endsWith()方法判断字符串是否以指定的字符或者字符串结尾
    • subString()方法截取字符串中指定起始位置的字符
    • concat()方法给原有的字符串连接新的字符串
    • replaceAll()方法用指定的字符或者字符串替换原字符串中指定的字符
    • trim()方法去掉字符串首尾两端的空白字符
    • equals()方法比较两个字符串是否相等,没有覆盖父类的情况下,比较的是引用,这时和直接使用运算符”==”效果相同;覆盖了父类方法之后可以认为比较的是两个对象的内容.
    • split()方法将输入的字符串断开为字符串对象数组,断开边界由正则表达式确定
package string;import java.util.Scanner;/** * Created by xpengfei on 2017/9/7. * 温习java中String的方法以及使用 */public class javaString {    //主方法,用来调用以上测试String的各个子方法    public static void main(String[] args) {        Scanner read=new Scanner(System.in);        System.out.println("请输入要测试的字符串:");        String s=read.nextLine();        while(!s.equals("!")){            System.out.println("length()方法------输入的字符串长度为:"+s.length());            System.out.println("charAt()方法------字符串中索引位置为1的字符为:"+s.charAt(1));            char ch[]=new char[s.length()];            ch=s.toCharArray();            System.out.print("toCharArray()方法------s字符串转化为数组后为:");            for (int i = 0; i <ch.length ; i++) {                System.out.print(ch[i]+"\t");            }            System.out.println();            System.out.println("getBytes()方法,可以将字符串转化为一个新的字节数组!");            //将字符串转化为大写            String s1=s.toUpperCase();            System.out.println("toUpperCase()方法------转化为大写后的字符串:"+s1);            System.out.println("equals()方法------s和s1相等:"+s.equals(s1));            System.out.println("equalsIgnoreCase()方法------忽略大小写s和s1是否相等:"+s.equalsIgnoreCase(s1));            System.out.println("compareTo()方法------s和s1的比较:"+s.compareTo(s1));            System.out.println("compareTo()方法------s和a+s1的比较:"+s.compareTo("a"+s1));            s1=s1.toLowerCase();            System.out.println("toLowerCase()方法------转化为小写后的字符串:"+s1);            System.out.println("equals()方法------s和s1相等:"+s.equals(s1));            System.out.println("contains()方法------s中包含xing:"+s.contains("xing"));            System.out.println("startsWith()方法------s是否以x开头:"+s.startsWith("s"));            System.out.println("endsWith()方法------s是否以xing结尾:"+s.endsWith("xing"));            System.out.println("subString()方法------截取s字符串中2-4位置的字符:"+s.substring(2,4));            System.out.println("concat()方法------给连接字符串namexing"+s.concat("namexing"));            System.out.println("replaceAll()方法------"+s.replaceAll("xing","XING"));            System.out.println("trim()方法------去掉s两端的空白字符:"+s.trim());            System.out.println("请输入要测试的字符串:");            s=read.nextLine();        }    }}

运行结果

  • 在Java中所有新的格式化功能都由java.util.Formmatter类处理.format()方法模仿自C的printf().在使用上原理是相通的.
Formatter f=new Formatter(System.out); f.format("Float:%10.6f\n",12.034); //输出结果为Float: 12.034000,,,宽度为10,小数位数为6
  • 正则表达式
    • 表示一位数字 \d
    • 可能有一个负号后面跟着一位或多位数字 -?\d+
    • 任意字符 由 . 表示
    • [abc] 表示包含a、b、c的任意字符(和a|b|c作用相同)
    • [^abc] 除了abc意外的任何字符
    • [a-zA-Z] 从a-z或从A-Z的任何字符
    • [abc[hij]]任意a、b、c、h、i、j字符(同a|b|c|h|i|j)
    • [a-z&&[hij]] 任意h、i、j
    • \s 空白符(空格、tab、换行、回车)
    • \S 非空白符
    • \d 数字[0-9]
    • \D非数字[^0-9]
    • \w词字符[a-zA-Z0-9]
    • \W 非词字符
    • ^一行的起始
    • $一行的结束
    • \b词的边界
  • 使用
//                编写正则表达式字符串                String regex="[0-9]+";                //编译正则表达式                Pattern p=Pattern.compile(regex);                //已经编译过的Pattern对象上的matcher()方法,加上一个输入字符串,构造一个Matcher对象                Matcher m=p.matcher(s);//                调用Matcher对象中的matches()方法,查看是否有满足条件的存在,返回值为boolean                System.out.println(m.matches());
原创粉丝点击