Java之static

package a;
/*
static关键字:
1.static修饰的变量叫静态变量
2.static修饰的方法叫静态方法
3.static还可以定义静态语句块

以下演示静态语句块
static定义的静态语句块在类加载阶段执行,并且只执行一次,并且是自相而下执行的。
实例语句块:
示例语句块创建对象才执行,自上而下执行。

*/
public class StaticTest {
//静态语句块
static{
System.out.println(“1”);
}
//实例语句块
{
System.out.println(“2”);
}
{
System.out.println(“3”);
}
{
System.out.println(“4”);
}
{
System.out.println(“5”);
}
//入口
public static void main(String[] args){
//调用构造方法
new StaticTest();
System.out.println(“main execute”);
}
}
package a;
/*
static修饰的方法叫做静态方法
一般情况下工具类中的方法大部分都是静态方法。
静态方法不用创建对象也能直接访问该方法。
*/
public class StaticTest01 {
//成员方法
//成员方法必须使用“引用.”调用。
public void m1(){

}
//静态方法
//可以使用“类名.”方式调用。也可以用“引用.”,即使使用的是“引用.”,底层还是用的“类名.”
//静态方法中不能直接访问非静态数据。
//静态方法中不能使用This
public  static void m2(){

}
public static void main(String[] args){
    StaticTest01 st = new StaticTest01();
    st.m1();
    m2();
    //静态的方法按照正规的方式访问“类名.”
    //静态方法也能用“引用.”访问。
    st.m2();//便一阶段检查出st是statictest01类型,编译通过,运行时,仍使用“staticTest01”的方式访问。
    //该方法执行不需要对象。

    //空的引用去访问成员的时候会出现空指针异常
    //m2方法不是“成员”而是静态的
    //所以即使引用为空,也不会报空指针异常。

    StaticTest01 s = null;
    s.m2();
}

}
package a;
/*
static修饰的变量叫做“静态变量”
变量分类:
1.局部变量
2.成员变量(示例变量,非静态变量)
3.静态变量(方法区)
什么时候变量申明成静态变量?
如果这个属性所有的对象都有,并且这个属性的值相同,则该属性声明成静态属性。
成员变量:创建Java对象的时候初始化
静态变量:在类加载阶段赋值,并且只赋值一次
*/
public class StaticTest02 {
public static void main(String[] args){
Animal a1 = new Animal(“AAA”,10);
Animal a2 = new Animal(“BBB”,11);
//如何访问(类名)
System.out.println(Animal.type);

    //也可以使用引用。
    System.out.println(a1.type);

    Animal a3 = null;
    System.out.println(a3.type);//静态变量底层访问的时候一定使用的类名。和对象无关,不会出现空指针异常。
}

}
//抽象现实世界的“陆生”动物。
class Animal{
//Field
//成员变量(一个对象一份)
//成员变量在创建对象的时候初始化,并且存储在堆中的每一个对象中。
String name;
int age;
static String type = “陆生”;
//constructor
Animal(String name,int age){
this.name = name;
this.age = age;
}
}
package a;
/*
关于代码的顺序
*/
public class StaticTest03 {
//编译通过
static int i = 100;
static{
System.out.println(i);
}
//以上代码有顺序的先后,因为都在类加载阶段执行
/*非法引用
static{
System.out.println(i);
}
static int i = 100;

 */

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值