在学习Java的时候总会遇到一些问题,今天就给大家说下如何把对象作为参数。
到目前为止,我们都使用简单类型作为方法的参数。但是,给方法传递对象是正确的,也是常用的。例如,考虑下面的简单程序:

// Objects may be passed to methods.
class Test { int a,b; Test(int i,int j) { a = i; b = j; } // return true if o is equal to the invoking object boolean equals(Test o) { if(o.a == a && o.b == b) return true; else return false; }
}
class PassOb { public static void main(String args[]) { Test ob1 = new Test(100,22); Test ob2 = new Test(100,22); Test ob3 = new Test(-1,-1); System.out.println("ob1 == ob2: " + ob1.equals(ob2)); System.out.println("ob1 == ob3: " + ob1.equals(ob3)); }
}

该程序产生如下输出:

ob1 == ob2: true
ob1 == ob3: false

在本程序中,在Test中的equals()方法比较两个对象的相等性,并返回比较的结果。也就是,它把调用的对象与被传递的对象作比较。

如果它们包含相同的值,则该方法返回值为真,否则返回值为假。注意equals中的自变量o指定Test作为它的类型。尽管Test是程序中创建的类的类型,但是它的使用与Java的内置类型相同。

对象参数的最普通的使用涉及到构造函数。你经常想要构造一个新对象,并且使它的初始状态与一些已经存在的对象一样。

为了做到这一点,你必须定义一个构造函数,该构造函数将一个对象作为它的类的一个参数。例如,下面版本的Box允许一个对象初始化另外一个对象:

// Here,Box allows one object to initialize another.
class Box { double width; double height; double depth; // construct clone of an object Box(Box ob) { // pass object to constructor width = ob.width; height = ob.height; depth = ob.depth; } // constructor used when all dimensions specified Box(double w,double h,double d) { width = w; height = h; depth = d; } // constructor used when no dimensions specified Box() { width = -1; // use -1 to indicate height = -1; // an uninitialized depth = -1; // box } // constructor used when cube is created Box(double len) { width = height = depth = len; } // compute and return volume double volume() { return width * height * depth; }
}
class OverloadCons2 { public static void main(String args[]) {
// create boxes using the various constructors Box mybox1 = new Box(10,20,15); Box mybox2 = new Box(); Box mycube = new Box(7); Box myclone = new Box(mybox1); double vol;
// get volume of first box
vol = mybox1.volume();
System.out.println("Volume of mybox1 is " + vol);
// get volume of second box
vol = mybox2.volume();
System.out.println("Volume of mybox2 is " + vol);
// get volume of cube
vol = mycube.volume();
System.out.println("Volume of cube is " + vol);
// get volume of clone
vol = myclone.volume();
System.out.println("Volume of clone is " + vol); }
}

在本程序中你能看到,当你开始创建你自己的类的时候,为了方便高效的构造对象,必须为同一构造函数方法提供多种形式。

Java基础:把对象作为参数相关推荐

  1. java 对象构造函数_20.Java基础_对象的构造函数

    package pack1; public class Student { private String name; private int age; //构造方法 //如果没有任何构造函数,系统会自 ...

  2. java基础知识-对象和类

    前言: 因为要准备Java面试,所有将java基础知识点重新复习一遍,主要笔记来源于菜鸟教程和java核心技术的书籍中,也有一些博客上的资料(这些只供我个人学习使用) Java 对象和类 对象:对象是 ...

  3. Java基础:对象序列化详解

    在我们平日开发中,经常让PO类去实现Serializable接口,然后让其可序列化.不过有时我们并不是特别清楚为什么要序列化,特别是对于纯Web项目开发的同学来说,需求环境不一定能用上.下面我简单和大 ...

  4. Java基础之对象序列化

    概述 Java中的对象的内部状态只保存在内存中,其生命周期最长与JVM的生命周期一样,即JVM停止之后,所有对象都会被销毁.但有时候,Java对象是需要持久化的,因此Java提供了一种对象持久化方式- ...

  5. Java 基础 匿名对象

    即没有名字的对象. public class Test {public static void main(String[] args) {/*Car c1 = new Car(); //创建有名字的对 ...

  6. JAVA基础知识——方法的参数,特殊数据类型,装箱和拆箱...

    文章目录 一.方法的参数 二.特殊的数据类型 三.装箱和拆箱 三.Object 四.思维导图 一.方法的参数 我们常见的参数有: (1)基本数据类型作为参数 (2)可变参数(三个点-) (3)引用类型 ...

  7. JAVA基础09对象和类

    9. 对象和类 9.1 为对象定义类 类为对象定义属性和行为. 面向对象程序设计(OOP) 就是使用对象进行程序设计.对象(object) 代表现实世界中可以明确标识的一个实体.例如:一个学生.一张桌 ...

  8. 学习-Java类和对象之参数传值机制之求球面积

    任务描述 本关任务:已知一个球的半径为 12.0,求该球的表面积. 球的表面积计算公式:S=4πR2,R为球的半径. 相关知识 为了完成本关任务,你需要掌握: 基本数据类型参数的传值: 引用类型参数的 ...

  9. java response 对象_82 Java基础 Response对象

    1 Response对象概述 负责对浏览器进⾏响应的对象 什么是响应: 服务器接收到请求需要进行处理,将处理以后的结果显示回浏览器端(将这个过程称为是响应Response). 查看Servlet中的s ...

  10. 黑马程序员--java基础--其他对象

    ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...

最新文章

  1. main方法的格式讲解
  2. java VM 推荐的命令行设置
  3. bootstrap栅格分5等分
  4. oracle将查询结果声明为伪表,Oracle查询操作(增删改查,伪表,高级查询)实例讲解...
  5. 第四范式重磅发布企业级AI操作系统Sage AIOS
  6. c语言改u3d游戏,使用Unity3D怎么制作一个五子棋游戏
  7. Delphi数据类型
  8. linux系统中 库分为静态库和,Linux系统静态库与共享库
  9. JS判断客户端是否是iOS或者Android
  10. 手机端html返回顶部,vue实现移动端返回顶部
  11. 推荐几个不错的苹果电脑截图工具
  12. 太极root权限_太极免root框架
  13. c语言常量定义规则,c语言常量(c语言常量定义规则)
  14. C# 使用Timer设置一个定时任务
  15. 倍福--温度控制案例
  16. oracle定时频率,Oracle 定时任务 — 定时执行存储过程
  17. 应届生小白转行新媒体运营,3个月里我都经历了什么?
  18. 排查maven中可以从远程下载下来jar包,但是却报错Failure to find was cached in the local repository, resolution will not
  19. 新库上线 | CnOpenDataA股上市公司IPO申报发行文本数据
  20. System.Drawing.Color的颜色对照表

热门文章

  1. [转载] python字符串处理函数汇总
  2. [转载] 浅析Java中volatile关键字及其作用
  3. HDU 5729 Rigid Frameworks (联通块计数问题)
  4. 44 The shopping psychology 购物心理
  5. bzoj 1015 [JSOI2008]星球大战starwar
  6. java并发编程(十)使用wait/notify/notifyAll实现线程间通信
  7. [转载]程序员的激情其实是一种痛苦
  8. 不能显示隐藏文件的问题
  9. 1.4 多项式拟合实例
  10. 适配器模式 Adapter Pattern