【小白转码】05

第五章

一、类和对象

1.类与对象的概念

  1. 什么是对象?

    • 对象:是一个具有特定属性和行为特征的具体事物。

  2. 什么是类?

    • :是一类具有相同特征的事物的抽象描述,是一组相同属性行为的对象的集合。

  3. 类与对象的关系

    • 类是对一类事物的描述,是抽象的

    • 对象是一类事物的实例,是具体的

    • 类是对象的模板,对象是类的实体

2.类的定义

类的格式

public class 类名 {
 //成员变量,描述这类事物的属性
 //成员方法,描述这类事物的行为
}

3.对象的创建与使用

 

创建对象语法格式: 
类名 对象名= new 类名 ();
Person p = new Person();


使用对象的成员,使用“. ”操作:
使用成员变量:对象名.属性
使用成员方法:对象名.方法名()

4.对象的内存分析

堆空间:存放new出来的对象
栈空间:存储了局部变量表
方法区:存储了常量、静态信息、类信息等
   

System.out.println(new Student());////Student@7852e922
类型@对象的hashCode值
注:需要重写String(),才能输出实体内容。

 

二、成员变量

1. 变量的分类

根据定义位置不同分为:

  • 局部变量:定义在方法体内或其他局部区域内的变量(之前所使用的都是main方法中定义的变量,为局部变量)。

  • 成员变量:定义在类的成员位置,在方法体外,与方法(例如main方法)平行的位置。并且有修饰符修饰。

    根据修饰的不同成员变量又分为:

    • 类变量:或叫静态变量,有static修饰的成员变量。(后面再讲)

    • 实例变量:没有static修饰的成员变量。

2. 成员变量的声明

class 类名{
   【修饰符】 数据类型  属性名;  
}

说明:常用修饰符有public、缺省、private、protected、final、static

数据类型可以是任意基本数据类型和引用数据类型。

属性名即变量名,符合标识符的命名规则和规范。

3.实例变量

3.1、实例变量的特点
  1. 实例变量的值是属于某个对象的

    • 必须通过对象才能访问实例变量

    • 每个对象的实例变量的值是独立的

  2. 成员变量有默认初始值(同数组元素默认初始值)

    数据类型默认值
    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 方法的声明

  1. 方法声明的位置必须在类中方法外,在类的成员位置

  2. 语法格式

    【修饰符】 返回值类型 方法名(【参数列表 】)【extends fatherclass】【throws 异常列表】{
           方法体;
           【return 返回值;
    }

 

3.实例方法的调用格式

对象名.实例方法(【实参列表】) 

4.4 形参与实参的概念理解

  • 形参:在定义方法时方法名后面括号中声明的变量称为形式参数(简称形参)即形参出现在方法定义时。

  • 实参:调用方法时方法名后面括号中的使用的值/变量/表达式称为实际参数(简称实参)即实参出现在方法调用时。

 

4.5 方法调用的内存情况

方法不调用不执行,调用一次执行一次,每次调用会在栈中有一个入栈动作,即给当前方法开辟一块独立的内存区域,用于存储当前方法的局部变量的值,当方法执行结束后,会释放该内存,称为出栈,如果方法有返回值,就会把结果返回调用处,如果没有返回值,就直接结束,回到调用处继续执行下一条指令。

栈结构特点:先进后出,后进先出。

 

4.6 方法参数的值传递机制

方法的参数传递机制:实参给形参赋值,那么反过来形参会影响实参吗?

  • 方法的形参是基本数据类型时,形参值的改变不会影响实参;

  • 方法的形参是引用数据类型时,形参地址值的改变不会影响实参,但是形参地址值里面的数据的改变会影响实参,例如,修改数组元素的值,或修改对象的属性值。

    • 注意:String、Integer等特殊类型容易错

4.7 方法的重载 overload

方法重载:同一个类中(本类声明的或继承自父类的)的方法,方法名相同,参数列表不同的情况,这就叫方法重载。

参数列表不同:指的是参数个数不同,数据类型不同,数据类型顺序不同。

注意:与方法的返回值类型无关

 

4.8 可变形参

在JDK1.5之后,如果我们定义一个方法时,此时某个形参的类型可以确定,但是形参的个数不确定,那么我们可以使用可变参数。

格式:

【修饰符】 返回值类型 方法名(【非可变参数部分的形参列表,】参数类型... 形参名){  }

注意:

(1)一个方法最多只能有一个可变参数

(2)如果一个方法包含可变参数,那么可变参数必须是形参列表的最后一个

 

 

posted @   鸽子gkd  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示