Java基础:把对象作为参数
在学习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基础:把对象作为参数相关推荐
- java 对象构造函数_20.Java基础_对象的构造函数
package pack1; public class Student { private String name; private int age; //构造方法 //如果没有任何构造函数,系统会自 ...
- java基础知识-对象和类
前言: 因为要准备Java面试,所有将java基础知识点重新复习一遍,主要笔记来源于菜鸟教程和java核心技术的书籍中,也有一些博客上的资料(这些只供我个人学习使用) Java 对象和类 对象:对象是 ...
- Java基础:对象序列化详解
在我们平日开发中,经常让PO类去实现Serializable接口,然后让其可序列化.不过有时我们并不是特别清楚为什么要序列化,特别是对于纯Web项目开发的同学来说,需求环境不一定能用上.下面我简单和大 ...
- Java基础之对象序列化
概述 Java中的对象的内部状态只保存在内存中,其生命周期最长与JVM的生命周期一样,即JVM停止之后,所有对象都会被销毁.但有时候,Java对象是需要持久化的,因此Java提供了一种对象持久化方式- ...
- Java 基础 匿名对象
即没有名字的对象. public class Test {public static void main(String[] args) {/*Car c1 = new Car(); //创建有名字的对 ...
- JAVA基础知识——方法的参数,特殊数据类型,装箱和拆箱...
文章目录 一.方法的参数 二.特殊的数据类型 三.装箱和拆箱 三.Object 四.思维导图 一.方法的参数 我们常见的参数有: (1)基本数据类型作为参数 (2)可变参数(三个点-) (3)引用类型 ...
- JAVA基础09对象和类
9. 对象和类 9.1 为对象定义类 类为对象定义属性和行为. 面向对象程序设计(OOP) 就是使用对象进行程序设计.对象(object) 代表现实世界中可以明确标识的一个实体.例如:一个学生.一张桌 ...
- 学习-Java类和对象之参数传值机制之求球面积
任务描述 本关任务:已知一个球的半径为 12.0,求该球的表面积. 球的表面积计算公式:S=4πR2,R为球的半径. 相关知识 为了完成本关任务,你需要掌握: 基本数据类型参数的传值: 引用类型参数的 ...
- java response 对象_82 Java基础 Response对象
1 Response对象概述 负责对浏览器进⾏响应的对象 什么是响应: 服务器接收到请求需要进行处理,将处理以后的结果显示回浏览器端(将这个过程称为是响应Response). 查看Servlet中的s ...
- 黑马程序员--java基础--其他对象
------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...
最新文章
- main方法的格式讲解
- java VM 推荐的命令行设置
- bootstrap栅格分5等分
- oracle将查询结果声明为伪表,Oracle查询操作(增删改查,伪表,高级查询)实例讲解...
- 第四范式重磅发布企业级AI操作系统Sage AIOS
- c语言改u3d游戏,使用Unity3D怎么制作一个五子棋游戏
- Delphi数据类型
- linux系统中 库分为静态库和,Linux系统静态库与共享库
- JS判断客户端是否是iOS或者Android
- 手机端html返回顶部,vue实现移动端返回顶部
- 推荐几个不错的苹果电脑截图工具
- 太极root权限_太极免root框架
- c语言常量定义规则,c语言常量(c语言常量定义规则)
- C# 使用Timer设置一个定时任务
- 倍福--温度控制案例
- oracle定时频率,Oracle 定时任务 — 定时执行存储过程
- 应届生小白转行新媒体运营,3个月里我都经历了什么?
- 排查maven中可以从远程下载下来jar包,但是却报错Failure to find was cached in the local repository, resolution will not
- 新库上线 | CnOpenDataA股上市公司IPO申报发行文本数据
- System.Drawing.Color的颜色对照表
热门文章
- [转载] python字符串处理函数汇总
- [转载] 浅析Java中volatile关键字及其作用
- HDU 5729 Rigid Frameworks (联通块计数问题)
- 44 The shopping psychology 购物心理
- bzoj 1015 [JSOI2008]星球大战starwar
- java并发编程(十)使用wait/notify/notifyAll实现线程间通信
- [转载]程序员的激情其实是一种痛苦
- 不能显示隐藏文件的问题
- 1.4 多项式拟合实例
- 适配器模式 Adapter Pattern