一、对象
1.抽象概念
是真实存在的具体东西,比如:某一款电脑,他有品牌、颜色,它能用来做什么
2.组成
对象是由属性和方法组成的
- 属性: 静态特征,
- 写法:与声明变量类似,直接写在类里,叫属性(成员变量),写在方法里叫变量(局部变量)
- 默认值:系统给的默认值
- 方法:动态特征或功能
3.语法
访问修饰符 返回值类型 方法名(参数列表){
//方法体
}
例:无参方法
public void 方法名(){
//方法体
}
4.如何创建对象并使用对象的属性和方法
4.1创建对象
类名 对象名 = new 类名();
4.2引用对象成员
使用“.”进行以下操作
引用类的属性:对象名.属性
引用类的方法:对象名.方法名()
5.对象内存图
5.1步骤
1.加载class文件
2.申明局部变量
3.在堆内存中开辟空间
4.默认初始化
5.显示初始化
6.构造方法初始化
7.将堆内存中的地址值赋值给左边的局部变量
5.2内存图
5.2.1一个对象的内存图
5.2.2两个对象的内存图
5.2.3两个引用指向同一个对象
二、类
1.抽象概念
一个抽象的概念,具有同种功能的都可以称为类,比如:汽车类,交通工具类
2.概念
一组对象抽象成类,所以类是对象的类型,对象是类的实例
类定义了对象将有的属性和方法
- 类是对象的集合,对象是类的实例
- 类是对象的集合,对象是类的实例
- 一个对象必属于某个类
3.语法
步骤:定义类名、编写类的属性、编写类的方法
public class 类名 {
//定义属性部分,名词
属性1的类型 属性1;
属性2的类型 属性2;
…
属性n的类型 属性n;
//定义方法部分,动词
方法1();
方法2();
…
方法m();
}
4.定义类的注意事项
- 用来描述一类事物的类,专业叫做:Javabean类
在Javabean类中,是不写main方法的 - 在以前,编写main方法的类,叫做测试类
我们可以在测试类中创建JavaBean类的对象并进行赋值使用 - 类名首字母建议大写
- 实际开发中建议一个文件定义一个class类
- 成员变量的完整定义格式:修饰符 数据类型 变量名称=初始化值,一般无需指定初始化值,有默认值
三、方法
1.概念
方法是程序中最小的执行单元。
2.使用场景
重复的代码、具有独立功能的代码可以抽取到方法中
3.好处
- 可以提高代码的复用性
- 可以提高代码的可维护性
4.语法
访问修饰符 返回值类型 方法名(参数列表){
方法体
}
4.1[访问修饰符]
指该方法允许被访问得权限范围。
- public : 对所有类可见。使用对象:类、接口、变量、方法
- protected : 对同包可见、对不同包子类可见。使用对象:变量、方法。
- 注意:不能修饰类(外部类)。
- default : 同包可见。使用对象:类、接口、变量、方法。
- private : 在同一类内可见。使用对象:变量、方法。
- 注意:不能修饰类(外部类)
- 注意:不能修饰类(外部类)
4.2返回值类型
如果方法不返回任何值,它应该声明为void类型
如果有返回值,则必须与所说明得类型相匹配,使用return语句返回值
且返回值只能有0或者1个
4.3<方法名>
定义的方法名字,合法的标识符。
4.4[形式参数列表]
可选,传送给方法的参数列表,各参数间以逗号分隔。
- 多个参数
- 形参:声明方法的时候带的参数
- 实参:调用方法的时候给的参数
- 实参和形参的数据类型、数量、顺序一一对应
- 数组
- 数据是同数据类型
- 对象
- 可以将多个相关的信息封装成对象,作为参数传递,避免方法有太多的参数
5.方法的调用
1.在同类里,直接用
2.在不同类里,必须先创建对象,然后通过对象.进行调用
3.调用有参方法 对象名.方法名(实参);
四、方法内存原理
1.方法调用的基本内存原理
多个方法调用时,方法在栈内存中的顺序是:先进后出
2.方法传递内存原理
2.1基本数据类型
2.2引用数据类型
2.3从内存的角度解释
- 基本数据类型:数据值是存储在自己的空间中
- 特点:赋值给其他变量,也是赋的真实的值
- 引用数据类型:数据值是存储在其他空间中,自己空间中存储的是地址值
- 特点:赋值给其他变量,赋的地址值
3.方法的值传递
3.1基础数据类型
传递基本数据类型时,传递的是真实的数据类型
3.2引用数据类型
传递引用数据类型时,传递的是地址值,形参的改变,影响实际参数的值