1.A.在类中的位置不同
成员变量:在类中方法外
局部变量:在方法定义中或者方法声明上
B.在内存中的位置不同
成员变量:在堆内存(成员变量属于对象,对象进堆内存)
局部变量:在栈内存(局部变量属于方法,方法进栈内存)
C.生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
D.初始化值不同
成员变量:有默认初试化值
局部变量:没有默认初始化值,使用前必须定义,赋值,然后才能使用。
2.匿名对象就是没有名字的对象
应用场景:a.调用方法,仅仅只调用一次的时候。
b.匿名对象可以作为实际参数传递
3.封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式
人类赋值年龄的问题
用private关键字修饰成员变量
private是一个权限修饰符,可以修饰成员变量和成员方法,被其修饰的成员只能在本类中被访问。
举例:A.把成员变量用private修饰
B.提供对应的getXxx()和setXxx()方法
4.this关键字
(1)调用本类中的属性,也就是类中的成员变量
(2)调用本类中的其他方法
(3)调用本类中的其他构造方法,调用时要放在构造方法的首行
5.可以通过在被访问的类中定义访问权限为public的函数,用来返回数据成员的引用。
class Demo1_Student {
public static void main(String[] args) {
Student s = new Student();
s.name = "小明";
s.age = 22;
s.speak();
}
} class Student {
String name;
int age;
public void speak(){
System.out.println(name + " " + age);
}
}
class Phone {
public static void main(String[] args) {
MobilePhone m = new MobilePhone();//创建对象 m.brand = "苹果"; //调用品牌属性并赋值
m.price = 8888; //调用价格属性并赋值
System.out.println(m.brand + " " + m.price); m.call();
m.sendMessage();
m.playGame();
}
} class MobilePhone {
String brand;
int price;
public void call(){
System.out.println("打电话");
}
public void sendMessage(){
System.out.println("发信息");
}
public void playGame(){
System.out.println("玩游戏");
}
}
class Demo2_Car {
public static void main(String[] args) {
for (int i = 0;i < 10;i++ ) {
method(new Car());
}
}
public static void method(Car cc){
cc.color = "red";
cc.num = 4;
cc.run();
}
} class Car {
String color;
int num;
public void run(){
System.out.println(color + " " + num);
}
}