• java第五天---String类和Date类


    本章节讲解常用类:String类和Date类

    一、String类

      1、什么是String类?

        String类是用来创建字符串类型的,是引用数据类型。

      2、特点:

        ①字符串不能改变

        ②因为不能改变,所以是可以共享的

        ③字符串的效果相当于要给char[]数组,但是实际上是byte[]字节数组

      3、创建方式

        第一种: String   str="123";  //直接使用双引号的就是字符串对象

        第二种:通过构造方法:String str=new String("abc");

      4、常用方法(更多方法参考jdk8)

        charAt(index):返回指定下表处的字符

        indexOf(char):返回该字符第一次出现的下标

        concat(str,str1....):拼接字符串,得到一个新的字符串

        contains(char):判断是否包含指定字符

        endWith(char):判断是否以指定字符结尾

        startsWith(char):判断是否以指定字符开头

        subString(index):截取从index开始到字符串结尾的字符串

        sunString(startIndex,endIndex):截取开始到结束下边之间的字符串,前闭后开

        split(""):以指定字符为间隔分割字符串为字符数组

        trim():删除字符串开头结尾处的空格,返回一个新的字符串

        toString():返回此对象本身

        replace(old,new):使用新的字符替代字符串中的旧的字符

        length():返回字符串的长度

        join(连接符,obj....):使用指定连接符连接多个字符串

      5、字符串的比较

         字符串的比较不使用  == ,使用equals(Object)或者equalsIgnoreCase(Object),equalsIgnoreCase()不区分  大小写。

        为什么不能使用 "=="?

          ①”==“在基本数据类型比较时,比较的是值。在比较引用数据类型时,比较的是内存地址

          ②equals()在底层依旧使用的”==“,不过在String类中对其进行了重写,让它能够比较字符串的值

       “==”和equals()从内存分析:

         在内存中的栈、堆、常来区中,栈用来存放变量名(引用),堆中用来存放创建的对象,常量中存放常量值。而字符串不改变,就发生在常量  区。当String  str1="123"加载时,str1 这个变量名就加载进栈,接着str1 到常量池去寻找 “123” 这个常量值,如果常量池没有该常量,那么就创建一      个,str1中存放 “123” 的地址。当String  str2="123"加载时,str2加载进栈,然后也去常量池中寻找 “123” ,这是常量池中已经存在了该常量,就不再  创建,使用已经存在的这个常量得地址。这个就体现了String字符串不变,可共享的特点。到 String  str3=new String("123")时,str3这个变量名进栈,  new  String()在堆里创建,str3存放的是堆里对象得地址,对象的初始化值会到常量池中寻找,如果常量池中存在,就引用已经存在的,不存的话,在  常量池中先创建。

      6、String的不足

        上边我们提到了字符串是不可变的,如果我们要在原来字符串的基础上去添加字符串,就会开辟一个空间,将拼接好的字符串放进去,拼接前的  字符串还在内存中,新加的数量少还好,如果由大量的数据拼接,就会浪费大量的时间和内存。

        所以,java给了两个新的类:StringBuffer和StringBuilder。这两个类创建的字符串都是可变的,拼接之类的就是再原来基础上拼接,不会再生成一  个新的字符串。这样就节省了大量的空间和开辟空间的时间。StringBuffer是线程安全的,StringBuilder是线程不安全的。这两个的类方法和String类一  样。StringBuffer和StringBuilder拼接和插入使用append()和insert()。String拼接字符串可以使用  +  ,String无法插入。

     二、Date类

       *Date类做什么用?

        用来获取当前本地的时间。

      *常见Date类对象?

        Date d=new Date();

      *通过Date类获取的时间,其格式不适合我们进行阅读,所以要进行格式化。

        格式化时用的类:SimpleDateFormat       该类中两个方法:format()将时间格式转为特定格式的字符串。parse()将字符串转为日期格式

    //将本地时间进行格式化,返回值为字符串
    Date date=new Date();
    //构造方法里边设置想要格式成的样式
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String format=sdf.format(date);
    //将字符串转换为日期格式 ,要转的字符串格式要和构造方法中的规则样式一样,这样才能够解析
    Date newDate=sdf.parse(format);

      *SimpleDateFormat类时jdk1.7之前提供的,jdk1.8之后提供的如下:

        获取本地时间:

          ①LocalDateTime类,获取本地的日期时间

          ②LocalDate类,获取本地的日期

          ③LocalTime类,获取本地的时间

          都是通过now()方法获取本地时间,应为now()是静态的,所以可以  类名.now()

        格式化使用的类:

          DateTimeFormatter

       格式化的过程和jdk1.7不同,看例子:  

     public static void main(String[] args) throws ParseException {
    //        获得当前的日期
            LocalDate now = LocalDate.now();
    //        使用DateTimeFormatter类的ofPattern()设置格式
            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    //        对日期进行格式化format()方法
            String format = now.format(dateTimeFormatter);
            System.out.println(format);
    
            //将字符串转换为日期格式
            String str="2020.03.12";
    //        使用DateTimeFormatter类的ofPattern()设置格式。只有方法中的格式和字符串的格式对应,parse()方法才能识别到那位是日期
            DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy.MM.dd");
    //        此处的parse()方法由LocalDate类调用,而jdk1.7之前是由SimpleDateFormat类的对象调用
            LocalDate parse = LocalDate.parse(str, dateTimeFormatter1);
            System.out.println(parse);
        }

           

      

  • 相关阅读:
    Linux下的C编程实战之文件系统编程
    IPMSG在ubuntu linux上的安装
    NTP服务器
    [Multimedia][MPEG2]MPEG2系统原理
    BitOperation.cs
    android interview 1
    Android USB Host
    android interview 3
    someone's android note
    Android Afianl框架(1)——FinalActivity注解
  • 原文地址:https://www.cnblogs.com/fbbg/p/14119403.html
Copyright © 2020-2023  润新知