变量
在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
欢迎更多获得内推的来牛客网写面经哦~~~你们的反馈就是我们最大的安慰!
牛客网—程序员必备求职神器
点击下方阅读更多精彩内容~