之前那个太长了重新开一个(bushi其实是因为粘过来格式乱了懒得改)
总结:静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。
main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用。
静态方法与静态变量
被static标记过的方法与变量可通过类名直接调用,不建议使用引用变量调用。我们使用类的名称调用你静态方法,使用引用变量名称调用非静态方法。
如何放置类被初始化?
使用abstract标记类;使用private标记该类的构造函数。(通常带有static方法的类都不打算要被初始化,但这不是绝对的。不打算并不代表不能。如main就是一个静态方法,其内有它的类有时也可以被初始化)
- 取的新对象的方法
New; 序列化(deserialization); java reflection API
- 静态方法与变量
静态方法不可调用非静态变量与非静态方法(即使该方法没有使用非静态变量也不行,因为不能保证之后会不会被改或者覆盖)
public class Foo2{
int y;
public static void go(){
System.out.println(y); //静态方法并不知道要处理那个实例的变量
}
}
静态变量的值对所有的实例都是相同的(可以用来计数),会在该类的任何静态方法执行前就被初始化。
静态final变量(命名规格:均大写字母):初始化之后就不会被改动,但一定要被初始化!!!(声明或静态初始化程序中均可)
实例变量:每个实例有一个
静态变量:所有实例共享一个
Final用法(表示不能改动)
非静态final变量(final int size = 3)
Final方法
Final的 class
Sharp your pencil
(1)两个y都不是一个意思,其值互不影响。
(2)point:
调用静态方法要用类名,否则会有警告,但可以运行;
方法传入值参数为y与类中定义的static或final值没有关系
结果如下:
Math方法示例
Random,round,min,max,abs
Autoboxing(不必将primitive主数据类型与对象分那么清楚)
方法参数,返回值,Boolean表达式,数值运算,赋值(需注意:如下i未初始化赋给j会出错,因为此时相当于i指向NULL)均可以实现自动封装与解封
String与primitive主数据类型转化
里面还有一个静态import哦~~一般输出不多的时候不建议用。
数字格式化
结果如下:
日期
表达当日信息用 java.util.Date ,时光移动用java.util.Calendar