• 第13章 Java常用类


     

    1.自动装箱和自动拆箱

    自动装箱:
    基本类型就自动的封装到与它相同类型的包装中:如:

    创建一个对象时:Integer i = 100;
    本质上是编译器编译时为我们添加了:
    Integer i = new Integer(100);

    自动拆箱:
    包装类对象自动转换成基本类型数据,如:

    int a = new Integer(100);
    本质上,编译器为我们添加了:
    int a = new Integer(100).intValue();

    此类中的方法中的缓存问题

    [-128, 127]之间的数,仍然被当做基本类型处理,由于基本类型的处理要比其他方式快一些,所有这个范围内的数据不做改变

     1 /**
     2  * Created by cenyu on 16-11-17.
     3  * 测试自动装箱和拆箱
     4  */
     5 public class AutoBoxing {
     6     public static void main(String[] args) {
     7         //自动装箱
     8         Integer a = new Integer(100); //这是原本创建一个a 对象,并传值100
     9         Integer a1 = 100; //这是自动装箱,效果等同上面。jdk5.0之后才有,
    10                          // 本质是编译器会帮我们改进代码成:Integer a1 = new Integer(100);
    11 
    12         //自动拆箱
    13         int b = new Integer(1500).intValue(); //正常操作,定义了一个int对象a
    14         int c = new Integer(1500); //自动拆箱,定义一个int对象c,
    15                                 // 本质上是编译器帮我们改进代码为:int b = new Integer(1500).intValue();
    16 
    17 
    18         //产生的缓存问题
    19         //1.比较两个对象,没有缓存问题
    20         Integer s1 = 1234;
    21         Integer s2 = 1234;
    22         System.out.println(s1==s2); //false, 因为利用了装箱的功能,所有实际是创建了两个类,
    23         System.out.println(s1.equals(s2)); //true, 这两个类的值相等
    24 
    25         //2.再次比较,出现缓存问题
    26         Integer x1 = 123;
    27         Integer x2 = 123;
    28         System.out.println(x1==x2);//true,原因是[-128,127]之间的数,仍然被当做基本数据类型来处理
    29         System.out.println(x1.equals(x2));//true
    30 
    31     }
    32 }

    2.时间类java.util.Date

    1.Date类的对象表示一个特定瞬间,精确到毫秒
    2.java中的时间也是数字,他是从:标准纪元;1970.1.1.0点开始到某个时刻的毫秒数,类型是long

    2.1.date类中的几个常用方法

     1 import java.util.Date;
     2 /**
     3  * 测试时间类的用法
     4  * Created by cenyu on 16-11-17.
     5  */
     6 public class TestDate {
     7     public static void main(String[] args) {
     8         Date d = new Date();//什么参数都不传,表示当前时间
     9         Date d2 = new Date(1000); //1 Jan 1970 00:00:01 GMT //传入一个long类型,表示以基本纪元为起点,往后1000个时间点,即往后1秒钟
    10         d2.setTime(2000);//重新设置参数
    11         System.out.println(d);
    12         System.out.println(d2.toGMTString());
    13     }
    14 }

    2.2.DateFormat和SimpleDateFormat类

    作用:完成字符串和时间对象的转化
    format:时间转化为字符串
    parse:字符串转化为时间

     1 import java.text.DateFormat;
     2 import java.text.ParseException;
     3 import java.text.SimpleDateFormat;
     4 import java.util.Date;
     5 
     6 /**
     7  * 测试时间转化为字符串,和字符串转化为时间
     8  * Created by cenyu on 16-11-17.
     9  */
    10 public class TestDateFormat {
    11     public static void main(String[] args) throws ParseException {
    12         //把时间转化为字符串,format
    13         //创建类的时候不能new一个抽象类,可以new他的一个子类 //创建一个时间格式化对象
    14         DateFormat df = new SimpleDateFormat("yyy-MM-dd hh:mm:ss");
    15         //创建一个时间对象
    16         Date d = new Date(123213123L);
    17         String str = df.format(d);//将时间对象按照格式化字符串,转化为字符串
    18         System.out.println(str); //1970-01-02 06:13:33
    19 
    20         //把字符串格式化一个时间对象,parse
    21         String str2 = "1977-7-7";
    22         DateFormat df2 = new SimpleDateFormat("yy-MM-dd");
    23         try {
    24             Date d2 = df2.parse(str2);
    25             System.out.println(d2);//Thu Jul 07 00:00:00 CST 1977
    26         } catch (ParseException e) {
    27             e.printStackTrace();
    28         }
    29 
    30     }
    31 }

    2.3.日历类Calendar

    通过Calendar把日期和loong类型的数字链接起来,时相互转化
    GregorianCalendar公历
    这个类是Calendar类的一个具体子类,提供了绝大多数地区的标准日历系统
    需要注意:

    1.月份从0开始,1月是0,12月是11
    星期:周日是1,周一是2,周六是7

     1 import java.util.Calendar;
     2 import java.util.Date;
     3 import java.util.GregorianCalendar;
     4 
     5 /**
     6  * 测试日期类
     7  * Created by cenyu on 16-11-17.
     8  */
     9 public class TestCalendar {
    10     public static void main(String[] args) {
    11         Calendar c = new GregorianCalendar();
    12         c.set(Calendar.YEAR,2003); //设置一个年份,没有设置的默认是当前的日期数据
    13 //        c.set(2001,1,10,23,24,59);  //设置一个时间
    14         c.add(Calendar.YEAR,3);//年份上再加3年
    15         Date d = c.getTime(); //获取时间
    16         System.out.println(d);
    17         System.out.println(c.get(Calendar.YEAR));  //2003+3获取设置的年份
    18     }
    19 }
  • 相关阅读:
    DoubleAnimation
    Android 图片浏览器 从原来位置放大至全屏显示
    类似qq的左滑菜单栏简单实现
    UITableView去掉section的header的粘性
    swift 闭包循环引用
    AFNetworking3.0使用
    IOS线程学习(一)
    CIImage实现滤镜效果
    UIImage学习
    可滑动的ExpandableListView
  • 原文地址:https://www.cnblogs.com/cenyu/p/6093503.html
Copyright © 2020-2023  润新知