当前位置:论文写作 > 毕业论文范文 > 文章内容

Ja对象的比较技巧

主题:j论文范文a对象引用 下载地址:论文doc下载 原创作者:原创作者未知 评分:9.0分 更新时间: 2024-02-06

简介:关于对象引用方面的论文题目、论文提纲、对象引用论文开题报告、文献综述、参考文献的相关大学硕士和本科毕业论文。

对象引用论文范文

j论文范文a对象引用论文

目录

  1. 1.跟对象比较相关的重要概念
  2. 1.1类与对象的关系
  3. 1.2类与对象在内存中的存储
  4. 1.3对象和对象的引用
  5. 1.4对象引用的比较和对象内容的比较
  6. 2.自定义对象的比较
  7. 2.1运用Comparator接口实现比较算法
  8. 2.2运用Comparable接口实现可比较的类
  9. 2.3 Comparator和ComparableeI<,J区别
  10. 3.结语
  11. j论文范文a对象引用:妙味课堂-视频问题解答-对象引用

钱宇虹

(武汉职业技术学院计算机技术与软件工程学院湖北武汉430074)

摘 要:J论文范文a对象的比较是初学者不易掌握的.本文对与对象的比较密切相关的几个重要概念,如“类与对象的关系”“类与对象在内存中的存储”“对象和对象的引用”“对象引用的比较和对象内容的比较”等进行了深刻的剖析,随后给出了解决自定义对象比较的两种方法,即:运用Comparator接口实现比较算法,和运用Comparable接口实现可比较的对象,并对这两种方法进行对比,指出应用的场景.

关键词:J 论文范文a对象的比较;对象的引用;自定义对象的比较;Comparator接口;Comparable接口

在J论文范文a语言开发过程中,常常需要对对象进行比较.例如,在IF等结构语句中需要根据对象比较所得出的结果来进行相关处理.但是J论文范文a对象毕竟跟普通的变量不同,要比较两个对象是否相同,跟比较两个变量的值是否相同有很大的差异.笔者在本文中,对J论文范文a对象的比较问题做出深刻的理解和分析,澄清初学者容易混淆的几个重要概念,给出进行J论文范文a对象比较的方法和代码.

1.跟对象比较相关的重要概念

1.1类与对象的关系

在面向对象的编程语言中,类是程序的基本单元.它有一个类名并包括属性说明和服务说明两个主要部分.类与对象的关系就如同设计图纸与产品的关系.例如:自行车设计图,虽然设计图纸只有一张,但是根据图纸我们可以生产出一批自行车产品.设计图纸为所有同类型自行车提供了统的抽象描述,就如同类是具有相同属性和方法的一组对象的抽象描述;自行车的生产过程就如同类的实例化过程,当我们定义好了类,实例化结果就是对象,有了类这一模版,我们可以通过实例化创建多个对象,而这些对象的共同特征可以归并到同一个类中去.所以,类的实例化结果就是对象,而对一类对象的抽象就是类.

1.2类与对象在内存中的存储

当程序员定义一个类时,只要不含静态成员变量和方法,J论文范文a虚拟机(JVM)不会在内存中给其分配存储空间,只有创建对象后,才会在内存中为对象分配存储空间.当我们用同一个类创建不同的对象时,JVM会在内存中为不同的对象分配不同的存储空间.也就是说,不同的对象会对应不同的内存地址.虽然同一个类可以创建多个对象,其内容可能相同(成员变量、成员方法等等都相同),但是每个对象在内存中的地址是不同的.

1.3对象和对象的引用

对象的引用在英文中是reference,对象和对象的引用是容易混淆却又必须掌握的基础知识.先看下面的程序片断:

Student y:

y等于 new Student():

第一行语句声明了一个变量y,但是我们还没有在内存中创建对象,此时变量y只是有可能成为一个Student对象的引用,它当前的值为n ull.第二行语句使用new操作符在内存中创建了一个对象,我们可以把新创建的对象想象成一个氢气球,引用变量v是紧紧抓住这只气球的绳子,如图1所示:

我们也可以创建一个新的对象,但是并没有把它赋给一个引用变量,如下所示:

new Student():

这样的对象就好像飞掉的氢气球,在我们的程序中永远无法访问.

请注意,我们可以将以上两行语句合二为一,即声明一个引用变量y,并创建一个Student对象赋给y,这样y就成为Student对象的引用,如下所示:

Student y等于new Student(),

初始化引用变量的另一种方法,是将已有的对象引用传递给它,请看下面的程序片断:

Studentx等于new Student(), Student y: y等于×:

第一行语句实例化一个Student对象;第二行语句仅申明一个引用变量y,并没有创建第二个Student对象;第三行语句把引用×传递给y,此时,x并没有失去对Student对象的引用,所以结果是,有两根“绳子”抓住了同一只气球,如图2所示.

因此我们可以看到,同一个对象可以有多个引用变量引用它,但是一个引用变量一次只能引用一个对象,所以当引用变量引用另一个对象时,意味着它要失去对原来对象的引用.继续分析下面的程序片断会得到怎样的结果呢?

结果,当一个对象失去了所有的引用,就如同飞掉的氢气球,这个对象在我们的程序中永远无法访问,如图5所示,它所占用的内存永久性的浪费了.在C++语言中遇到这种情况,程序员必须小心处理内存回收问题,而在J论文范文a语言中,垃圾回收器(garbage collector)将自动为我们回收丢失对象的内存.

