JAVA Static关键字的用法
static关键字的作用:
用来修饰成员变量和方法,被修饰的成员是属于类的,而不单单是属于某个对象的,也就是说,可以不靠对象来调用。
首先我们来介绍类变量
当static修饰成员变量时,该变量称为类变量,该类的每个对象都共享同一个类变量的值,任何
对象都可以更改该变量的值,但也可以在不创建该类对象的情况下,通过类名对类变量进行操作
命名格式
static 数据类型 变量名;
static int age;
下面我们来举个例子,让大家体会体会类变量的作用
就比如梁山有108位好汉我们给这108位好汉按照次序每人一个编号,这就需要使用到类变量
定义一个Person类
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; } }
主函数
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 返回置类型 方法名 (参数列表){
//执行语句
}
示例
public static void eat(){ System.out.println("吃饭了"); }
使用静态方法的注意事项
静态方法只可以直接访问类变量与静态方法
静态方法不能访问普通成员变量或成员方法
静态方法中不可以使用this关键字(因为this代表的是使用该方法的对象,而静态方法是属于类的,this无从指向,所以不可以使用)
下面我们写一段代码来使用一下静态方法
public class Person2 { public static void test(){ System.out.println("这是静态方法" ); } }
public class Test { public static void main(String[] args) { System.out.println("这是使用类名调用的:"); Person2.test(); Person2 person2 = new Person2(); System.out.println("这是使用对象调用的:"); person2.test(); } }
运行结果
下面我们从内存的角度来讲讲静态的原理
先上代码
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; } }
public class Test { public static void main(String[] args) { Teacher wang = new Teacher(18, "wang"); Teacher li = new Teacher(19, "li"); } }
小结:普通成员变量操作各自空间,静态变量操作共享空间
静态代码块,敲重点!!!这个在我们后面学习中会经常使用到
什么是静态代码块呢?
定义在成员位置,使用static修饰的代码块{}
位置:类中方法外
执行随着类的加载而执行且只执行一次,优先于main方法和构造方法的执行
格式
public class Person { static { } }
这里就不深究了后面的文章我找几乎再说说
以上就是static关键字的一些基础知识,如有错误请各位批评指正
到此这篇关于JAVA Static关键字的用法的文章就介绍到这了,更多相关JAVA Static关键字内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!
相关文章
- 这篇文章主要介绍了如何利用java语言实现经典《复杂迷宫》游戏,文中采用了swing技术进行了界面化处理,感兴趣的小伙伴可以动手试一试...2022-02-01
java 运行报错has been compiled by a more recent version of the Java Runtime
java 运行报错has been compiled by a more recent version of the Java Runtime (class file version 54.0)...2021-04-01- 这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
- 这篇文章主要介绍了教你怎么用Java获取国家法定节假日,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-23
- 这篇文章主要介绍了Java如何发起http请求的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-31
- 说起C#和Java这两门语言(语法,数据类型 等),个人以为,大概有90%以上的相似,甚至可以认为几乎一样。但是在工作中,我也发现了一些细微的差别...2020-06-25
- 这篇文章主要介绍了C# 中的var关键字详细介绍的相关资料,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了解决Java处理HTTP请求超时的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
- 这篇文章主要介绍了java 判断两个时间段是否重叠的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
java 画pdf用itext调整表格宽度、自定义各个列宽的方法
这篇文章主要介绍了java 画pdf用itext调整表格宽度、自定义各个列宽的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-31- 这篇文章主要介绍了超简洁java实现双色球若干注随机号码生成(实例代码),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-02
InterlliJ IDEA2020新建java web项目找不到Static Web的解决
这篇文章主要介绍了InterlliJ IDEA2020新建java web项目找不到Static Web的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-02- 这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
- 这篇文章主要介绍了C#类中static变量用法,实例分析了static变量使用技巧与相关注意事项,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
Java使用ScriptEngine动态执行代码(附Java几种动态执行代码比较)
这篇文章主要介绍了Java使用ScriptEngine动态执行代码,并且分享Java几种动态执行代码比较,需要的朋友可以参考下...2021-04-15- 这篇文章主要介绍了Java开发实现人机猜拳游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-08-03
- 这篇文章主要介绍了Java List集合返回值去掉中括号('[ ]')的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-29
Java 8 Stream 的终极技巧——Collectors 功能与操作方法详解
这篇文章主要介绍了Java 8 Stream Collectors 功能与操作方法,结合实例形式详细分析了Java 8 Stream Collectors 功能、操作方法及相关注意事项,需要的朋友可以参考下...2020-05-20- yield这个关键字是和迭代器挂钩的,而且是与return一起以yield return的形式合用的,用来返回迭代器中的条目。...2020-06-25