结构体内容引⽤⾃⾮结构体数组对象_类和对象
类和对象知识点思维导图
⾯向对象编程的概念
在java中,万物皆对象。
⾯向对象是指以属性和⾏为的观点去分析现实⽣活中的事物。
⾯向对象编程是指先以⾯向对象的思想进⾏分析,然后使⽤⾯向对象的编程语⾔进⾏表达的过程。
封装、继承、多态。
⾯向对象的思想精髓:封装、继承、多态
类和对象的概念
对象主要指现实⽣活中客观存在的实体,在java语⾔中对象体现为内存空间中的⼀块存储区域。
类简单来说就是“分类”,是对具有相同特征和⾏为的多个对象共性的抽象描述,在java语⾔中体现为⼀种引⽤数据类型,⾥⾯包含了描述特征/属性的成员变量以及描述⾏为的成员⽅法。
类是⽤于构建对象的模板,对象的数据结构由定义它的类来决定。
类的定义
类定义的语法格式
通常情况下,当类名由多个单词组成时,要求每个单词⾸字母都要⼤写。
成员变量的定义语法格式
当成员变量由多个单词组成时,通常要求从第⼆个单词起每个单词的⾸字母⼤写。
对象的创建
语法格式
new 类名();
当⼀个类定义完毕后,可以使⽤new关键字来创建该类的对象,这个过程叫做类的实例化。
创建对象的本质就是在内存空间的堆区申请⼀块存储区域,⽤于存放该对象独有的特征信息。引⽤的定义
基本概念
使⽤引⽤数据类型定义的变量叫做引⽤型变量,简称为“引⽤”。
引⽤变量主要⽤于记录对象在堆区中的内存地址信息,便于下次访问。
语法格式
类名 引⽤变量名;
成员⽅法
语法格式
当成员⽅法名由多个单词组成时,要求从第⼆个单词起每个单词的⾸字母⼤写。
返回值类型的详解
(1)返回值主要指从⽅法体内返回到⽅法体外的数据内容。
(2)返回值类型主要指返回值的数据类型,可以是基本数据类型,也可以是引⽤数据类 型。
(3)在⽅法体中使⽤return关键字可以返回具体的数据内容并结束当前⽅法。
(4)当该⽅法不需要返回任何数据内容时,则返回值类型写void即可。
形参列表的详解
形式参数主要⽤于将⽅法体外的数据内容带⼊到⽅法体内部。
形式参数列表主要指多个形式参数组成的列表,语法格式如下:
数据类型 形参变量名1,数据类型 形参变量名2,…结构体数组不能作为参数传递给函数
若该⽅法不需要带⼊任何数据内容时,则形参列表位置啥也不写即可。
⽅法体的详解
成员⽅法体主要⽤于编写描述该⽅法功能的语句块。
成员⽅法可以实现代码的重⽤,简化代码。
⽅法的调⽤
引⽤变量名.成员⽅法名(实参列表);
实际参数列表主要⽤于对形式参数列表进⾏初始化操作,因此参数的个数、类型以及顺序都要完全⼀致。
实际参数可以传递直接量、变量、表达式、⽅法的调⽤等。
可变长参数
返回值类型 ⽅法名(参数的类型… 参数名)
⽅法参数部分指定类型的参数个数是可以改变的,也就是0~n个。
⼀个⽅法的形参列表中最多只能声明⼀个可变长形参,并且需要放到参数列表的末尾。
⽅法的传参过程
Java中关于⽅法调⽤时参数传递实际上只有⼀个规则,不管是基本数据类型还是引⽤数据类型,实际上在传递时都是将变量中保存的那个值复制⼀份,传递过去。不过这个值可能是数据内容,也可能是内存地址。
基本数据类型的变量作为⽅法的参数传递时,形参变量数值的改变通常不会影响到实参变量的数值,因为两个变量有各⾃独⽴的内存空间。
引⽤数据类型的变量作为⽅法的参数传递时,形参变量指向内容的改变会影响到实参变量指向内容的数值,因为两个变量指向同⼀块内存空间。
当引⽤数据类型的变量作为⽅法的参数传递时,若形参变量改变指向后再改变指定的内容,则通常不会影响到实参变量指向内容的改变,因为两个变量指向不同的内存空间。
实参 i 是基本数据类型,在参数传递时,开辟了新的内存空间将 i 的值放了进去,⽽形参 i 就代表新的内存空间,这样形参和实参有不同的内存空间,所以形参 i 值的改变不会影响到实参 i 。
字符串字⾯量是存放在字符串常量池中的,⽽且常量池中不会有相同的字符串。当实参 str 传递字符串给 形参 str 时,其实形参和实参都指向字符串常量池中的"hello"字符串,所以两者指向同⼀块内存空间。将形参的值修改为字符串 "come" 时,字符串常量池中会有⼀块内存空间存储 "come",⽽形参就会指向该内存空间,实参的指向不会发⽣改变,依然指向 "hello"字符串的内存空间。
数组在进⾏参数传递时,是将变量中存储的内存地址复制了⼀份给形参,所以两者指向同⼀块内存空间。当形参将数组中的某个元素修改时,由于实参也指向相同的内存空间,所以打印实参会发现数据发⽣了变化。
内存结构之栈区
栈⽤于存放程序运⾏过程当中所有的局部变量。⼀个运⾏的java程序从开始到结束会有多次⽅法的调⽤。
JVM会为每⼀个⽅法的调⽤在栈中分配⼀个对应的空间,这个空间称为该⽅法的栈帧。⼀个栈帧对应⼀个正在调⽤中的⽅法,栈帧中存储了该⽅法的参数、局部变量等数据。
当某个⽅法调⽤完成后,其对应的栈帧将被清除。