莫道桑榆晚,为霞尚满天。这篇文章主要讲述static关键字相关的知识,希望能为你提供帮助。
static关键字 1. 使用static定义属性:(类名称.属性)
代码如下:
class Personprivate String name ;
private int age ;
static String country = "北京" ;
public Person(String name, int age)
this.name = name ;
this.age = age ;
public void setName(String name)
this.name = name ;
public void setAge(int age)
this.age = age ;
public String getName()
return this.name ;
public int getAge()
return this.age ;
public String getInfo()
return"姓名:" + this.name + ",年龄:"+ this.age +
",城市:"+ this.country ;
public class Testpublic static void main(String args[])
Person per1 = new Person("张三" , 20) ;
Person per2 = new Person("李四" , 22) ;
Person per3 = new Person("王五" , 21) ;
per1.country = "燕京" ;
System.out.println(per1.getInfo()) ;
System.out.println(per2.getInfo()) ;
System.out.println(per3.getInfo()) ;
内存图分析:
文章图片
文字分析如下:
Country属性的修改,一定会影响到其他对象,static定义的属性表示公共属性,因此,应由所有对象的集合进行调用,所有对象的集合就是类,即:static属性最好的调用方式,是通过“类名称.属性”的方式进行调用完成。
类名称.属性————//Person.country = “北京” ;
注意:
- 使用static定义的属性不在堆内存中保存,保存在全局数据区
- 使用static定义的属性表示类属性,类属性可以由类名称直接调用;
- Static属性虽然定义在类之中,但是可以在没有实例化对象的时候进行调用(普通属性保存在堆内存之中,但是static保存在全局数据区之中)。
2. 使用static定义方法
格式:
public static void setCountry(String c)//Static定义方法
country = c ;
代码如下:
class Personprivate String name ;
private int age ;
private static String country = "北京" ;
public Person(String name, int age)
this.name = name ;
this.age = age ;
public static void setCountry(String c)//Static定义方法
country = c ;
public static String getCountry()
return country ;
public void setName(String name)
this.name = name ;
public void setAge(int age)
this.age = age ;
public String getName()
return this.name ;
public int getAge()
return this.age ;
public String getInfo()
return"姓名:" + this.name + ",年龄:"+ this.age +
",城市:"+ this.country ;
public class Testpublic static void main(String args[])Person.country = "燕京" ;
//类.static方法()
System.out.println(per1.getInfo()) ;
Person per1 = new Person("张三" , 20) ;
System.out.println(per1.getInfo()) ;
static分为两派:static派、非static派
- static定义的方法不能用非static的方法和属性
- 非static的属性和方法,必须实例化对象之后才可以进行调用
代码如下:
public class Testpublic static void main(String args[])print() ;
//直接调用public static void print()
System.out.print("Hello World !") ;
public class Testpublic static void main(String args[])new.Test().print() ;
//直接调用public void print()
System.out.print("Hello World !") ;
主方法的组成:
- public::是一种访问权限,表示公共;
- static:此方法由类命名称直接调用,执行类:java 类名称;
- void: 主方法是一切的开始;
- main:系统规定的一个方法名称,执行类的时候默认找到此名称;
- String args[]:表示的是一些运行时的参数,通过字符串接收。
public class Testpublic static void main(String args[])for(int x = 0 ;
x <
args.length ;
x ++)
System.out.println(args[x]) ;
文章图片
4. static关键字的使用
使用static的情况:
- 希望可以再没有实例化对象的时候可以轻松的执行类的某些操作;
- 希望数据库共享。
代码如下:
class Personprivate static int count = 0 ;
public Person()//构造方法一定会被调用
System.out.println("对象的个数:"+ ++count) ;
public class Testpublic static void main(String args[])
Person per1 = new Person() ;
Person per2 = new Person() ;
Person per3 = new Person() ;
文章图片
范例:为属性自动命名
class Bookprivate static int count = 0 ;
private String title ;
public Book()
this("NOTTITLE:" + count++) ;
public Book(String title)
this.title = title ;
public String getTitle()
return this.title ;
public class Testpublic static void main(String args[])
System.out.println(new Book().getTitle()) ;
System.out.println(new Book("java SE").getTitle()) ;
System.out.println(new Book().getTitle()) ;
【static关键字】
文章图片
推荐阅读
- Java包装类
- 思考题2(人车关系)
- 如何迅速清除U盘AdobeR.exe病毒?
- 新U盘存在很多不明文件怎样处理?
- U盘病毒杀不掉怎样处理?
- 用完u盘后为何要及时拔出?
- 如何完全清理u盘rose玫瑰病毒?
- u盘格式化突然中断怎样处理呢?
- 正确判断u盘中毒时所经常见的不寻常征兆