java以类为基础,没有游离在类之外单独存在的变量。所以,c++中的全局变量,在java中应该是不存在的。java中有的是成员变量和成员方法。当成员前以static修饰时,即为静态成员变量或静态成员方法。

1. 访问规则

  • static成员变量,可被static或非static方法访问。
  • static成员变量,仅可通过类名访问,不可通过类实例访问。
  • static成员方法,仅可访问static成员变量,无法访问非static成员变量。
  • static成员方法,仅可通过类名访问,不可通过类实例访问。
  • 非static成员方法,仅可通过类实例访问,不可通过类名访问。
  • static成员变量和static成员方法,没有this方法。即,不可以通过this.age或this.setAge()来访问。
package com.javaPractise;

public class TestStatic {

    public String name;
public static int age;
public static String staticField = "静态成员变量"; public TestStatic(){
System.out.println("无参构造函数Constructor of TestStatic");
} public TestStatic(String myName, int myAge){
this.name = myName;
age = myAge;
System.out.println("有参构造函数Constructor of TestStatic"); } public static void setStaticField(String value){
staticField = value;
System.out.println("staticField: " + staticField);
} public static void printStaticField(){
System.out.println("staticField: " + staticField);
} public void printNameAndAge(){
//非静态成员方法可访问 静态 和 非静态 成员变量
System.out.println("name: " + name + " age: " + age);
} public static void setAge(int n){
//静态成员方法,仅可访问静态成员变量,不可访问普通成员变量
age = n;
// name = "abc";
} public static void printAge(){
System.out.println("age: " + age);
}
}
import com.javaPractise.TestStatic;

public class Main {

    public static void main(String[] args){
System.out.println("age of TestStatic");
System.out.println(TestStatic.age); //静态成员可通过类名直接调用
TestStatic.printAge(); //静态方法可通过类名直接调用
//TestStatic.printNameAndAge(); //非静态方法不可通过类名直接调用 TestStatic.printStaticField();
TestStatic.setStaticField("haha"); TestStatic testStatic1 = new TestStatic();
System.out.println("name and age of testStatic1");
testStatic1.printNameAndAge(); //非静态成员仅通过类实例调用
testStatic1.printAge(); //静态方法可通过类实例调用
}
}

2. 存放区域

static变量,存放在静态存储区;普通成员变量,存放在栈区;new出来的实例,存放在堆区;static final变量,属于不可改变值的常量,存放在常量区。

java static变量及函数的更多相关文章

  1. java static 变量,和方法从属于类

    第36集 java static 变量,和方法从属于类 可以用类来直接调用static属性和方法 static方法不能调用非静态的属性和方法,反之可以 new产生的对象,不包括static 属性和方法

  2. static变量和函数如何巧妙调用

    app.c 和 main.c 之间,在main.c中调用app.c的static变量和函数,需要利用一个结构体结合指针通过传地址的方式间接访问. app   --------------------- ...

  3. c++,static 静态成员变量 / 静态成员函数

    静态成员变量: //静态成员变量(static) // //1.如果想在同类的多个对象之间实现数据共享 ,可以用静态 //成员变量,即用static修饰的成员变量,例 static int a; // ...

  4. static变量和static函数

    在C语言编程中,static的一个作用是信息屏蔽! 比方说,你自己定义了一个文件 -- 该文件中有一系列的函数以及变量的声明和定义! 你希望该文件中的一些函数和变量只能被该文件中的函数使用,那么,你可 ...

  5. 成员函数内定义static变量(不安全,各对象之间共享)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/u012317833/article/de ...

  6. php和java静态变量用途的思考

    静态变量有哪些用途? 比如创建单例对象. 统计访问次数.数量等等. 多线路和进程中可能会使用. 深入理解补充.... PHP 单例模式解析和实战 php设计模式——单例模式 php static 与 ...

  7. Java的初始化执行顺序(父类static变量->子类static变量->父类成员变量->父类构造器->成员变量->构造器->main函数)

    1. 引言 了解Java初始化的顺序,有助于理解Java的初始化机制和内存机制. 顺序:父类static变量->子类static变量->父类成员变量->父类构造器->成员变量- ...

  8. java中的static变量

    java中的static变量 例如 public static int num=0: num+=1;放在函数里面 调用一次变动一次.

  9. 用static声明的函数和变量小结

    static 声明的变量在C语言中有两方面的特征: 1).变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值.这一点是它与堆栈变量和堆变量的区别. 2).变量用static ...

随机推荐

  1. Ant Design Pro Vue 时间段查询 问题

    <a-form-item label="起止日期" :labelCol="{lg: {span: 7}, sm: {span: 7}}" :wrapper ...

  2. Numa 常用命令

    1. 查看numa相关信息,包括每个node内存大小,每个node中的逻辑cpu: numactl --hardware

  3. 【漫谈数据仓库】 如何优雅地设计数据分层 ODS DW DM层级

    转载http://bigdata.51cto.com/art/201710/554810.htm 一.文章主题 本文主要讲解数据仓库的一个重要环节:如何设计数据分层!其它关于数据仓库的内容可参考之前的 ...

  4. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器与EasyDSS流媒体解决方案的不同

    背景分析 众所周知,立足于视频软件的开发,我们的产品很多.经常有客户问到我们产品的差别以及某个产品在某个系统架构中的具体定位,因此我想通过一系列的博客说明一下,不同产品之间的区别,以及在具体架构中自身 ...

  5. python os.popen('xxx.py') 遇到的坑 (No Child Processes)

    1.调用系统库 platform.system() 报错: 2.os.popen() 打开的文件流未关闭也会出现这种错误. f = os.popen() f.read() f.close() 问题复现 ...

  6. coding git push 403 时

    直接修改 项目目录下的 .git/config   url url = https://coding用户名:coding密码@git.coding.net/coding账号/coding项目名称.gi ...

  7. [转]解决 gem install 安装失败

    链接地址:https://blog.csdn.net/weixin_42414461/article/details/85337465

  8. 百度SMS发送短信C#

    /// <summary> /// 百度接口签名帮助类 /// </summary> public class BaiduApiHelper { #region 构造函数 // ...

  9. CentOS 7.5 使用 yum 安装 Kubernetes 集群(二)

    一.安装方式介绍 1.yum 安装 目前CentOS官方已经把Kubernetes源放入到自己的默认 extras 仓库里面,使用 yum 安装,好处是简单,坏处也很明显,需要官方更新 yum 源才能 ...

  10. 【记录】【solr】whose UTF8 encoding is longer than the max length 32766

    java添加数据到solr报错 whose UTF8 encoding is longer than the max length 32766 原因是长度太长,string类型改成text_gener ...