javaSE练习Day02 随便练习前面的讲的

这篇博客主要介绍了Java中的工具类使用,包括printf格式化输出和时间戳的操作。讲解了Date和Calendar类在处理时间上的应用,以及如何进行时间戳与日期之间的转换。此外,还涉及到不同进制的数值输出以及格式化输出的相关知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.util.Calendar;
import java.util.Date;

/*
*
* 1学习的是工具类,util包下面
    * 2printf格式化输出,
    *   1类似的有String.format()
    *   2格式化输出有时更加方便
* */
public class Before {
    public static void main(String[] args) {
        testDate();
    }
    public static void testPrintf(){
        //idea缩写就是 souf
        int id = 100;
        String name = "李四";
        short age = 18;
        System.out.println("编号: "+ id +",姓名:"+name+",年龄"+age+"岁 ");
        //格式化输出,相比上边可以节约内存
        System.out.printf("编号:%d,姓名:%s,年龄:%d岁。",id,name,age);

        for (int i = 0; i > 15; i++) {
            //参数匹配问题 MissingFormatArgumentException
            //<:代表,前者用哪个,我用那个,共用一个参数,
            // 1$就格式化第二个参数
            System.out.printf("%d %<02d %1$03d%n",i,3);
            //和上面的一样
            System.out.printf("%d %02d %03d%n",i,i,i);
            //左对齐(用0补充或空白),右对齐(默认的)
            System.out.printf("添加0或空白右对齐:%09d,%< 9d。\n",i);
            System.out.printf("添加-左对齐:%-9d,",i);

            //添加符号位:+
            System.out.printf("添加符号位:%+-9d,",i);
        }
        //16进制,8进制,2进制,10进制输出
        //16进制输出  red green blue --调色板 255 - ff  100 - 64
        System.out.printf("\n十六进制;%02x%n",255);
        //8进制输出
        System.out.printf("八进制%02o,",255);
        //2进制--java没有2进制输出
//        System.out.printf("",255);

        //输出浮点型
        System.out.printf("%.2f",20.135);
        System.out.println(String.format("%.2f --- %.5f",10f,20D));

        System.out.println();
        //System类可以拿到系统时间戳
        System.out.printf("%tF %<tT,",System.currentTimeMillis());
        System.out.printf("%tF %<tT,",new Date().getTime());


        //通过System类对象的currentTimeMillis() 方法返回当前系统的时间戳
//输出 .toString()方法
        long now = System.currentTimeMillis();
        System.out.println(now);
        //时间戳格式化
        System.out.printf("%tF %<tT,",now);

        System.out.printf("%tF %<tT,",0l);//0l对应时间是8时
//        System.out.printf("年月日 %tF 时间%<tT",1l);//对应时间和上面一样
        //单位是毫秒
        System.out.printf("%tF %<tT,",1000l);//这就是1秒

        //年月日时分秒星期时间戳格式化输出  m d都是小写
        System.out.printf("%tY年,%<tm月,%1$td日,%<tH时,%<tM分,%<tS秒 %<tA %n",now);


        //图片命名为时间
        System.out.println("时间戳为"+now);
        System.out.println(String.format("%tY%<tm%<td%<tH%<tM%<tS.png",now));

        //将时间用long类型的数表示。long类型的数可以表示时间
        //问题:增量是1的话单位是什么
        //时间戳由来
        /*
        * 时间戳本质上是一个long类型的数,用于表示时间
        *
        * */
    }

    //学习java 工具类 java.util.Date;
    public static void testDate(){
        Date date = new Date();
        //返回一个时间戳 就是long类型的数
        System.out.println(date.getTime());
        //分配了8个字节
        //复习一下格式化输出
        //过程
        // 首先date返回一个时间戳,和System.currentTimeMillis类似。
        //然后格式化输出,因为时间戳就是long类型的数
        //1就是1毫秒加上基础时间
        //-1这种应该是1970年之前

        System.out.printf("%tF %<tT%n",date.getTime());
        //再次尝试-1000l格式化输出
        //时间--也是一个标志
        //这里是把-1000其实是short类型的,强制变为long 。这里不会自动变
        //强类型匹配语言
        //-1000变为long类型值大小没有变,然后运算
        System.out.printf("%tF %<tT\n",-1000l);//1970-01-01 07:59:59


        System.out.println(date.getYear());//拿到的日期减了1900。虽然时间戳一样但值不对。

        //时间戳表示一个时间点。
        //需要转换原则
        //拿到一个原则--取有时一个原则。Linux系统就有问题

        //引入了日历类Calendar 通过日历类拿到年月日
        Calendar calendar = Calendar.getInstance();
        //问题:为什么没有new,new就是新的东西。占内存啊,一个就行了
        //一个可以处理多个问题。比如,单例模式,flag标志
        //本质:1个就够了
        //单例模式:
        //flag标志:类似单例模式,1个就够了,能省则省--最简原则
        //原则
        //保护,->私有
        //不让用户new,给你提供方法
        //同样这里calendar一个也就够了
        //得到年
        System.out.println(calendar.get(Calendar.YEAR));
        //Calendar.YEAR是一个特殊的属性---常量->因为它是大写的
        //这种常量也可称为字段,
        //所以写一个1也可以
        System.out.println(calendar.get(1));
        //特点参数是类的内部的属性
        //通过类内参数调用方法
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漫漫程序鹿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值