首页 > 编程语言 >自学JavaDay7

自学JavaDay7

时间:2024-09-10 21:55:27浏览次数:9  
标签:JavaDay7 对象 数据类型 add 实例 引用 自学 方法

面向对象

类与对象

        现实世界中如果事物与事物有共同特征,那么我们就把他们称之为一类,比如鱼类,运动类,电竞类等等。类是人类大脑思考总结出的一个模板,是一个抽象的概念。一个事物都应该具备状态和行为,比如学生,状态包括性别,年龄等等行为包括学习,跑步等等

        这个学生的状态我们在类中称之为属性,行为我们称之为方法,假设一个学生性别男,喜欢跑步,那么他就有男这么一个状态和跑步这么一个行为

学生类简单示例

         所以类 = 属性 + 方法

类中的属性又称为实例变量(对象变量),通常当一个方法表示一个对象的行为时该方法不用static修饰,这个方法又称为实例方法(对象方法),两者在访问时必须先有对象(类的实例化)才能访问。

对象

        实际存在的个体,又称示例instance,通过类这个模板可以实例化多个对象,在上面的示例中我们只是大致给出了一个学生的类,没有具体实例化,假设这个学生性别为男,正在跑步。我们就可以通过类来实例化出这个学生对象

学生类实例化简单示例

引用 

        引用的本质是一个变量,存储的是通过类实例化后的java对象的内存地址。

        可以通过引用访问对象的属性。

        访问实例变量有两种方法:第一种读取  引用.变量名  第二种修改  引用.变量名 = 值。

引用的简单示例

JVM(Java虚拟机内存分析)

图片修改自bilibili动力节点老杜java零基础p115

方法调用时的参数传递问题

        

面试题

我们先试着分析一下这段代码的运行结果

        初学者大部分都会认为结果为:add(i)的值为:11

                                                         11

        但是i的值实际没有发生变化。

标题

        那么为什么i的值没有自增1呢,这时候就涉及到方法的调用时的参数传递问题,在我们创建的add方法开始被main方法调用的时候局部变量i被传到add方法的()里,这个步骤就等于() = i;()用来接收变量,而"()"就可以看作是另一个名为()的局部变量,这样当我们将i的值传给()就相当于把i的值赋值了一份传给了(),这两个局部变量互不干扰,比如:

将()看作一个局部变量j,两个变量互不干扰

当我们在add方法中对i++时,当前的i和main方法里的i已经时两个不同的i只是变量名相同,所以在对add方法中的i++时,main中的i不受影响,进而结果是原来的i不变,add方法中的i自增1。

方法调用时的引用数据类型传递问题 

面试题

试着分析以上代码,写出运行结果。

        这里我们还是add方法,但是add方法中的形式参数类型为引用数据类型,结果还和上面的传基本数据类型结果一样吗?答案是不一样。

        在方法形式参数类型为引用数据类型时,我们传递的是当前引用所存储的对象的地址,而不管这个地址怎么复制,最终通过这个地址所找到的内容还是一样的,都是s1.age,所以不管我们是在哪里修改这个地址中的内容,它都是修改的这个数据本身

在add方法中修改s1.age就是修改s1.age本身

我们只需要记住当一个方法需要修改参数时,方法调用的时候参数的传递只是把变量复制了一份传到方法里面,只不过有的时候形式参数列表中的数据为基本数据类型,有的时候形式参数列表中的数据为引用数据类型。 当为基本数据类型时原参数(要传入的参数)不变,当为引用数据类型时原参数(要传入的参数)改变。

标签:JavaDay7,对象,数据类型,add,实例,引用,自学,方法
From: https://blog.csdn.net/m0_56008529/article/details/141872478

相关文章

  • 四年前端 自学Python The fifth Day
    1.1定义类类是对象的蓝图或模板,它定义了对象的属性和行为。示例代码:1.2创建对象对象是类的实例,通过类可以创建多个对象。示例代码:1.3类的成员类的成员包括实例变量、类变量、实例方法和类方法。1.4.1实例变量实例变量是与具体对象关联的变量,使用self引用。示......
  • 网络安全(黑客技术)—2024自学手册
    ......
  • 自学黑客(网络安全),一般人我劝你还是算了吧
     我是一名8年半的网安工程师“老司机”,要给准备入坑的同学泼盆冷水了,网络安全真的不是一般人能学的。有人会问“你一个8年的网安老司机,为什么还给大家泼冷水”?好多人说:网安基础很简单,是个人稍微认真点都能懂,给网安打上了简单、易懂的标签。然后上来就是一波言论浮夸的输出,......
  • 网络安全自学入门:(超详细)从入门到精通学习路线&规划,学完即可就业
     很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习,最终也只是会无疾而终!黑客是一个大的概念,里面包含了许多方向,不同的方向需要学习的内容也不一样。算上从学校开始学习,已经在网安这条路上走了10年了,无论是以前在学校做安全研究,还是毕业后在百度、360从事内核安全产......
  • 网络安全自学入门:(超详细)从入门到精通学习路线&规划,学完即可就业
     很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习,最终也只是会无疾而终!黑客是一个大的概念,里面包含了许多方向,不同的方向需要学习的内容也不一样。算上从学校开始学习,已经在网安这条路上走了10年了,无论是以前在学校做安全研究,还是毕业后在百度、360从事内核安全产......
  • 自学黑客(网络安全),一般人我劝你还是算了吧
      一、自学网络安全学习的误区和陷阱1.不要试图先成为一名程序员(以编程为基础的学习)再开始学习我在之前的回答中,我都一再强调不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,而且实际向安全过渡后可用到的关键知识并不多一般人如果想要把编程学好再开......
  • 自学黑客(网络安全),一般人我劝你还是算了吧
      一、自学网络安全学习的误区和陷阱1.不要试图先成为一名程序员(以编程为基础的学习)再开始学习我在之前的回答中,我都一再强调不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,而且实际向安全过渡后可用到的关键知识并不多一般人如果想要把编程学好再开......
  • Tensorflow2如何读取自制数据集并训练模型?-- Tensorflow自学笔记13
    一.如何自制数据集?1.目录结构以下是自制数据集-手写数字集,保存在目录 mnist_image_label下2.数据存储格式 2.1.目录mnist_train_jpeg_60000下存放的是60000张用于测试的手写数字    如:0_5.jpg,表示编号为0,标签为5的图片       6_1.......
  • 【自学笔记】处理类别数据、独热编码和降维(主成分分析)
    类别数据  与数值特征不同,类别数据往往更难被计算机理解,主要分为序数和标称。  序数具有顺序,比如衣服尺码中有XL>L>M等  标称不含任何顺序,特征之间相互独立。处理序数特征  为了让算法正确解读序数特征,我们需要用整数来表示。我们可以定义映射关系,训练后再反向......
  • 自学Python难吗?学多久?
    零基础进行Python学习,依照每个人的理解能力的不同,部分人会选择自学,另外一部分人会选择培训,那么自学Python难吗?培训需要多久?以下是具体内容介绍。自学Python难吗?Python被广泛认为是易于学习的编程语言之一。其语法简洁易懂,上手容易,尤其是对于有一定编程基础的人来说,......