java中static的作用

1、static表示“全局“或者静态的意思。用来修饰成员变量和成员方法,也可以形成静态static代码,被static修饰的成员变量和成员方法独自于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享(因此可以用來统计一个类有多少个实例化对象),所以有些属性希望被所有对象共享,则必须将其声明为static属性,被static声明的属性成为全局属性。
2、只要这个类被加载,Java虚拟Papers 机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。
3、类中定义的静态代码块会优先于构造块先执行,而且不管有多少个对象,静态代码块只执行一次。
例1:
class PersonE{
 private String name;
 private int age;
 private static String country = "A城";
 public PersonE(String name,int age){
  this.name = name;
  this.age = age;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 public static String getCountry() {
  return country;
 }
 public static void setCountry(String country) {
  PersonE.country = country;
 }
 public void info(){
  System.out.println("姓名:"+this.getName()+","+"年龄:"+this.getAge()+","+"城市:"+country);
 }
}
public class StaticUse {
 public static void main(String[] args){
  PersonE per1 = new PersonE("张三",20);
  PersonE per2 = new PersonE("李四",22);
  System.out.println("---------修改之前--------");
  per1.info();
  per2.info();
  System.out.println("---------修改之後---------");
  PersonE.setCountry("B城");
  per1.info();
  per2.info();
 }

} 


例2:
public class StaticUse{
 private static int s;
 public StaticUse(){
  System.out.println("Creat new Class");
 }
 static{
  System.out.println("static block initialized");
 }
 public static int getS() {
  return s;
 }
 public static void setS(int s) {
  StaticUse.s = s;
 }
 public static void main(String[] args){
  StaticUse classA = new StaticUse();
  StaticUse classB = new StaticUse();
  System.out.println("classA.s ="+classA.getS()+";classB.s ="+classB.getS());
  classA.setS(10);
  System.out.println("classA.s ="+classA.getS()+";classB.s ="+classB.getS());
  classB.setS(classB.getS()+10);
  System.out.println("classA.s ="+classA.getS()+";classB.s ="+classB.getS());
 }
}

java中static的作用

class TestDemo
{
 static
 {
  System.out.println("静态代码块:main");
 }
 public static void main(String[] args)  
 { 
  System.out.println("主函数开始");
  new Test(1);
  new Test();
  System.out.println("主函数结束");  
 }
}
class Test
{
 Test()
 {
  System.out.println("构造函数:空参数的");
 }
 Test(int num)
 {
  System.out.println("构造函数:一个参数的");
 } 
 {
  System.out.println("构造代码块");
 }
 static
 {
  System.out.println("静态代码块:Test类的");
 }
}

运行结果:
静态代码块:main
主函数开始
静态代码块:Test类的
构造代码块
构造函数:一个参数的
构造代码块
构造函数:空参数的 

主函数结束

原文地址:https://www.cnblogs.com/hackforfun/p/4319010.html