【小白转码】05
一、类和对象
1.类与对象的概念
-
什么是对象?
-
对象:是一个具有特定属性和行为特征的具体事物。
-
-
什么是类?
-
-
类与对象的关系
-
类是对一类事物的描述,是抽象的。
-
对象是一类事物的实例,是具体的。
-
类是对象的模板,对象是类的实体。
-
2.类的定义
类的格式:
public class 类名 {
//成员变量,描述这类事物的属性
//成员方法,描述这类事物的行为
}
3.对象的创建与使用
创建对象语法格式:
类名 对象名= new 类名 ();
Person p = new Person();
使用对象的成员,使用“. ”操作:
使用成员变量:对象名.属性
使用成员方法:对象名.方法名()
4.对象的内存分析
堆空间:存放new出来的对象
栈空间:存储了局部变量表
方法区:存储了常量、静态信息、类信息等
System.out.println(new Student());////Student@7852e922
类型
二、成员变量
1. 变量的分类
根据定义位置不同分为:
-
局部变量:定义在方法体内或其他局部区域内的变量(之前所使用的都是main方法中定义的变量,为局部变量)。
-
成员变量:定义在类的成员位置,在方法体外,与方法(例如main方法)平行的位置。并且有修饰符修饰。
根据修饰的不同成员变量又分为:
-
类变量:或叫静态变量,有static修饰的成员变量。(后面再讲)
-
实例变量:没有static修饰的成员变量。
-
2. 成员变量的声明
class 类名{
【修饰符】 数据类型 属性名;
}
说明:常用修饰符有public、缺省、private、protected、final、static
数据类型可以是任意基本数据类型和引用数据类型。
属性名即变量名,符合标识符的命名规则和规范。
3.实例变量
3.1、实例变量的特点
-
实例变量的值是属于某个对象的
-
必须通过对象才能访问实例变量
-
每个对象的实例变量的值是独立的
-
-
成员变量有默认初始值(同数组元素默认初始值)
数据类型 默认值 byte,short,int,long 0 float,double 0.0 char 0或'\u0000'表现为空 boolean false 数组,类,接口等引用类型 null
3.2、实例变量的访问
对象.实例变量
3.3、小结:实例变量与局部变量的区别
实例变量 | 局部变量 | |
---|---|---|
声明的位置 | 直接声明在类的成员位置 | 声明在方法体中或其他局部区域内(方法声明上,构造方法,代码块等) |
修饰符 | public、private、final等 | 不能使用访问权限修饰符,可以使用final |
内存加载位置 | 堆 | 栈 |
初始化值 | 有默认初始化值 | 无默认初始化值 |
生命周期 | 同对象的生命周期 | 随着方法的调用而存在,方法调用完毕即消失 |
4.方法
4.1.概念
方法也叫函数,是一个独立功能的定义,是一个类中最基本的功能单元。
把一个功能封装为方法的目的是,可以实现代码重用,从而简少代码量。
4.2成员方法的分类
根据修饰不同方法主要分为两类:
-
实例方法:没有static修饰的方法,必须通过实例对象来调用。
-
静态方法:有static修饰的方法,也叫类方法,主要特点是可以由类名来调用。(后面再讲)
4.3 方法的声明
-
方法声明的位置必须在类中方法外,在类的成员位置
-
语法格式:
【修饰符】 返回值类型 方法名(【参数列表 】)【extends fatherclass】【throws 异常列表】{
方法体;
【return 返回值;】
}
3.实例方法的调用格式
对象名.实例方法(【实参列表】)
4.4 形参与实参的概念理解
-
形参:在定义方法时方法名后面括号中声明的变量称为形式参数(简称形参)即形参出现在方法定义时。
-
实参:调用方法时方法名后面括号中的使用的值/变量/表达式称为实际参数(简称实参)即实参出现在方法调用时。
4.5 方法调用的内存情况
方法不调用不执行,调用一次执行一次,每次调用会在栈中有一个入栈动作,即给当前方法开辟一块独立的内存区域,用于存储当前方法的局部变量的值,当方法执行结束后,会释放该内存,称为出栈,如果方法有返回值,就会把结果返回调用处,如果没有返回值,就直接结束,回到调用处继续执行下一条指令。
栈结构特点:先进后出,后进先出。
4.6 方法参数的值传递机制
方法的参数传递机制:实参给形参赋值,那么反过来形参会影响实参吗?
-
方法的形参是基本数据类型时,形参值的改变不会影响实参;
-
方法的形参是引用数据类型时,形参地址值的改变不会影响实参,但是形参地址值里面的数据的改变会影响实参,例如,修改数组元素的值,或修改对象的属性值。
-
注意:String、Integer等特殊类型容易错
-
4.7 方法的重载 overload
方法重载:同一个类中(本类声明的或继承自父类的)的方法,方法名相同,参数列表不同的情况,这就叫方法重载。
参数列表不同:指的是参数个数不同,数据类型不同,数据类型顺序不同。
注意:与方法的返回值类型无关
4.8 可变形参
在JDK1.5之后,如果我们定义一个方法时,此时某个形参的类型可以确定,但是形参的个数不确定,那么我们可以使用可变参数。
格式:
【修饰符】 返回值类型 方法名(【非可变参数部分的形参列表,】参数类型... 形参名){ }
注意:
(1)一个方法最多只能有一个可变参数
(2)如果一个方法包含可变参数,那么可变参数必须是形参列表的最后一个
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理