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. Loadrunner查询博客列表并循环删除博客列表中的所有博客

    Loadrunner查询博客列表并循环删除博客列表中的所有博客,在博客列表请求中使用关联,获取出列表中博客的数量,并找出博客列表请求的必要参数.关联使用Ordinal=All 找出所有匹配值 查找出所 ...

  2. Annotation-based argument resolution 部分2

    HandlerMethodArgumentResolver的抽象實現AbstractNamedValueMethodArgumentResolver下的子类  部分1 RequestParamMapM ...

  3. 图片放大神器: waifu2x

    在线版可以在这个地址上使用:http://waifu2x.udp.jp/index.zh-CN.html , 但是在线版最大图片为5M,最大上传分辨率为1500*1500,且最大放大倍数为2倍,还是有 ...

  4. 【PHP】使用phpoffice/phpexcel导入导出数据

    本例以thinkphp5.1为例 包地址: https://packagist.org/packages/phpoffice/phpexcel 使用: composer require phpoffi ...

  5. Webpack 4 SplitChunksPlugin配置方案(转)

    通常情况下我们的 WebApp 是有我们的自身代码和第三方库组成的,我们自身的代码是会常常变动的,而第三方库除非有较大的版本升级,不然是不会变的,所以第三方库和我们的代码需要分开打包,我们可以给第三方 ...

  6. MSSQL中 float转换为varchar 变成科学计数法解决方案

    在系统初始化的时候,没有在数值型的数据前面加上 单引号,导致进入数据库后都变成float型我们需要做以下转换就能将数据变为 varchar类型 declare @a float //定义一个float ...

  7. ufw防火墙规则不生效

    正式站系统是Ubuntu 16.04.6 一.今天一个项目有百度爬出,在nginx中封掉还在一直爬取,都403还不停爬取 二.在uwf封掉爬出ip,想封掉80端口没有用,然后封掉整个网段还是没有用,尴 ...

  8. 使用Prometheus监控bind9的DNS服务

    首先编译bind_exporter,编译方式参见bind_exporter 创建一个systemd配置文件来运行bind_exporter vi /etc/systemd/system/bind_ex ...

  9. 虚拟机centos与主机互相Ping通

    在虚拟机(Vmware Workstation)下,安装了CentOS7,现在想通过SSH工具连接虚拟机中的CentOS7 1.  首先,要确保CentOS7安装了  openssh-server,在 ...

  10. 基于layUI调用后台数据实现区域信息级联查询

    基于layUI调用后台数据实现区域信息级联查询 1.基本思路 后台提供根据区域编码查询区域列表公共接口 页面初始化调用后台接口加载所有省份 点击省份将省份区域编码传入后台查询该省份下所有地市信息,以此 ...