Java中使用static关键字的使用

本文详细介绍了Java中的static关键字,包括其修饰的变量(静态变量)和方法(静态方法),以及它们与实例变量的区别。讨论了何时选择实例变量和静态变量,以及静态方法在工具类中的应用。还涵盖了静态代码块的执行机制和静态类的特点,如静态内部类的限制。
摘要由CSDN通过智能技术生成

1、介绍static关键字

        1.static修饰的变量:静态变量

        2.static修饰的方法:静态方法

        3.所有static关键字修饰的都是类相关的,类级别的

        4.所有static修饰的,都是采用"类名.方法名、变量名"

2.变量的分类

变量根据声明的位置进行划分:

        1.在方法体中声明的变量叫做:局部变量

        2.在方法体外声明的变量叫做:成员变量

其中的成员变量又可以分为:

        1.实例变量

        2.静态变量(有静态关键字static修饰的变量)

eg1.

以下实例的,都是对象相关的,访问时采用"引用."的方式进行访问。

实例相关的,必须先有对象(使用new创建对象),才能访问,可能会出现空指针异常

public class Test {
    public static void main(String[] args) {

        //需要先new对象出来,才可以引用方法
        Test test =new Test();
        test.test();
    }
    //实例方法
    public void test(){

        System.out.println("我是实例方法中的一句话");
    }
}

 eg2.

以下静态的,都是类相关的,访问时采用”类名.“的方式访问。

不需要对象的参与即可访问(可以不用new对象就可以使用)。没有空指针异常的发生

public class Test01 {
    public static void main(String[] args) {
        //使用static修饰的方法直接使用,不需要new对象
        test();
        //new对象出来也可以使用但是一般不会这样写
        Test01 test01 = new Test01();
        test01.test(); 
    }
    public static void test() {
        System.out.println("我是静态方法中的一句话");
    }
}

3.什么时候变量声明为实例的,什么时候声明为静态的?

如果这个类型的所有对象的某个属性值都是一样的,不建议定义为实例变量,浪费内存空间。

建议定义为类级别特征,定义为静态变量,在方法区中只保留一份,节省内存开销。

        一个对象一份的是实例变量

        所有对象一份的是静态变量

eg.

class Chinese{

    // 身份证号
    // 每一个人的身份证号不同,所以身份证号应该是实例变量,一个对象一份。
    String idCard; 

    // 姓名
    // 姓名也是一个人一个姓名,姓名也应该是实例变量。
    String name;

    // 国籍
    String country;

    // 无参数
    public Chinese(){
    
    }

    // 有参数
    public Chinese(String s1,String s2, String s3){
        idCard = s1;
        name = s2;
        country = s3;
    }
}

 eg.

class Chinese{

    // 身份证号
    // 每一个人的身份证号不同,所以身份证号应该是实例变量,一个对象一份。
    String idCard; 

    // 姓名
    // 姓名也是一个人一个姓名,姓名也应该是实例变量。
    String name;

    // 国籍
    // 重点重点五颗星:加static的变量叫做静态变量
    static String country = "中国";

    // 无参数
    public Chinese(){
    
    }

    // 有参数
    public Chinese(String s1,String s2){
        idCard = s1;
        name = s2;
    }
}

注意:

        1.静态变量在类加载时初始化,不需要new对象,静态变量的空间就开出来了。

        2.静态变量存储在方法区。

4. 关于方法来说,什么时候定义为实例方法?什么时候定义为静态方法?

1.思想角度

如果说该行为必须由对象去触发,那么该方法定义为实例方法。

2.代码角度

当这个方法体当中,直接访问了实例变量,这个方法一定是实例方法。

我们在开发当中,大部分情况下,如果是工具类的话,工具类当中的方法一般都是静态的。静态方法有一个优点就是不需要new对象,直接采用类名调用,极其方便。工具类就是为了方便,所以工具类中的方法一般都是static的。

5.static修饰代码块

static块可以置于类中的任何地方,类中可以有多个static块。

在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。

public  class Test02 {
    public static void main(String[] args) {
            test.getTest();
    }
    class test{
        static {
            System.out.println("静态代码块输出");
        }
        public static void getTest(){

            System.out.println("成员方法");
        }
    }
}

 

6.静态类 

 java中一个类要被声明为static的,只有一种情况,就是静态内部类(内嵌类)。如在外部类声明为static的,程序会编译都不会通过。

1、静态内部类,跟静态方法一样,只能访问静态成员变量和方法,不能访问非静态方法和属性。

2、普通内部类,可以访问任意外部类的成员变量和方法。

3、静态内部类,可以声明普通成员变量和方法,而普通内部类不能声明static成员变量和方法。4、静态内部类,可以单独初始化。

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值