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 ...
随机推荐
- kaggle, gmail, 烟雨朦胧
kaggle, gmail, 烟雨朦胧 刚才为了体验kaggle,用gmail重新登录,需要验证十几年前在桂林使用的手机号,竟然找到了,终于又可以上了. 那是一个在烟雨江南里努力奋斗而又迷失自我不堪回 ...
- HDFS修改副本数,并生效。
1.hadoop集群使用的ucloud的uahdoop 2.是公司集群配置小,只有两台core节点,实际就是两台的datanode. 容量占用超过了80%,需要缩减副本以空出容量. 3.查看 hado ...
- Xamarin.FormsShell基础教程(2)创建Shell解决方案
Xamarin.FormsShell基础教程(2)创建Shell解决方案 创建Shell解决方案 在开发Shell的应用程序时,首先需要创建一个Shell解决方案,其具体操作步骤如下: (1)在VS的 ...
- Java地址:
GitHub:https://github.com/nanchen2251 个人博客:https://nanchen2251.github.io/ 简书地址:http://www.jianshu.co ...
- android 桌面图标添加数字角标
是否支持角标并不与手机厂商有关,而是你当前使用的launcher开发厂商有关. 方法实现: import android.app.Application; import android.app.Not ...
- java多线程(一)创建线程的四种方式
1. 什么是并发与并行 要想学习多线程,必须先理解什么是并发与并行 并行:指两个或多个事件在同一时刻发生(同时发生). 并发:指两个或多个事件在同一个时间段内发生. 2. 什么是进程.线程 进 ...
- 分布式ID生成总结
1.数据库自增id 新建一个公共库,库里面新建一个序列表,主键id自增,每次请求增加数据都往这个表中插入数据,然后获取到id,然后使用即可. 优点:方便简单 缺点:单库生成自增id,高并发下,会有瓶颈 ...
- python非官方扩展库
https://www.lfd.uci.edu/~gohlke/pythonlibs/ 安装方法: 1.下载自己需要的库文件 例如:Twisted-19.2.1-cp37-cp37m-win32.wh ...
- [Sw] Swoole 生态迷局,基于 Swoole 的第 109 框架
这两天,又一全栈式 Swoole 协程框架面世了 - hyperf,实现思路是我内心点了赞同的,就集成现有 PHP 生态优质组件到 Swoole 的协程中来. 有人想到,为什么不是 Swoole 集成 ...
- tcp端口扫描与syn扫描
连接网络设备时,一般都会在网络设备端选取0-65535之间的一个端口进行连接,端口扫描是指:检查网络设备上0-65535号端口哪些端口是开启状态.如果黑客扫描到某网络设备的80端口是开启状态,那么很有 ...