1.什么时候变量会有一个默认值
(1)比如定义了一个汽车类,汽车类里定义了颜色String color,车胎数量int number; new Car()后会给变量一个默认值,是可以输出的。
eg.
public class Car {
String color;
int number;
public void run(){
System.out.println("车在跑"+color+number);
}
}
测试类:
public static void main(String[] args) {
Car c = new Car();
c.run();//输出 车在跑null0
}
(2)单纯的在一个类里定义了属性,没有初始化,不能输出
eg.
int a ;
System.out.println(a);
2.成员变量和局部变量的区别:
(1)定义位置上的区别
成员变量,定义在类中,方法外
局部变量,方法内,语句中
(2)作用域不同
成员变量,作用范围是整个类
局部变量,作用范围方法内,语句中
(3)默认值不同
成员变量,有自己的默认值
局部变量,没有默认值,不赋值不能使用
(4)内存位置不同
成员变量:跟随对象进入堆内存存储
局部变量:跟随自己的方法,进入栈内存
3。为了提高安全性,一般会给成员变量设置成private,然后提供公共的访问方式:方法。
比如:public class Person{
private String name;
private int age;
public int getAge(){
return this.age;
}
}
4.成员变量和局部变量名重名问题
注意:在局部变量的方法里,引用成员变量要用this.成员变量
public class Person{
String name = "成员变量";
int age = 20;
public void speak(){
String name = "局部变量";
int age = 10;
System.out.println("人在说话"+name + age);//输出:人在说话成员变量20
System.out.println("人在说话"+name + age);//输出:人在说话局部变量10 !!!
}
}
(1)比如定义了一个汽车类,汽车类里定义了颜色String color,车胎数量int number; new Car()后会给变量一个默认值,是可以输出的。
eg.
public class Car {
String color;
int number;
public void run(){
System.out.println("车在跑"+color+number);
}
}
测试类:
public static void main(String[] args) {
Car c = new Car();
c.run();//输出 车在跑null0
}
(2)单纯的在一个类里定义了属性,没有初始化,不能输出
eg.
int a ;
System.out.println(a);
2.成员变量和局部变量的区别:
(1)定义位置上的区别
成员变量,定义在类中,方法外
局部变量,方法内,语句中
(2)作用域不同
成员变量,作用范围是整个类
局部变量,作用范围方法内,语句中
(3)默认值不同
成员变量,有自己的默认值
局部变量,没有默认值,不赋值不能使用
(4)内存位置不同
成员变量:跟随对象进入堆内存存储
局部变量:跟随自己的方法,进入栈内存
3。为了提高安全性,一般会给成员变量设置成private,然后提供公共的访问方式:方法。
比如:public class Person{
private String name;
private int age;
public int getAge(){
return this.age;
}
}
4.成员变量和局部变量名重名问题
注意:在局部变量的方法里,引用成员变量要用this.成员变量
public class Person{
String name = "成员变量";
int age = 20;
public void speak(){
String name = "局部变量";
int age = 10;
System.out.println("人在说话"+name + age);//输出:人在说话成员变量20
System.out.println("人在说话"+name + age);//输出:人在说话局部变量10 !!!
}
}