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 ...
随机推荐
- 使用SpringEL功能来动态化模板数据
在类似excel导出功能里,如果excel的格式很复杂,通过程序去动态生成格式显然是很吃力的,我们可以采用模板文件+动态表达式占位来生成目标文件. 如果只是纯粹生成纯文本,使用freemarker等模 ...
- HIVE出现Read past end of RLE integer from compressed stream Stream for column 1 kind LENGTH position: 359 length: 359 range: 0错误
错误日志 Diagnostic Messages for this Task: Error: java.io.IOException: java.io.IOException: java.io.EOF ...
- 基于Vue SEO的四种方案
基于Vue SEO的四种方案 https://segmentfault.com/a/1190000019623624?utm_source=tag-newest
- Android Studio运行Hello World程序
老的神舟本本装上了深度LINUX了...应该是基于ubuntu的,安装软件用的apt-get而不是yum 想重装学下android原生开发,官网下载了android studio, 发现不用FQ也能下 ...
- Golang常见小细节总结(1)
本系列不定期更新,用于记录平常开发过程中出现的一些小问题 Array 类型的值作为函数参数    可以理解slice是对array的一个视图,底层还是array所以会被修改 通过map的ok来确 ...
- 【GMT43智能液晶模块】例程十八:LAN_HTTP实验——网页服务器
源代码下载链接: 链接:https://pan.baidu.com/s/1sr4a7TBPyvs18jTfCfVj8Q 提取码:jwfv 复制这段内容后打开百度网盘手机App,操作更方便哦 GMT43 ...
- {Redis}NOAUTH Authentication required. Linux.cenOS
问题 [root@VM_0_12_centos redis]# ./bin/redis-cli -p 6379 127.0.0.1:6379> INFO NOAUTH Authenticatio ...
- Embarcadero Delphi 7 Lite 7.0.4.453 中文版
https://www.7down.com/soft/116014.html 软件介绍 Embarcadero Delphi 7精简版 是Windows平台下著名的快速应用程序开发工具(Rapid A ...
- [转]Ubuntu18.04隐藏顶栏与侧栏
链接地址:https://blog.csdn.net/liu_jiangwen/article/details/85215297
- [转]Mathjax语法总结
链接地址:https://blog.csdn.net/ajacker/article/details/80301378