- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章JAVA Static关键字的用法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
static关键字的作用:
用来修饰成员变量和方法,被修饰的成员是属于类的,而不单单是属于某个对象的,也就是说,可以不靠对象来调用.
首先我们来介绍类变量 。
当static修饰成员变量时,该变量称为类变量,该类的每个对象都共享同一个类变量的值,任何 。
对象都可以更改该变量的值,但也可以在不创建该类对象的情况下,通过类名对类变量进行操作 。
命名格式 。
static 数据类型 变量名; 。
static int age,
下面我们来举个例子,让大家体会体会类变量的作用 。
就比如梁山有108位好汉我们给这108位好汉按照次序每人一个编号,这就需要使用到类变量 。
定义一个Person类 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
public
class
Person {
private
int
age;
private
String name;
private
int
id;
private
static
int
count=
1
;
public
int
getId() {
return
id;
}
@Override
public
String toString() {
return
"Person{"
+
"age="
+ age +
", name='"
+ name + '\
''
+
", id="
+ id +
'}'
;
}
public
void
setId(
int
id) {
this
.id=count;
count++;
}
public
Person(
int
age, String name) {
this
.age = age;
this
.name = name;
this
.id=count;
count++;
}
public
Person() {
}
public
int
getAge() {
return
age;
}
public
void
setAge(
int
age) {
this
.age = age;
}
public
String getName() {
return
name;
}
public
void
setName(String name) {
this
.name = name;
}
}
|
主函数 。
1
2
3
4
5
6
7
8
9
|
public
class
Test {
public
static
void
main(String[] args) {
Person one =
new
Person(
18
,
"及时雨宋江"
);
System.out.println(one);
Person two =
new
Person(
18
,
"卢俊义"
);
System.out.println(two);
}
}
|
结果 。
我们看到id的数值在不断的+1,这是因为他们的id都等于了一个公共的类变量 。
接下来我们来介绍静态方法 。
静态方法即类中使用static修饰的方法,该方法使用类名可以直接调用,不需要创建类的对象 。
定义格式 。
修饰符 static 返回置类型 方法名 (参数列表){ 。
//执行语句 。
} 。
示例 。
1
2
3
|
public
static
void
eat(){
System.out.println(
"吃饭了"
);
}
|
使用静态方法的注意事项 。
静态方法只可以直接访问类变量与静态方法 。
静态方法不能访问普通成员变量或成员方法 。
静态方法中不可以使用this关键字(因为this代表的是使用该方法的对象,而静态方法是属于类的,this无从指向,所以不可以使用) 。
下面我们写一段代码来使用一下静态方法 。
1
2
3
4
5
|
public
class
Person2 {
public
static
void
test(){
System.out.println(
"这是静态方法"
);
}
}
|
1
2
3
4
5
6
7
8
9
10
|
public
class
Test {
public
static
void
main(String[] args) {
System.out.println(
"这是使用类名调用的:"
);
Person2.test();
Person2 person2 =
new
Person2();
System.out.println(
"这是使用对象调用的:"
);
person2.test();
}
}
|
运行结果 。
下面我们从内存的角度来讲讲静态的原理 。
先上代码 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
public
class
Teacher {
private
int
age;
private
String name;
private
static
String subject=
"math"
;
public
Teacher(
int
age, String name) {
this
.age = age;
this
.name = name;
}
public
Teacher() {
}
@Override
public
String toString() {
return
"Teacher{"
+
"age="
+ age +
", name='"
+ name + '\
''
+
'}'
;
}
public
int
getAge() {
return
age;
}
public
void
setAge(
int
age) {
this
.age = age;
}
public
String getName() {
return
name;
}
public
void
setName(String name) {
this
.name = name;
}
public
static
String getSubject() {
return
subject;
}
public
static
void
setSubject(String subject) {
Teacher.subject = subject;
}
}
|
1
2
3
4
5
6
|
public
class
Test {
public
static
void
main(String[] args) {
Teacher wang =
new
Teacher(
18
,
"wang"
);
Teacher li =
new
Teacher(
19
,
"li"
);
}
}
|
小结:普通成员变量操作各自空间,静态变量操作共享空间 。
静态代码块,敲重点!!!这个在我们后面学习中会经常使用到 。
什么是静态代码块呢?
定义在成员位置,使用static修饰的代码块{} 。
位置:类中方法外 。
执行随着类的加载而执行且只执行一次,优先于main方法和构造方法的执行 。
格式 。
1
2
3
4
|
public
class
Person {
static
{
}
}
|
这里就不深究了后面的文章我找几乎再说说 。
以上就是static关键字的一些基础知识,如有错误请各位批评指正 。
到此这篇关于JAVA Static关键字的用法的文章就介绍到这了,更多相关JAVA Static关键字内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://www.cnblogs.com/pjhaymy/p/13255734.html 。
最后此篇关于JAVA Static关键字的用法的文章就讲到这里了,如果你想了解更多关于JAVA Static关键字的用法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 6年前关闭。 Improve this qu
我有实体: @Entity @Table(name = "CARDS") public class Card { @ManyToOne @JoinColumn(name = "PERSON_I
我正在尝试计算二维多边形的表面法线。我正在使用 OpenGL wiki 中的 Newell 方法来计算表面法线。 https://www.opengl.org/wiki/Calculating_a_S
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 7 年前。 Improve
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我这里有以下 XML: Visa, Mastercard, , , , 0, Discover, American Express siteonly, Buyer Pay
即将发生的 Google 政策变更迫使我们实现一个对话框,以通知欧盟用户有关 Cookie/设备标识符用于广告和分析的情况。我只想向欧盟用户显示此对话框。我不想使用额外的权限(例如 android.p
本文分享自华为云社区《华为大咖说 | 企业应用AI大模型的“道、法、术” ——道:认知篇》,作者:华为云PaaS服务小智。 本期核心观点 上车:AGI是未来5~10年内,每个人都无法回避的技
我有一个与酒精相关的网站,需要先验证年龄,然后才能让他们进入该网站。我使用 HttpModule 来执行此操作,该模块检查 cookie,如果未设置,我会将它们重定向到验证页面。我验证他们的年龄并存储
在欧盟,我们有一项法律,要求网页请求存储 cookie 的许可。我们大多数人都了解 cookie 并同意它们,但仍然被迫在任何地方明确接受它们。所以我计划编写这个附加组件(ff & chrome),它
以下在 C 和/或 C++ 中是否合法? void fn(); inline void fn() { /*Do something here*/ } 让我担心的是,第一个声明看起来暗示函数将被定义
我是一名优秀的程序员,十分优秀!