我的博客地址www.taomaipin.com
就像前几章说的什么事变量呢? 变量是Java 程序的一个基本存储单元。变量由一个标识符,类型及一个可选初始值的组合定义。此外,所有的变量都有一个作用域,定义变量的可见性,生存期。是不是很概念化 抽象化,初学者我想一定有很多疑问,那么接下来讨论变量的这些元素。
1.0 如何声明一个变量
比如int c,b,d;? int a=6; int b=10; 那么 声明一个变量的格式 就是type 变量名 就是 前面的 c,b,d,就是变量名 而后面 的int a=6 int b=10 是因为 给a 和b 这两个变量初始化了,那么 这些声明的变量 存储到哪里呢,首先 声明的变量 存储到 stack(栈)内存中? 如果没有初始化 那么 他就一直在栈中存在直到垃圾收集
器 回收掉。a=6,b=10? 一单变量 初始化 那么 首先 在栈内存中 有两块存储a和b的内存,然后 a 指向堆内存中的6,b指向对内存中的10.。
声明一个变量 你可以不给它赋值 也可以 直接声明并初始化 像上面所说的 int a=6;int b=10;如果变量的类型一样 你也可以这样写 int a=6,b=10;
中间用逗号隔开
1.1 动态初始化变量
首先 看一下 下面的代码
? class Sum{
public static void mian(String[] args){
int a=1; int b=4;
int sum = a+b;
System.out.println(sum);
}
}
在这里 声明了三个 局部变量 a b sum。前两个变量 初始化为常量,变量sum 被动态的初始化,a和b的和就是sum的动态初始化值。
当然 你也可以这样初始化变量 把计算a和b的和的值 定义一个方法 如下代码
class Sum{
public? int Csum(){
int a=1; int b=4;
return a+b;
}
public static void mian(String[] args){
Sum s = new Sum();//创建一个对象 并把这个对象赋值给对象的引用s
system.out.println("和为"+s.Csum());
}
}
1.3 全局变量 和局部变量
从网上 拿来的代码
public class Test001 {??
??? static int a = 27;//全局变量??
??? static void test() {??
??????? boolean flag = false;// flag是局部变量,他的有效范围市整个方法体??
??????? if (!flag) {??
.??????????? int a = 20;// 局部变量a,是必须进行初始化的且只在if块中有效??
??????????? System.out.println("a1=" + a);??
??????? }??
??????? // a = 10;// 注意,这一行是会报编译错误:未声明变量a??
??? }??
??? /**?
??? * @param args?
.???? */?
??? public static void main(String[] args) {??
.??????? System.out.println("a2=" + a);??
??????? int a = 23;//局部变量a??
.??????? test();??
.??????? System.out.println("a3=" + a);??
??? }?
结果为:
a2=27
a1=20
a3=23
注意:
1,对于局部变量要先赋值后使用
2,局部变量局部有效,在定义这个变量的代码块也就是在“{}”中有效
3,在重合的有效范围内,不允许两个局部变量发生命名冲突。
当然 你也可以这样理解? 全局变量就是类的变量;所有类的实例都共有一个
在这里呢 实际上static int a=27 ; 如果 去掉static 关键字, 你会惊奇的发现,main 方法中第一行打印的a 包报错,这就是staic关键字的神奇之处。稍后章节 会介绍static 等其它关键字。
请大家关注我的博客网站www.taomaipin.com
?