Java基础进阶-5-static+final+格式化(时间)

1、static属性

  • 静态的方法是无法调用非静态变量的;
  • 同一类的所有实例共享一份静态变量;
  • 静态变量会在类第一次被加载的时候被初始化。
  • 静态变量会在该类的任何对象创建之前就完成初始化;
  • 静态变量会在该类的任何静态方法执行之前就初始化完成。
public class Test_Static {

    public String name; //实例变量 每new一个对象就会创建一个新的name变量

    /**
     * 1、如果你new 了好多个Test_Static实例,但是静态变量age只会有一个,所有的实例共享这一个age,
     *    你在某处改变age的值,其他所有实例的age值也会改变。
     */
    public static int age=2;

    /**
     * 2、静态变量只会在类第一次载入的时候被初始化。类会被加载是因为Java虚拟机认为它该被加载,
     *    通常,Java虚拟机会加载某个类是因为第一次有人要尝试创建该类的新实例,或是使用该类的
     *    静态方法或变量。
     * 3、静态变量会在该类的任何对象创建之前就完成初始化;
     * 4、静态变量会在该类的任何静态方法执行之前就初始化完成。
     */
    public static String sex;
    /**
     * 5、静态的main方法,无法调用非静态变量name,因为它们不知道堆上有哪些实例。
     */
    public static void main(String[] args) {
        
    }
}

2、final属性

  1. final的变量代表你不能改变它的值;(原始类型变量不能改变它的值,引用变量不能改变它的引用对象)
  2. final的method代表你不能覆盖掉该method;
  3. final的类代表你不能继承该类。

我们可以通过final和static 修饰符来创建常量。

public class Test_final{

    /**
     * 1、用 static 和 final 修饰的变量我们成为常量
     * 2、名称都要大写,并且用下划线连接word (命名规范)
     * 3、常量都必须要初始化赋值
     */
    public static final int CONSTANT=20;
    public static final String CONSTANT_STRING;

    /*
     * 4、静态初始化程序,它是一段加载类时会执行的一段代码,它会在其他类在使用它之前就执行,
     *    所以很适合放静态常量的初始化。
     */
    static {
        CONSTANT_STRING="必须初始化";
    }
}

“+” 这个操作符是Java中唯一有重载过的运算符。

3、格式化

格式化说明最多有6个部分,下图中的 方括号[]中的都是选择性项目,其中必须要有% 和type类型。

格式化说明的顺序是有规定的,必须要以这个顺序来指定。

public class Test_Format {

    @SuppressLint("DefaultLocale")
    public static void main(String[] args) {

        /**
         * 给长数字添加 逗号分割
         * 输出结果:1,000,0000
         */
        String n = String.format("%,d", 1000000);
        System.out.println("n=" + n);

        /**
         * 保留小数点后几位
         * 输出结果:3.44
         */
        String f = String.format("%.2f", 3.44432);
        System.out.println("f=" + f);

        /**
         * 处理十进制整数的值,输入其他类型的数据会报错
         * 输出结果:10,000
         */
        String d = String.format("%,d", 10000);
        System.out.println("d=" + d);
        /**
         * 讲十进制转换为十六进制,参数必须是byte、short、int、long、BigInteger
         * 输出结果:2a
         */
        String h = String.format("%x", 42);
        System.out.println("h=" + h);
        /**
         * 讲十进制转换为char类型,参数必须是byte、short、int、long
         * 输出结果:*
         */
        String c = String.format("%c", 42);
        System.out.println("c=" + c);

        /**
         * 按指定类型输出事件
         * tc输出结果:星期三 四月 01 18:43:51 CST 2020
         * tr输出结果:06:43:51 下午
         * tD输出结果:04/01/20                   小写的td只会输出 01
         * ta输出结果:星期三, 四月, 01
         * ta1输出结果:星期三, 四月, 01           "<" 的作用就是复用参数
         */
        String tc = String.format("%tc", new Date());
        System.out.println("tc=" + tc);
        String tr = String.format("%tr", new Date());
        System.out.println("tr=" + tr);
        String tD = String.format("%tD", new Date());
        System.out.println("tD=" + tD);
        String ta = String.format("%tA, %tB, %td", new Date(), new Date(), new Date());
        System.out.println("ta=" + ta);
        String ta1 = String.format("%tA, %<tB, %<td", new Date());
        System.out.println("ta1=" + ta1);

    }

}

要取得当前的日期时间就用Date,其余功能可以从Calendar上面找。

 

 

 

 

 

 

 

 

 

原创文章 120 获赞 34 访问量 28万+

猜你喜欢

转载自blog.csdn.net/qq_34589749/article/details/105229682