美文网首页
Java--String总结

Java--String总结

作者: _Raye | 来源:发表于2016-12-23 19:39 被阅读0次

    string字符串

    • string是不变字符串,对字符串的修改操作会产生新的字符串对象,而不是修改原来的字符串
            String str1 = "abc";
            String str2 = new String("abc");
            String str3 = new String("abc");
            String str4 = "ab" + "c";
            System.out.println(str1 == str2);  //false
            System.out.println(str2 == str3);  //false
            System.out.println(str1 == str4);  //true
    
    • 一道面试题:
      这句话输出的结果:3ab34
      这句话创建的字符串有哪些:a,b,3a,3ab,3ab3,3ab34
    String str5 = 1 + 2 + "a" + "b" + 3 + 4;
    System.out.println(str5);
    
    • charnAt - 取下标对应的字符
    • concat - 将指定字符串连接到此字符串的结尾
    • compareToIgnoreCase - 忽略大小写作比较
    • replace - 字符替换
    • split - 字符串分割
    • substring - 从一个字符串里取出指定范围的子串
    • trim - 修剪字符串左右两边的空格
    • startsWith / endsWith() - 检查字符串是否以指定字符开始 / 结尾
    • valueof() - 静态方法 - 将基本数据类型转换成对应的字符串
    String str6 = "hello,world";
            System.out.println(str6.length());//11
            char ch = str6.charAt(1);
            System.out.println(ch);//e
            System.out.println(str6.compareTo("Hello,world"));//32,小写的比大写的大32
            System.out.println(str6.compareToIgnoreCase("Hello,world"));//0
            System.out.println(str6.equals("Hellp,world"));//false
            System.out.println(str6.equalsIgnoreCase("Hello,world"));//true
            String str7 = str6.concat("!Goodbye!");
            System.out.println(str6);//hello,world,string是不变字符串。
            System.out.println(str7);
            str7 = str7.replace('o', '@');
            System.out.println(str7);
            String str8 = "床前明月光,疑是地上霜,举头望明月,低头思故乡";
            String[] stringArray = str8.split(",");
            for (String string : stringArray) {
                System.out.println(string);
            }
            String str9 = str8.substring(7);
            System.out.println(str9);
            String str10 = str8.substring(6, 11);
            System.out.println(str10);
            String str11 = " hello   world   ";
            System.out.println(str11.trim());
            int a = 123;
            System.out.println("" + a);//引用了常量池的123
            System.out.println(String.valueOf(a));)
            String str12 = "programme.exe";
            System.out.println(str12.endsWith(".exe"));
    
    • 练习:将一串字符滚动播放
    package org.mobiletrain;
    
    
    import java.awt.Font;
    
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.Timer;
    
    @SuppressWarnings("serial")
    public class Test02 extends JFrame{
        
        public Test02(){
            this.setTitle("滚动播放");
            this.setSize(320, 140);
            this.setResizable(false);
            this.setLocationRelativeTo(null);
            this.setDefaultCloseOperation(EXIT_ON_CLOSE);
            
            JLabel label = new JLabel("欢迎来到成都千锋                      ");
            label.setFont(new Font("微软雅黑", Font.PLAIN, 18));
            this.add(label);
            Timer timer = new Timer(200, evt -> {
                //从Java 8开始在lambda表达式接口或者接口回调中使用的局部变量
                //默认是final的,所以不能重新赋值
                String string = label.getText();
                //迎来到成都千锋                      + 欢(第一遍的执行结果)
                string = string.substring(1) + string.charAt(0);
                label.setText(string);
            });
            timer.start();
        }
        
        
        
        public static void main(String[] args) {
            new Test02().setVisible(true);
        }
    }
    

    StringBuffer和StringBulider

    • StringBuffer和StringBuilder代表可变字符串
    • StringBuffer是线程安全的 - 多个线程可以操作同一个StringBuffer对象
    • StringBuilder是线程不安全的 - 多个线程同时操作一个StringBuilder时会发生错误
    • append - 在末尾追加新内容
    • insert - 在指定位置插入新内容
    • deleteCharAt - 删除指定位置的字符
    • delete - 删除指定范围的字符(第一个参数是开始索引(从0数),第二个参数是结束索引(从1数))
    • reverse - 字符串的反转
    • setCharAt - 修改指定位置的字符
    public class Test03 {
    
        public static void main(String[] args) {
            StringBuffer sb = new StringBuffer("hello");
            sb.append(" world!");
            sb.insert(5, " good");
            sb.insert(0, "hi! ");
            System.out.println(sb);
            //sb.deleteCharAt(10);
            sb.delete(0,9);
            System.out.println(sb);
            sb.reverse();
            System.out.println(sb);
            sb.setCharAt(5, '#');
            System.out.println(sb);
        }
    
    }
    
    
    • 如果要频繁的修改一个字符串,不要使用string,因为每次修改都有可能创建新的字符串对象,所以在这种场景下应该使用stringBuffer或者stringBuilder,后者优先
    public class Test04 {
    
        public static void main(String[] args) {
            //String str = "";
            //StringBuffer str = new StringBuffer();
            StringBuilder str = new StringBuilder();
            long start = System.nanoTime();
            for (int i = 0; i < 100000; i++) {
                str.append("a");
            }
            long end = System.nanoTime();
            System.out.println((end - start) / 1e9 + "s");
        }
    
    }
    

    正则表达式

    public static void main(String[] args) {
            //验证手机号码跟设定模式是否匹配
            String str = "13823456789";
            boolean isvalued = str.matches("1[3478][0-9]{9}");//0-9可以用/d来代替
            System.out.println(isvalued);//true
            
            //验证QQ号
            String str1 = "875373899";
            boolean isvalid = str1.matches("[1-9]\\d{4,}");//没有上限
            System.out.println(isvalid);//true
            
            //验证用户名
            String userId = "Applepen";
            //boolean userid = userId.matches("[a-zA-Z0-9_]{6,20}");//加上^表示相反[^a-zA-Z]
            boolean userid = userId.matches("\\w{6,20}");//用大写的W表示相反
            System.out.println(userid);
            
            //验证邮箱
            String email1 = "591009493@qq.com";
            boolean email = email1.matches("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$");
            System.out.println(email);
            
            //过滤不良内容
            String msg = "马化腾,操你大爷,日你二爷,干你三爷,fuck你四爷,f u c k你四爷";
            msg = msg.replaceAll("[操日干]|[fF]\\s*[uU]\\s*[cC]\\s*[kK]|马化腾", "*");
            System.out.println(msg);
        }
    

    相关文章

      网友评论

          本文标题:Java--String总结

          本文链接:https://www.haomeiwen.com/subject/zjokvttx.html