一、变量:属性值可以发生变化的属性;
二、在Java当中,变量分为成员变量(在类中声明的变量)和局部变量,在C语言中变量分为全局变量和局部变量,这里读者注意区别;
三、局部变量:在方法块或循环结构当中定义的变量,详情看下面的例子:
package study;
/**
*
* @author 黑大帅
* @date 2020.1.24
* 实现功能:对java中局部变量、实例变量和静态变量的理解
*/
public class Study{
static int x; //定义静态变量
int y; //定义实例变量
void setx(int x0) { //定义局部变量x0
x=x0;
}
void sety(int y0) { //定义局部变量y0
y=y0;
}
}
四、成员变量又可以分为:静态变量和实例变量;
五、讨论静态变量(也称类变量)和实例变量:(个人理解,希望学着能明白)
区别一:
静态变量:在类中声明,在变量前添加关键字static;如:static int c;
实例变量:在类中声明,直接定义就ok,如:int c;
区别二:
静态变量:为所有对象共同享有;其中一个对象改变变量的值,其它对象得到这个变量的值也会发生改变;
实例变量:为对象私有,其中一个对象改变变量的值,对其它对象得到这个变量的值没有影响;
结合下面这个例子更能够帮助你理解:
package study;
/**
*
* @author 黑大帅
* @date 2020.1.24
* 实现功能:对java中变量的理解(主要是静态变量和实例变量)
*/
public class Study {
public static void main(String args[]) {
S s1= new S();
S s2 = new S();
System.out.println("通过s1来设置变量x和y的值");
s1.setx(1);
s1.showx();
s2.showx();
s1.sety(2);
s1.showy();
s2.showy();
System.out.println("-----------------------------------------");
System.out.println("通过s2来设置变量x和y的值");
s2.setx(1);
s1.showx();
s2.showx();
s2.sety(2);
s1.showy();
s2.showy();
}
}
class S{
static int x; //定义静态变量x
int y; //定义实例变量y
//通过set方法修改变量x的值
void setx(int x0) {
x=x0;
}
//通过set方法修改变量y的值
void sety(int y0) {
y=y0;
}
//打印出x的值
void showx() {
System.out.println("x="+x);
}
//打印出y的值
void showy() {
System.out.println("y="+y);
}
}
显示结果为:
过程分析:
从上面的例子我们可以看到:定义x为静态变量,定义y为实例变量,我通过s1给x和y设置值,对象s1和对象s2得到变量x的值都是1,得到变量y的值却不一样,原因就是y是实例变量,属于对象s1私有;我通过s2给x和y设置值,对象s1和对象s2得到变量x的值都是1,对象s1中y的值为2,对象s2中y的值也为2,这里对象s2中y的值是我赋予的,这也恰恰说明了区别二的性质。