zoukankan      html  css  js  c++  java
  • static 关键字详解 static方法调用非static属性和方法

      静态的属性和方法在内存中的存放地址与非静态的是不同的,静态的是存放在static区,它意味着静态方法是没有this的,所以我们不可以从一个static方法内部发出对非static方法的调用。但是反之是可以的。

      静态属性被外部公用,修改之后会被保存。

    1、static方法没有this,我们通过类名来调用static属性和方法

     1 package demo;
     2 
     3 public class TestStatic {
     4     private static int i = 18;  //静态属性被外部公用,修改之后会被保存。
     5     private String str = "###";  //静态方法不能调用非静态的属性和方法
     6     static void run(){
     7         //TestStatic.i  不在同一个类中通过类名类调用static属性
     8         i = i * 100;
     9         System.out.println("刘二狗在跑了" + i +"步");
    10     }
    11     
    12     static void print(){
    13         run();
    14         //TestStatic.run();   不在同一个类中通过类名类调用static方法
    15         System.out.println("测试static:i = " + i);
    16     }
    17     
    18     public static void main(String[] args) {
    19         TestStatic.print();
    20     }
    21 }

    打印结果:

    2、static方法调用非static属性和方法。我们把一个对象的句柄放到static方法内部,通过这个对象的句柄就可以调用非static的属性和方法。代码如下:

    package demo;
    /**
     * static方法调用非static属性和方法
     * @author dyf
     *
     */
    public class TestStatic {
        private static int i = 18;
        private String str = "###";
        static TestStatic ts = new TestStatic();
        
        TestStatic test(){
            this.str = str + "===";
            System.out.println(str);
            return this;
        }
        
        static void run(TestStatic ts){
            ts.str = ts.str + "$$$"; //通过句柄调用非static的属性
            ts.test();   //通过句柄调用非static的方法
            System.out.println("刘二狗在跑步!" + ts.str);
        }
        
        public static void main(String[] args) {
            TestStatic.run(ts);
        }
    }

    打印结果:

  • 相关阅读:
    新增图表控件
    chrome无法登陆账号,显示操作超时的解决方案
    VC调用Delphi对象接口
    MyBatis学习-映射文件标签篇(select、resultMap)
    MyBatis学习-入门篇
    Spring 后置处理器 PropertyPlaceholderConfigurer 类(引用外部文件)
    Spring 创建 IOC 容器时加载配置文件的几种方式
    Spring的监听器ContextLoaderListener
    通用分页工具类
    单例模式的几种写法
  • 原文地址:https://www.cnblogs.com/dyfbk/p/6874096.html
Copyright © 2011-2022 走看看