面向对象编程:
定义一个类:class person;
创建类的对象(类的实例化)
创建person类的对象:person p1 = new person()
调用对象的结构:属性,方法
调用属性:“对象.属性”
例:P1.name = “TOM”
如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属性(非static)
意味着:如果我们修改一个对象的属性a,则不影响另外一个对象属性a的值。
类中对象相等:将p1变量保存的对象地址值赋给p3,导致p1和p3指向了堆空间的同一个对象实体。
对象的创建与使用:内存解析:
堆(Heap),此内存区域的唯一目的 就是存放对象实例,几乎所有的对象 实例都在这里分配内存。
通常所说的栈(Stack),是指虚拟机 栈。虚拟机栈用于存储局部变量等。
方法区(Method Area),用于存储已 被虚拟机加载的类信息、常量、静态 变量、即时编译器编译后的代码等数
据
类中属性的使用:
属性(成员变量) 和局部变量的比较
1相同点:
1定义变量的格式:数据类型 变量名 = 变量值
2先声明,后使用
3变量都有其对应的作用域
2不同点:
1:类中声明的位置不同
属性:直接定义在类的一对{}内
局部变量:声明在方法内,方法形参,代码块内,构造器形参,构造器内部的变量
2关于权限修饰符的不同
属性:可以在声明属性时,指明其权限,使用权限修饰符
常用的权限修饰符:private, public,缺省(指的是前面没有其余三个量称为缺省),protected
局部变量:不可以使用权限修饰符。
3.默认初始化值
属性:类的属性根据其类型,都有默认初始化值
整形(byte,short,int,long),初始值都为0
浮点型(float,double),默认值为0.0
字符型(char):0(或\u0000)
布尔型(boolean):false
引用数据类型(类,数组,接口):null;
局部变量:没有默认初始化值,意味着,在调用局部变量之前,一定要显式赋值。
特别的:形参调用时,需要自己赋值即可
4.内存中加载的位置:
属性:加载到堆空间(非static)
局部变量:加载到栈空间
例如:
Class user{
//属性(或成员变量)
String name;
Int age;
}
类中方法的声明和使用:
方法:类应该具有的功能
例如:Math类:sqrt()\ random()等
Scanner类:nextxxx()…
Arrays类:sort() \ binarySearch() \ toString() \ equals() \ …
方法的声明:权限修饰符 返回值类型 方法名(形参列表){
方法体
}