java static变量及函数
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变量及函数的更多相关文章
- java static 变量,和方法从属于类
		
第36集 java static 变量,和方法从属于类 可以用类来直接调用static属性和方法 static方法不能调用非静态的属性和方法,反之可以 new产生的对象,不包括static 属性和方法
 - static变量和函数如何巧妙调用
		
app.c 和 main.c 之间,在main.c中调用app.c的static变量和函数,需要利用一个结构体结合指针通过传地址的方式间接访问. app --------------------- ...
 - c++,static  静态成员变量 / 静态成员函数
		
静态成员变量: //静态成员变量(static) // //1.如果想在同类的多个对象之间实现数据共享 ,可以用静态 //成员变量,即用static修饰的成员变量,例 static int a; // ...
 - static变量和static函数
		
在C语言编程中,static的一个作用是信息屏蔽! 比方说,你自己定义了一个文件 -- 该文件中有一系列的函数以及变量的声明和定义! 你希望该文件中的一些函数和变量只能被该文件中的函数使用,那么,你可 ...
 - 成员函数内定义static变量(不安全,各对象之间共享)
		
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/u012317833/article/de ...
 - php和java静态变量用途的思考
		
静态变量有哪些用途? 比如创建单例对象. 统计访问次数.数量等等. 多线路和进程中可能会使用. 深入理解补充.... PHP 单例模式解析和实战 php设计模式——单例模式 php static 与 ...
 - Java的初始化执行顺序(父类static变量->子类static变量->父类成员变量->父类构造器->成员变量->构造器->main函数)
		
1. 引言 了解Java初始化的顺序,有助于理解Java的初始化机制和内存机制. 顺序:父类static变量->子类static变量->父类成员变量->父类构造器->成员变量- ...
 - java中的static变量
		
java中的static变量 例如 public static int num=0: num+=1;放在函数里面 调用一次变动一次.
 - 用static声明的函数和变量小结
		
static 声明的变量在C语言中有两方面的特征: 1).变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值.这一点是它与堆栈变量和堆变量的区别. 2).变量用static ...
 
随机推荐
- Python的threading和multiprocessing
			
Python的threading 基础用法, 通过 threading.Thread() 创建线程, 然后 start() 和 join() import time import threading ...
 - layui中select实现二级关联
			
目的:实现店铺和仓库的二级关联,通过选择不同的店铺,来显示这个门店对应的库位信息. 1. 在select选项上添加lay-filter选择器. <div class="layui-in ...
 - ES6 - 对象扩展(增强字面量)
			
/** * 对象的扩展 * * 增强对象字面量 * * 解决问题:缩减代码 */ { /** * 1.属性简表示法 * 变量foo直接写在大括号里面.这时,属性名就是变量名, 属性值就是变量值 */ ...
 - Mac下GoogleChromeHelper占用内存过高 的一个排查过程记录
			
测试需要在Mac上装了个虚拟机,结果忘记限制资源了,直接崩溃重启过一次. 后面限制了一下资源,发现内存占用率还是特别高,其中最高的居然是Chrome相关的一个东西.这让我8G内存该如何是好. 于是查了 ...
 - MySQL使用存储过程实现判断表中字段或者索引是否存在,如果不存在则创建
			
使用存储过程可以保证数据库升级脚本可以重复执行而不会报错. CREATE TABLE `tb_user` ( `id` ) NOT NULL COMMENT '非自增id', `account` ) ...
 - Egret自定义位图文字(自定义+BitmapLabel)
			
一 自定位图文字 因为egret的位图文字是texturemerger做的,需要多张单图片导入tm,然后导出两个文件来使用,过程比较麻烦. 而Laya的位图文字则是一张整图数字图片,使用FontCli ...
 - numtodsinterval 函数用法
			
numtodsinterval(<x>,<c>) ,x是一个数字,c是一个字符串,表明x的单位,这个函数把x转为interval day to second数据类型 常用的单位 ...
 - LeetCode176——第二高的薪水
			
题目描述 编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+ | Id | Salary | +----+--------+ | 1 ...
 - 2019最新版Java程序员零基础入门视频教程资料(全套)
			
为了解决Java学习初学者在网上找视频难的事情,本人整理了一份2019年度最新版的Java学习视频教程.希望看到这份视频的你们都能找到一份称心的工作,技术上都能得到进一步的提升,好东西就要分享给你们, ...
 - PHP多进程编程初步
			
转自:https://www.pureweber.com/article/php-multi-process-programming-preview/ 羡慕火影忍者里鸣人的影分身么?没错,PHP程序是 ...