String 类

String类

声明及赋值方式

String str=new String("111");
String s="111"

区别

第一种是以引用的方式,在堆中存放数据,栈中存放地址;第二种在赋值时会在常量池中先查找是否有该字符串,如果没有则开辟新空间,并将地址存入栈,如果有则直接将地址存入栈

  • String 类代表字符串。

  • String 类不是基本数据类型,它是一个类。默认值是null。

  • String 字符串是常量,字符串的值在创建之后不能更改。

    给字符串重新赋值时,不会在堆中修改,而是重新开辟一块空间并修改栈中的地址

    int i=10;
    String str=new String("david");
    str="tom";
    

  • String 类是最终类,不能被继承。

  • String类的内存模型

    String类常用方法

  • charAt() 截取一个字符

  • length() 字符串的长度

  • getBytes() 将字符串变成一个byte数组

  • equals() 和 equalsIgnoreCase() 比较两个字符串是否相等,前者区分大小写,后者不区分
    equals()比较的是堆中的数据,==比较的是栈中

    • startsWith() 和 endsWith() 判断字符串是不是以特定的字符开头或结束

    • concat() 连接两个字符串

    • substring() 截取字符串【包前不包后】

    • indexOf() 和lastIndexOf() 前者是查找字符或字符串第一次出现的地方,后者是查找字符或字符串最后一次出现的地方

    • compareTo() 和compareToIgnoreCase() 按字典顺序比较两个字符串的大小,前者区分大小写,后者不区分

    • replace() 替换

    • split() 按指定字符切割

  • StringBuffer和StringBuilder( 不开辟新空间 )

    • 场景:因为String是常量,每次修改其值都需要重新在堆内存中开辟新空间。这样再频繁对变量进行赋值操作时就会导致内存浪费。所以再需要频繁对变量值进行修改的时候,可以使用StringBuffer和StringBuilder
    • 方法:
      • append() 在原字符串后拼接字符
      • insert() 在原字符串前拼接自发
      • toString() 转化成字符串
      • reverse() 反转字符
    • 区别:
      • StringBuffer线程安全
      • StringBuilder非线程安全
  • Date类

    • Date类在java.util.Date中。是进行日期操作的类。Date类API
    Date now = new Date();//获得当前时间
    Date now = new Date(long millisec)//参数是从1970年1月1日起的毫秒数
    
    • 使用SimpleDateFormat类对日期类型进行格式化,形成字符串。
    public static void main(String[] args) {
       Date now = new Date(); // 创建一个Date对象,获取当前时间
       // 指定格式化格式
       SimpleDateFormat f = new SimpleDateFormat("今天是 " + "yyyy年MM月dd日HH点mm分ss秒");
            System.out.println(f.format(now)); // 将当前时间袼式化为指定的格式
        }
    }
    
posted @ 2021-01-08 11:06  0x3fffffff  阅读(96)  评论(0编辑  收藏  举报