局部变量和成员变量的区别
(1)在类中的位置不同
局部变量:在方法定义中或者是方法声明上的变量
成员变量:在类中,方法外定义的变量
(2)在内存中的位置不同
局部变量:在栈内存中存储,跟方法有关
成员变量:在堆内存中存储,跟类的对象有关
(3)生命周期不同
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失!
成员变量:随着对象的创建而存在,随着对象的创建完毕并且使用完毕,等待垃圾回收器回收掉之后才消失!(不会立即消失)
(4) 初始时机不同
局部变量:在方法定义中或者方法声明上的变量,必须在使用之前进行数据初始化,否则"可能尚未初始化"
成员变量:跟对象有关,在堆内存中,即使这个成员变量没有赋值,系统会根据变量的类型给这个变量进行默认初始化.
面向对象
面向对象的设计原则:不断创建对象,使用对象,指挥该对象做事情.
面向对象的三大特征:封装,继承,多态
面向对象的思想特点:
(1)更符合生活中的思想行为
(2)让复杂的事情简单化
(3)让我们从执行者变成了指挥者
方法内传递形式参数不同情况
1.形式参数如果是基本数据类型,形式参数改变对实际参数没有影响.
2.形式参数如果是引用类型(数组,类,接口),形式参数的改变对实际参数有很大影响. String是特殊的应用类型,它如果作为形式参数,跟特点1特点一样.
构造方法两种赋值方法
1.无参构造方法+setxxx方法搭配使用赋值.
2.通过有参构造方法直接赋值
class PhoneTest{
public static void main(String[] args){
//第一种赋值方式(无参构造+set方法)
Phone p1 = new Phone();
p1.setBrand("华为");
p1.setPrice(4455);
p1.setColor("宝石蓝");
p1.setMemory("128G");
System.out.println("型号:"+p1.getBrand()+"价格:"+p1.getPrice()+"颜色:"+p1.getColor()+"内存:"+p1.getMemory());
p1.call("秦始皇");
p1.takePhotos();
p1.chat("李白");
//第二种赋值方法(有参构造直接赋值)
Phone p2 = new Phone("vivo",2345,"磨砂黑","64G");
System.out.println("型号:"+p2.getBrand()+"价格:"+p2.getPrice()+"颜色:"+p2.getColor()+"内存:"+p2.getMemory());
p2.call("四大美女");
p2.takePhotos();
p2.chat("貂蝉");
}
}
class Phone{
// 成员变量
private String brand;
private int price;
private String color;
private String memory;
// 构造方法
public Phone(){
System.out.println("我是无参构造方法");
}
public Phone(String brand,int price,String color,String memory){
System.out.println("我是有参构造方法");
this.brand = brand;
this.price = price;
this.color = color;
this.memory = memory;
}
// set/get方法
public void setBrand(String brand){
this.brand = brand;
}
public String getBrand(){
return brand;
}
public void setPrice(int price){
this.price = price;
}
public int getPrice(){
return price;
}
public void setColor(String color){
this.color = color;
}
public String getColor(){
return color;
}
public void setMemory(String memory){
this.memory = memory;
}
public String getMemory(){
return memory;
}
// 普通方法
public void call(String name){
takePhotos();
System.out.println(brand+"手机可以打电话给"+name);
}
public void takePhotos(){
System.out.println(brand+"手机可以拍照");
}
public void chat(String name){
System.out.println(brand+"手机可以和"+name+"聊天");
}
}