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;

 */

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 中的 static 关键字可以用来修饰类、方法和变量,它的作用是使得这些元素成为类级别的而非实例级别的。 1. static 变量 在 Java 中,每个实例都会拥有一份自己的成员变量,而 static 变量则是属于整个类的,所有实例共享同一份 static 变量的值。在定义 static 变量时,需要在变量前加上 static 关键字。 举个例子,下面的代码定义了一个类 A,其中包含了一个实例变量 x 和一个 static 变量 y: ``` public class A { int x; static int y; } ``` 在这里,每个 A 的实例都会有自己的 x 变量,但是它们都共享同一个 y 变量。 2. static 方法 static 方法属于类级别,可以直接通过类名调用,不需要先创建类的实例。在定义 static 方法时,需要在方法前加上 static 关键字。 举个例子,下面的代码定义了一个类 B,其中包含了一个实例方法 foo 和一个 static 方法 bar: ``` public class B { void foo() { // 实例方法 } static void bar() { // 类方法 } } ``` 在这里,foo 方法必须通过 B 的实例才能调用,而 bar 方法可以直接通过 B 类名调用。 3. static 代码块 static 代码块是在类被加载时执行的一段代码,它可以用来初始化 static 变量。static 代码块只会执行一次,且在所有实例创建之前执行。 举个例子,下面的代码定义了一个类 C,其中包含了一个 static 变量 x 和一个 static 代码块: ``` public class C { static int x; static { x = 10; } } ``` 在这里,当 C 类被加载时,static 代码块会执行一次,将 x 变量初始化为 10。 总结一下,Java 中的 static 关键字可以用来修饰类、方法和变量,它使得这些元素成为类级别的而非实例级别的。static 变量和方法可以通过类名直接访问,而 static 代码块可以用来初始化 static 变量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值