Java基础-String类

日期处理类

 public static void main(String[] args) {
        Date borrowDate = new Date();
        // 距离 1970 1 1 00:00:00
        long borrow = borrowDate.getTime();
        // 2020-12-25 09(hour):36(minutes):50(seconds)
        System.out.println(borrowDate);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateFormat = simpleDateFormat.format(borrowDate);
        System.out.println(dateFormat);
        Date backDate = new Date();
        long back = backDate.getTime();
        System.out.println((back - borrow) / 1000);
    }

String类

  • String类代表的是不可变的字符串序列;每次改动其实都创建了一个新的对象;

1.1.String常用方法

1,构造方法

    public static void main(String[] args) {
        String s = new String();
        System.out.println(s);
        String s2 = new String("hello");
        System.out.println(s2);
        char[] chars = {'j', 'a', 'v', 'a'};
        String s3 = new String(chars);
        System.out.println(s3);
        byte[] bytes = {65, 98, 99, 100};
        String s4 = new String(bytes);
        System.out.println(s4);
    }

2,有关字符串比较的方法

 public static void main(String[] args) {
        // abc 010101010
        String a = "javasm"; // b agcsgfetg
        //s.length()得到字符串长度
        System.out.println(a.length());
        String b = "aacbce"; // 65
        // equals方法比较的是字符串内容是否相等
        System.out.println(a.equals(b));
        System.out.println("忽略大小写:" + a.equalsIgnoreCase(b));
     // 如果a大于b返回正数 等于返回0 小于返回负数
        System.out.println("比较的值是:" + a.compareTo(b));
        //
        System.out.println("是否是以指定的字符串打头的:" + a.startsWith("java"));
        System.out.println("是否是以指定的字符串为后缀的:"+a.endsWith("javasm"));
    }

3,字符串搜索的方法,找不到指定字符或者字符串的时候返回 -1

public static void main(String[] args) {
        String str = "abcabc";
        // 返回的是指定字符首次出现的索引位置
        System.out.println(str.indexOf('c'));
        // 返回的是指定指定字符串首次出现的索引位置
        System.out.println(str.indexOf("ab"));
        // 返回的是指定字符最后一次出现的索引位置
        System.out.println(str.lastIndexOf('c'));
        // 返回的是指定指定字符串最后一次出现的索引位置
        System.out.println(str.lastIndexOf("ab"));
    }

4,字符串提取相关方法

public static void main(String[] args) {
        String str = "javasm";
        // 根据指定的索引得到对应的字符
        System.out.println(str.charAt(1));
        // 截取字串,从指定索引位置开始往后截取
        String subStr = str.substring(4);
        System.out.println(subStr);
        // 前闭后开 包含头不包含尾
//        System.out.println(str.substring(4, 6));
        // 字符串拼接的方法 得到一个新的字符串对象
        String strConcat = str.concat("oracle");
        System.out.println(strConcat);
        //替换字符,新的字符会把旧的字符全部替换,生成新的字符串
        String strReplace = str.replace('a', 'b');
        System.out.println(strReplace);
        //用Oracle替换sm
        String strReplaceAll = str.replaceAll("sm", "oracle");
        System.out.println(strReplaceAll);
        //去除头和尾的空格
        String trim = str.trim();
        System.out.println(trim);
        //切分的方法,以指定字符进行切分 返回一个字符串数组
        String[] vas = str.split("a");
        System.out.println(Arrays.toString(vas));
    }

5,大小写转换

   public static void main(String[] args) {
        String str = "JAva";
        System.out.println(str.equalsIgnoreCase("java"));
        System.out.println(str.toUpperCase());
        System.out.println(str.toLowerCase());
    }

1.2.字符串常量池

在JVM为了提高性能和减少内存开销,在实例化字符串的时候做了一些优化
1, 字面量都在字符串常量池(运行时常量池中)
2,当常见字符串常量时,会首先检查常量池中是否已经存在了,如果不存在就创建新的,如果已经存在了,直接返回引用
3, 对两个字符串常量如果使用 + 连接,新产生的对象会放入常量池(如果有了,直接返回引用)

4,对于字符串变量使用+连接的时候,新产生的对象放入到一个缓冲区中

public static void main(String[] args) {
        // 引用类型至少占用2块
        String s1 = new String("java");
        String s2 = new String("java");
        String s3 = "java" + "sm";// 加号两边是字符串常量,会放入常量池
        s3 = s3 + "sm"; //javasm会放入临时的缓冲区,不会放入字符串常量池
        String s4 = "javasm";
        System.out.println(s1 == s2); //
        System.out.println(s3 == s4); // true
        System.out.println(s1 == s3);
    }

1.3.StringBuffer类

同样也对字符串进程操作,StringBuffer和StringBuilder代表的是可变长的字符序列

两者有何区别:

  • StringBuffer是线程安全的,性能不好
  • StringBuilder是线程不安全的,性能较好

1,常用的构造方法

 public static void main(String[] args) {
        // sql语句的拼接
        StringBuffer stringBuffer1 = new StringBuffer(); //默认字符数组长度是16
        StringBuffer stringBuffer2 = new StringBuffer(8);
        StringBuffer stringBuffer3 = new StringBuffer("hello");
    }

2,常用方法

public static void main(String[] args) {
        // 频繁的进行字符串的拼接
//        StringBuffer stringBuffer1 = new StringBuffer(); //默认字符数组长度是16
        StringBuffer stringBuffer = new StringBuffer("hello");  // 21
        stringBuffer.append("sm");
        // stringBuffer.toString()返回的是字符串类型
        System.out.println(stringBuffer.toString());
        // 返回的是字符长度
        System.out.println(stringBuffer.length());
        //将当前StringBuffer对象中的字符序列倒置
       /* stringBuffer.reverse();
        System.out.println(stringBuffer);*/
        // replace 将用替换字符串从 start指定的位置开始替换,直到 end 指定的位置结束
        stringBuffer.replace(0, 5, "world");
        System.out.println(stringBuffer);
        //删除字符序列
       /* stringBuffer.delete(0, 5);
        System.out.println(stringBuffer);*/
        // 指定索引位置进行插入,索引值不能超过 当前字符序列的最大索引
        stringBuffer.insert(3, "java");
        System.out.println(stringBuffer);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值