热门话题白皮书HR资料
#java系列课程#变量
2024.07.03

变量


在java中,每个月宴都有变量,由于java是强类型语言,所以每个变量都要有类型。


在使用变量之前,必须先声明变量的类型。类型可以是简单类型,也可以是引用类型。


按照范围划分,分为全局变量和局部变量。在java中全局变量和局部变量是不一样的。全局变量应用的范围是整个一个类,因此声明的位置也是紧接着类下面,和方法是一个层面的。也就是说你写的程序是一层一层的。全局变量是处于第二层。



如:

public class Niukewang{


    int mianjing=10000;//这就是声明一个全局变量,和方法处于同一个层面


   String daima="代码";


  


}


那么局部变量正好相反,处于方法的里面,出了方法他就不好使了,自动free。如果不清空的话内存会被越占越多,就会发生内存溢出,所以局部变量是自动释放的。全局变量也一样,只不过是跟着方法一起被释放。


我们就是局部变量,没有一个人可以长生不老


public class Niukewang{


    int mianjing=10000;//这就是声明一个全局变量,和方法处于同一个层面


   String daima="代码";

      {


           int m=100;//这也是局部变量,只在这个代码块起作用


       }

  


}


那么可能会问我在代码块中重新申请局部变量能编译成功么?

如这样


public class Niukewang{


    int mianjing=10000;//这就是声明一个全局变量,和方法处于同一个层面


   String daima="代码";


  {

     int mianjing=11;//这样可以么?


   }


}


肯定会出错的!一个类中不允许有一样的变量,如果想重新赋值,那可以在后面直接打上mianjing=11;

这样才叫重新赋值。


那么再来看另外一种情况


public class Niukewang{


    int mianjing=10000;//这就是声明一个全局变量,和方法处于同一个层面


   String daima="代码";


  {

     mianjing=11;//这样可以么?


   }

    mianjing=111;//这样也是可以的

}


再来看

public class Niukewang{


    int mianjing=10000;//这就是声明一个全局变量,和方法处于同一个层面


   String daima="代码";


  {

     int mianjing1=11;//这样可以么?


   }

    mianjing1=111;//这样就是不可以了!mianjing1只在那个代码块中起作用,出了这个代码块,就被自动释放了,栈就被自动释放,不存在什么mianjing1了。





再来看


public class Niukewang{


    int mianjing=10000;//这就是声明一个全局变量,和方法处于同一个层面


   String daima="代码";


  {

     int mianjing1=11;//这样可以么?


   }

    int mianjing1=111;//这样也是可以的,重新声明一个

}


所以说局部变量的范围只在代码块中有效,但是全局变量就是针对整个类中都有用。


public class Niukewang{


   static int a=10;

   public static void main(String [] args){


    int a=100;

    System.out.println(a);//打印100


    }



    }

这个是允许的


在同一范围内,局部变量不能重复命名。

在同一范围内,全局变量和局部变量命名可以重复,但是以局部变量为准。




变量总是在一个类中声明。但一个变量可能和整个类相关联,也可能只在方法体或某个程序块中起作用。


public class Niukewang{


  public static void main(String [] args){

     int a,b,c=100;

    

     System.out.println(c);//打印出就是100

     System.out.println(b);//这个就是有错误的,因为全局变量必须赋初始值


   }

}



全局变量必须有初始值


public class Niukewang{

    static int d;

  public static void main(String [] args){

     int a,b,c=100;

    

     System.out.println(d);//这个就没有问题,全局变量默认初始值为0;

     System.out.println(b);//


   }

}


全局变量默认初始值为0;那么别的类型呢?


byte:0

int:0

float:0.0f

char:’\u0000‘

short:0

long:0l

double:0.0

boolean:false

String:null



欢迎更多获得内推的来牛客网写面经哦~~~你们的反馈就是我们最大的安慰!



牛客网—程序员必备求职神器

刷真题,练算法,看面经,得内推
www.nowcoder.com
长按二维码,把IT笔试面试题库装进



点击下方阅读更多精彩内容~