Java高级编程十三:java常用类使用说明

188 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

第十三章 java常用类

1. 字符串相关类

1.1 String类

1.1.1 new和不new的区别
public class TestString{
    public statuc void main(String[] args){
		String s1 = new String("a");
   		String s2 = new String("a");
        //false
       	System.out.println(s1 == s2);
        
        String s3 = "a";
        String s4 = "a";
        //true
        System.out.println(s3 == s4);
 }  
}

不new的话,如果是第一次遇见这个字符串,就会在常量池创建一个引用,从始至终就创建了一次,如果再有新的字符串创建,优先在常量池查找

1.1.2 String常用的20个方法
  1. 和长度有关的方法

    序号返回类型方法签名作用
    1intlength()得到一个字符串里边的字符个数
  2. 和数组有关的方法

    序号返回类型方法签名作用
    2byte[]getBytes()将一个字符串转换成字节数组
    3char[]toCharArray()将一个字符串转换成字符数组
    4String[]split(String)将一个字符串按照指定的内容劈开
  3. 和判断内容有关的方法

    序号返回类型方法签名作用
    5booleanequals(String)区分大小写的判断两个字符串的内容是否一模一样
    6booleanequalsIgnoreCase(String)忽略大小写的比较两个字符串的内容是否一模一样
    7booleancontains(String)判断一个字符串里面是否出现了某个指定内容
    8booleanstartsWith(String)判断一个字符串是否以指定的内容开头
    9booleanendsWith(String)判断一个字符串是否以指定的内容结尾
  4. 和改变内容有关的

    序号返回类型方法签名作用
    10StringtoUpperCase()将一个字符串全部转换成大写
    11StringtoLowerCase()将一个字符串全部转换成小写
    12Stringreplace(String,String)将一个字符串里面出现的某个内容全部替换成指定的内容
    13StringreplaceAll(String,String)将一个字符串里面出现的某个内容全部替换成指定的内容 【支持正则表达式】
    14StringreplaceFirst(String s1,String s2)将字符串中第一次出现的s1换第二个s2
    15Stringtrim()去除字符串前后的空格
    16Stringsubstring(int x,int y)截取x到y - 1的字符串
    17Stringsubstring(int x)截取 x 到最后的字符串
  5. 和位置有关的方法

    序号返回类型方法签名作用
    18charcharAt()找到指定下标处对应的一个元素
    19intindexOf(String)找到某个内容第一次出现的下标
    20intlastIndexOf(String)找到某个内容最后一次出现的下标
1.1.3 String StringBuffer StringBuilder 之间的区别
  1. StringStringBuffer、StringBuilder之间的区别

    String类创建对象的时候正好够用,但是StringBuffer以及StringBuilder在创建对象的时候会预留16块缓冲区,为了防止追加连接的时候效率过低

    public class TestString{
        public static void main(String[] args){
            String s = new String("");
            long t1 = System.currentTimeMillis();
            for(int i = 0;i <= 100000;i++){
            	s += i;
            }
            long t2 = System.currentTimeMillis();
        	System.out.println(t2 - t1);
            
            StringBuffer bf = new StringBuffer("");
            long t3 = System.currentTimeMillis();
            for(int i = 0;i <= 100000;i++){
            	bf.append(i);
            }
            long t4 = System.currentTimeMillis();
        	System.out.println(t4 -t3);
        }
    }
    
  2. StringBufferStringBuilder之间的区别

    • StringBuffer同一时间允许一个线程进行访问,效率较低,但是不会出现并发错误
    • StringBuilder同一时间允许多个线程进行访问,效率较高,但是可能会出现并发错误

1.2 StringBuffer 和 StringBuilder

当 StringBuffer 空间被占满了,还要新增数据的话,会进行扩容,公式(原有长度 + 新增字符串长度) * 2

==StringBUffer的常用方法==

  1. 增加:append

    append(xxx); 用于字符串拼接

  2. 删除:delete

    delete(int start, int end); 用于删除指定位置的内容

  3. 修改 setCharAt / replace

    setCharAt(int n,char c);把指定下标的内容替换成指定字符

    replace(int start, int end ,String str);把[start,end)位置的内容替换成str

  4. 查询:charAt

    与String用法一样

  5. 插入:insert

    insert(int offset, xxx);在指定位置插入xxx

  6. 反转:reverse

    把当前字符序列逆转

2. JDK8.0之前的日期API

2.1 System的静态方法currentTimeMillis()

返回当前时间到1970年1月1日0:0:0之间的毫秒数,通常称之为时间戳

2.2 Date类

java.util.Date |----- java.sql.Date 对应的是数据库中的日期类型的变量

  1. 构造方法:Date()

    Date date1 = new Date();
    //显示当前的年月日时分秒
    System.out.println(date1.toString());
    //获取当前Date对象对应的时间戳
    System.out.println(date1.getTime());
    
  2. java.sql.Date如何实例化对象

    //import java.sql.Date;
    java.sql.Date d = new java.sql.Date(12312421414L);
    
  3. 如何把 util.Date 对象转换成 sql.Date 对象

    //强转
    Date d2 = new java.sql.Date(12312412L);
    java.sql.Date d3 = (java.sql.Date)d2;
    //使用getTime()
    Date d4 = new Date();
    java.sql.Date d5 = new java.sql.Date(d4.getTime());
    
    

2.3 Calendar类

2.4 SimpleDateFormat类

public class Test{
    public static void main(String[] args){
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        //格式化 日期到字符串
        String format1 = sdf.format(date);
        System.out.println(format1);
        //解析  字符串到日期
        //要求字符串必须是符合SimpleDateFormat格式的
        Date date2= sdf.parse("2020-02-06 17:48:13");
        System.out.println(date2);
        
    }
}

3. JDK8.0之后的日期API

3.1 LocalDate,LocalTime,LocalDateTime

public class Test{
    public static void main(String[] args){
        //now():获取当前的日期
    	LocalDate lc = LocalDate.now();	
        /*
        	时间用LocalTime
        	日期加时间 LocalDateTime
        */
        //of()
        LocalDateTme ldt = LocalDateTime.of(2020,2,6,17,56,48);
        /*
        	其他方法
        	getXXX()
        */
        LocalDateTme ldt2 = LocalDateTime.withDayOfMonth(2);
    }
}

3.2 Instant

public class {
    public static void main(String[] args){
 		Instant in = Instant.now();   
    }
}

3.3 DateTimeFormatter

  1. 预定义的标准格式
   DateTimeFormatter dtf = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
   LocalDateTime lc = LOcalDateTime.now();
   System.out.println(dtf.format(lc));