1.成员变量和局部变量的区别(面试题)
1)书写位置不同 局部变量:在方法定义中或者方法声明上 成员变量:在类中方法外(范围大) 2)内存中的位置不同 局部变量:在栈内存中 成员变量:在堆内存中 new新建 3)存在时间--生命周期不同 局部变量:随着方法的调用而存在,随着方法调用结束而消失 成员变量:随着对像的创建而存在 4)初始化值不同 局部变量:要么先定义后初始化,要么之间初始化 成员变量;存在系统初始化,可以赋值,但是一般不会直接赋值,一般都是通多对象名.成员变量名=赋值
2.方法形式参数问题(如果是基本数据类型/引用数据类型)!!!!!!重要
----------后期面向对象研究的都是引用数据类型-------
形式参数如果是基本数据类型 形式参数的改变不影响实际参数 如果形式参数是引用数据类型(数组,类,接口),他们作为形式参数,他们的改变会影响实际参数,因为引用的实际数据类型是通过空间地址值传输,堆内存中的地址值不会立即消失------ String除外,特殊的引用类型(字符串是常量,不能够被更改) 形式参数是 类 . Object
3.什么是匿名对象
没有名字的对象 格式 new 类名(); --- 不需要再栈内存中开辟空间 直接在堆内存中申请空间 创建完毕后就等待垃圾回收器回收 好处: 1)实际开发中,匿名对象不要多次 一次即可 一般情况下:移动端--Android(基于JavaSE)搞app,考虑内存问题 后期 B/S结构 大型网站
4.如何在属性加入"私有化"
setXXX 赋值 getXXX 输出值
5.this关键字特点
当局部变量隐藏了成员变量时 提供了一个关键字 this 指向变量的空间地址值 即空间地址值引用 this.变量名
手机有品牌(brand),价格,颜色,内存等属性,手机可以打电话,发短信, 打游戏等行为,请使用面向对象的方式描述手机并且进行测试(加入封装) 属性私有化-提供对外公共访问方法操作
public class Phone {
private String brand;
private int price;
private String color;
private String memory;
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getMemory() {
return memory;
}
public void setMemory(String memory) {
this.memory = memory;
}
public void callPhone(String name){
System.out.println("我打算给"+name+"打电话");
}
public void sendMsg(String sendMsg){
System.out.println("要不要给"+sendMsg+"发短信");
}
public void playGame(String gameName){
System.out.println("累了要不要玩会儿"+gameName+"放松一下");
}
}
public class PhoneTest {
public static void main(String[] args) {
Phone phone = new Phone();
phone.setBrand("三星");
phone.setPrice(6399);
phone.setColor("白色");
phone.setMemory("256G");
System.out.println("这款手机是"+phone.getBrand()+ ",价格是" + phone.getPrice() + ",是" + phone.getColor()+ "的,内存是" + phone.getMemory());
phone.callPhone("詹姆斯.高斯林");
phone.sendMsg("网易云");
phone.playGame("拉格朗日");
}
}