1.4对象引用的比较和对象内容的比较

“等于等于”运算符与equals()方法可用于对象比较,但是比较的实质大相径庭.其中, “等于等于”是将对象的引用进行比较,实质是比较两个引用变量是否引用同一个对象;而equals()方法则是比较两个对象的实际内容是否相同.请看下面的程序片断:

由于变量nl和变量n2分别引用了不同的Integer对象,所以n1等于等于n2的结果为false;而这两个Integer对象的内容都是47,所以nl.equals(n2)的结果为true.同理,由于变量sl和变量s2分别引用了不同的String对象,如图6,所以s1等于等于s2的结果为false;而这两个String对象的内容都是“Hello”,所以sl.equals(s2)的结果为true

j论文范文a对象引用:妙味课堂-视频问题解答-对象引用

为什么在字符串常量这种情况下s3等于等于s4结果为true而不是false呢?这是因为JVM为同一个字符串常量只创建一个对象而不是两个,所以s3和s4实际上引用了同一个字符串对象,这就不难理解s3等于等于s4结果为true了.

在J论文范文a中很多类都定义了equals()方法比较对象内容,其返回值为boolean类型,这些类包括:String、Double、Float、Long、Integer、Short、Byte、Boolean、BigDecimal、Biglnteger等等.因为equals()方法首先做“等于等于”比较,所以当两个变量引用的是同一个对象时很快得到返回值true.只有当两个变量引用的是不同对象时才进行内容的比较

2.自定义对象的比较

假设我们创建了自己的类以后,如何进行对象的比较呢?例如:Employee是我们创建的类,封装了雇员的基本信息,包括姓名和年龄两个属性,如程序清单1所示:

现在需要将公司的所有雇员按年龄进行排序.这是根据对象的某属性进行排序.针对这种应用有两种处理方法:一种是使用j论文范文a.utiI.Comparator接口,另一种是使用j论文范文a.lang.Comparable接口.

2.1运用Comparator接口实现比较算法

第一种方法是保持Employee类不变化,在这之外编写一个比较算法,这需要使用Comparator接口.

Comparator接口定义了一个compare()方法.其原型如下:

/@return ol小于、等于或大于02,分别返回负整数、零或正整数.+/

int compare(Object ol, Object 02),

为了解决雇员的年龄比较问题,我们需要构造一个年龄比较器类,如程序清单2所示:

年龄比较器类AgeComparator实现了Comparator接口,即提供了compare()方法的具体实现.在这个方法中,将两个雇员对象的年龄进行比较,针对01小于、等于或大于02,分别返回负整数、零和正整数.

随后将Comparator传递给Collections.sort或Arrays.sort方法就可以对对象的集合进行整体排序.如程序清单3所示.employees数组初始化时5个雇员的顺序为40,20,34,18,25(以年龄为准),整体排序后变成1 8,20,25,34和40了.

2.2运用Comparable接口实现可比较的类

第二种方法需要对Employee类进行改造,使之成为一个可比较的( Comparable)类,这需要Employee类实现Comparable接口.

Comparable接口定义了一个compareTo()方法,其原型如下:

广@return该对象小于、等于或大于指定对象o,分别返回负整数、零或正整数.+/

int compareTo(Object o),

改造后的Employee类如程序清单4:

请注意,其中的CompareTo()方法比较该对象和指定对象的顺序,如果该对象小于、等于或者大于指定对象,则分别返回负整数、零和正整数

Comparable接口强行对实现它的每个类的对象进行整体排序,实现此接口的对象列表(和数组)可以通过Collections.sort或Arrays.sort进行自动排序.如程序清单5:

2.3 Comparator和ComparableeI<,J区别

一个类实现了Comparable接口则表明这个类的对象之间是可以相互比较的,这个类的对象组成的集合就可以直接使用sort方法排序.Comparator可以看成算法的实现,将算法和数据分离.如果类的设计师没有考虑比较问题而没有实现Comparable接口,则可以通过Comparator来实现排序而不必改变对象本身.

3.结语

J论文范文a对象的比较是初学者不易掌握的.本文对“类与对象的关系”,“类与对象在内存中的存储”,“对象和对象的引用”,“对象引用的比较和对象内容的比较”等几个重要概念进行了深刻的剖析,随后给出了解决自定义对象比较的两种方法,即:运用Comparator接口实现比较算法,和运用Comparable接口实现可比较的对象,并对这两种方法进行对比,指出应用的场景.

参考文献

[1] Jacquie Barker.Beginning J论文范文a Objects From Conceptto Code[Ml. Birmingham,UK.Published by Wrox Press Ltd.2000

总结:这是一篇与对象引用论文范文相关的免费优秀学术论文范文资料,为你的论文写作提供参考。

j论文范文a对象引用引用文献:

[1] 面向对象论文范文 面向对象有关论文范文资料10000字
[2] 监察对象硕士论文范文 监察对象论文范文资料10000字
[3] 监察对象和大学学年毕业论文范文 监察对象和大学类论文范文素材2500字
《Ja对象的比较技巧》word下载【免费】
j论文范文a对象引用相关论文范文资料