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属性
- final的变量代表你不能改变它的值;(原始类型变量不能改变它的值,引用变量不能改变它的引用对象)
- final的method代表你不能覆盖掉该method;
- 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上面找。