面向对象:
(1)更符合日常思想行为习惯
(2)我们从执行者变成指挥者
(3)将一个复杂问题简单化!
特征:封装,继承,多态
开发:创建对象,适用对象,指挥对象做事
2.成员变量和局部变量的区别:
位置不同:成员变量:类中,方法外
局部变量:在方法定义上,或者方法定义中
内存位置不同:成员变量:堆内存
局部变量:栈内存
生命周期不同:成员变量:随着类的加载而加载,随着类的对象的消失而消失
局部变量:随着方法的调用而存在,随着方法调用完毕而消失
初始化值不同:成员变量:系统根据数据类型默认初始化值,引用类型(比如String类型)为null
局部变量:必须有初始化值或者在使用这个局部变量之前赋值,无默认初始化值.
3.如何调用类中的成员方法?
1) 创建对象使用对象调用方法
2) 类名.对象名=new 类名();
3) 对象名.成员变量;
4) 对象名.成员方法();
4.static关键字的特点:随着类的加载而加载,优先于对象存在 ,被static修饰的,在内存中只加载一次
构造代码块,静态代码块,构造方法的优先级?
静态代码块>构造代码块>构造方法
(1) 局部代码块:局部位置,用于限定变量的生命周期
(2) 构造代码块:类中的成员位置,在执行构造方法之前,必须执行构造代码块中的内容
(3) 静态代码块:在类中成员位置,static{}在类中只加载一次
5.student() s=new student();做了几件事?
1). 加载了student.class文件到内存
2). student s在栈内存为s对象开辟空间
3). newstudent()在堆内存中S对象申请堆内存空间
4). 成员变量进行系统的默认初始化
5). 成员变量显示初始化
6). 创建对象,通过构造方法进行数据初始化
7). 最终成员变量内存分配完毕,将堆内存地址值赋值给栈内存,整个对象创建完毕
6.面向对象的程序举例:
//键盘录入长方形长和宽,求出面积和周长,
import java.util.Scanner;
class Rectangle{
private int length;
private int width;
//方法1:成员变量赋值,set()方法
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
//方法2:利用构造方法给成员变量赋值,有参构造方法
public Rectangle(int length, int width) {
super();
this.length = length;
this.width = width;
}
//成员方法
public int Zhouchang(Rectangle s){
return (s.length+s.width)*2;
}
public int Area(Rectangle m){
return m.length*m.width;
}
public void show(){
System.out.println("该长方形长是:"+length+",宽是:"+width);
}
}
public class RectangleDemo {
public static void main(String[] args) {
//创建键盘录入对象,并且导包
Scanner sc=new Scanner(System.in);
//输入并接收数据
System.out.println("请输入长方形的长:");
int length=sc.nextInt();
System.out.println("请输入长方形的宽:");
int width=sc.nextInt();
//创建新的对象
Rectangle r=new Rectangle(length, width);
//调用成员方法
int Area=r.Area(r);
int zhouchang=r.Zhouchang(r);
r.show();
System.out.println("该长方形周长是"+zhouchang+",面积是:"+Area);
}
}