Java常用类

1. String 类的特性

  • String类代表字符串。Java程序中的所有字符串字面值(“abc”)都作为此类的实例实现;
  • String是一个final类,代表不可变的字符序列;
  • 字符串是常量,用双引号引起来表示。它们的值在创建之后不能更改;
  • String对象的字符内容是存储在一个字符数组value[]中的。

1.1 String对象的创建

String str = "hello";
String s1 = new String();//this.value = new char[0];
String s2 = new String(String original);//this.value = original.value;
String s3 = new String(char[] a);//this.value = Arrays.copyof(value,value.length);
String s4 = new String(char[] a,int startIndex,int count);
  • String str1 = "abc";String str2 = new String("abc");的区别:
    字符串常量存储在字符串常量池,目的是共享;
    字符串非常量对象存储在堆中。
@Test
    public void test02(){
        String s1 = "javaEE";
        String s2 = "javaEE";
        String s3 = new String("javaEE");
        String s4 = new String("javaEE");

        System.out.println(s1 == s2);//true
        System.out.println(s1 == s3);//false
        System.out.println(s1 == s4);//false
        System.out.println(s2 == s3);//false
        System.out.println(s3 == s4);//false
        System.out.println(s2 == s4);//false
    }
@Test
    public void test04(){

        String s1 = "hello";
        String s2 = "world";
        String s3 = "hello" + "world";
        String s4 = s1 + "world";
        String s5 = s1 + s2;
        String s6 = (s1 + s2).intern();
        System.out.println(s6);
        System.out.println(s3 == s4);//false
        System.out.println(s3 == s5);//false
        System.out.println(s3 == s6);//true
        System.out.println(s4 == s5);//false
    }
  • 常量与常量的拼接结果在常量池,且在常量池中不会存在相同内容的常量;
  • 只要其中有一个是变量,结果就在堆中;
  • 如果拼接的结果调用intern(),返回值就在常量池中。

1.2 StringBuilder和StringBuffer

  • StringBuffer 类不同于String ,其对象必须使用构造器生成;
  • 当append和insert时,如果原来value数组长度不够,可扩容;
  • StringBuilder 和 和 StringBuffer 非常类似,均代表可变的字符序列,而且提供相关功能的方法也一样;

2. JDK8之前日期时间API

2.1 java.lang.System类

System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差;此方法适于计算时间差。

2.2 java.util.Date类

表示特定的瞬间,精确到毫秒.
toString():把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue,Wed, Thu, Fri, Sat),zzz是时间标准;

  @Test
   public void test1(){
       Date date = new Date();
       System.out.println(date);
       System.out.println(System.currentTimeMillis());
       System.out.println(date.getTime());

       Date date1 = new Date(date.getTime());
       System.out.println(date1.getTime());
       System.out.println(date1.toString());
   }

2.3 java.text.SimpleDateFormat类

Date类的API不易于国际化,大部分被废弃了,java.text.SimpleDateFormat类是一个不与语言环境有关的方式来格式化和解析日期的具体类.

  • public SimpleDateFormat(String pattern) :该构造方法可以用参数pattern指定的格式创建一个对象,该对象调用:
  • public String format(Date date) :方法格式化时间对象date
  • public Date parse(String source): 从给定字符串的开始解析文本,以生成一个日期。
@Test
   public void test2(){
       Date date = new Date();
       SimpleDateFormat format = new SimpleDateFormat();
       System.out.println(format.format(date));

       SimpleDateFormat format1 = new SimpleDateFormat("yyyy年MM月dd日 EEE HH:mm:ss");
       System.out.println(format1.format(date));

       Date parse = null;
       try {
           parse = format1.parse("2008年08月08日 星期一 08:08:08");
       } catch (ParseException e) {
           e.printStackTrace();
       }
       System.out.println(parse.toString());
   }

2.4 java.util.Calendar( 日历)类

Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能.

@Test
   public void test3(){
       Calendar calendar = Calendar.getInstance();
       Date time = calendar.getTime();
       System.out.println(time);
       Date date = new Date(234234235235L);
       calendar.setTime(date);
       System.out.println(date);
       calendar.set(Calendar.DAY_OF_MONTH, 8);
       System.out.println("当前时间日设置为8后,时间是:" + calendar.getTime());
       calendar.add(Calendar.HOUR, 2);
       System.out.println("当前时间加2小时后,时间是:" + calendar.getTime());
       calendar.add(Calendar.MONTH, -2);
       System.out.println("当前日期减2个月后,时间是:" + calendar.getTime());
   }

3. JDK8中新日期时间API

Java 8 吸收了 Joda-Time 的精华,以一个新的开始为 Java 创建优秀的 API。新的 java.time 中包含了所有关于本地日期(LocalDate)、本地时间(LocalTime)、本地日期时间(LocalDateTime)、时区(ZonedDateTime)和持续时间(Duration)的类。历史悠久的 Date 类新增了 toInstant() 方法,用于把 Date 转换成新的表示形式。这些新增的本地化时间日期 API 大大简化了日期时间和本地化的管理。

  • java.time – 包含值对象的基础包
  • java.time.chrono – 提供对不同的日历系统的访问
  • java.time.format – 格式化和解析时间和日期
  • java.time.temporal – 包括底层框架和扩展特性
  • java.time.zone – 包含时区支持的类

4. JDK8中新日期时间

  • ZoneId :该类中包含了所有的时区信息,一个时区的ID,如 Europe/Paris
  • ZonedDateTime :一个在ISO-8601日历系统时区的日期时间,如 2007-12-03T10:15:30+01:00 Europe/Paris。
  • 其中每个时区都对应着ID,地区ID都为“{区域}/{城市}”的格式,例如:Asia/Shanghai等
  • Clock:使用时区提供对当前即时、日期和时间的访问的时钟。
  • 持续时间:Duration,用于计算两个“时间”间隔
  • 日期间隔:Period,用于计算两个“日期”间隔
  • TemporalAdjuster : 时间校正器。有时我们可能需要获取例如:将日期调整到“下一个工作日”等操作。
  • TemporalAdjusters : 该类通过静态方法
    (firstDayOfXxx()/lastDayOfXxx()/nextXxx())提供了大量的常用TemporalAdjuster 的实现。
 @Test
    public void test6(){
        TemporalAdjuster next = TemporalAdjusters.next(DayOfWeek.SUNDAY);
        LocalDateTime localDateTime = LocalDateTime.now().with(next);
        System.out.println(localDateTime);

        LocalDate localDate = LocalDate.now().with(new TemporalAdjuster() {
            @Override
            public Temporal adjustInto(Temporal temporal) {
                LocalDate date = (LocalDate) temporal;
                if (date.getDayOfWeek().equals(DayOfWeek.FRIDAY)){
                    return date.plusDays(3);
                }else if (date.getDayOfWeek().equals(DayOfWeek.SATURDAY)){
                    return date.plusDays(2);
                }else {
                    return date.plusDays(1);
                }
            }
        });
        System.out.println("下一个工作日是:" + localDate);
    }

3. System类

  • System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。
  • 由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便的进行调用。
@Test
    public void test1(){
        String javaVersion = System.getProperty("java.version");
        System.out.println(javaVersion);

        String javaHome = System.getProperty("java.home");
        System.out.println(javaHome);

        String osName = System.getProperty("os.name");
        System.out.println(osName);

        String osversion = System.getProperty("os.version");
        System.out.println(osversion);

        String userName = System.getProperty("user.home");
        System.out.println(userName);

        String username = System.getProperty("user.name");
        System.out.println(userName);

        String userDir = System.getProperty("user.dir");
        System.out.println(userDir);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值