java中的euqal和==

java中的euqal和==

一、java当中的数据类型和“==”的含义:

基本数据类型(也称原始数据类型) :byte,short,char,int,long,float,double,boolean。他们之间的比较,应用双等号(),比较的是他们的值。
复合数据类型(类):当他们用(
)进行比较的时候,比较的是他们在内存中的存放地址(确切的说,是堆内存地址)。
注:对于第二种类型,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。因为每new一次,都会重新开辟堆内存空间。

二、equals()方法介绍:

JAVA当中所有的类都是继承于Object这个超类的,在Object类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址,但在一些类库当中这个方法被复写了,如String、Integer、Date。在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。
所以说,对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是内存中的存放位置的地址值,跟双等号(==)的结果相同;如果被复写,按照复写的要求来。

三、equals()方法和“==”的区别

在这里插入图片描述
如上图所示,当我们将c的引用对象给了c1之后(Car c1=c),相当于将对象复制一份出来,两个对象的内存地址值一样。所以指向同一个实体,因此,此时判定两者“==”时,返回值是true。
在这里插入图片描述
虽然是个对象都引用new Car,但是是两个不同的对象。每一次new,都产生不同的实体,但如果我们在carclass中重写了equal()方法,并且规定当color和num两个属性相等时候,两个car队形相等的话,此时可以判定c和c1相等(c.euqal(c1) == true)。

void build_link(onnx::NodeProto &onnx_node, magik::transformkit::NodeDef &magik_node, std::map<std::string, const onnx::NodeProto *> &all_node_map) { auto inputSize = onnx_node.input_size(); if (onnx_node.op_type() == KONNX_QUANTIZE_FEATURE || onnx_node.op_type() == KONNX_QUANTIZE_WEIGHT) { inputSize = 1; } if (onnx_node.op_type() == KONNX_PAD) { if (node_attr_slice::has_node_attr(magik_node, "pads")) { inputSize = 1; } } /************************************************************************ * Resize has the particularity of its input name being empty, for example: * Assume that roi name is empty, * X roi scales X scales * \ | / => \ / * Resize Resize * Note: roi, scales, size are optional. ************************************************************************/ if (onnx_node.op_type() == KONNX_RESIZE) { std::vector<std::string> input_names; for (auto input_name : onnx_node.input()) { if (!input_name.empty()) { input_names.push_back(input_name); } } onnx_node.clear_input(); for (auto input_name : input_names) { onnx_node.add_input(input_name); } inputSize = onnx_node.input_size(); } /************************************************************************ * ATen has the particularity of its input name being empty, for example: * 001 002 003 * \ \ | / / * V * ATen * input name of ATen: 001, 002, 003, , .(two input name is null) * ATen.input_size() = 5; * Actual input number of ATen is 3; ************************************************************************/ if (onnx_node.op_type() == KONNX_ATEN) { int input_count = 0; for (auto input_name : onnx_node.input()) { if (!input_name.empty()) { input_count++; } } inputSize = input_count; } for (int i = 0; i < inputSize; ++i) { std::string input_name = onnx_node.input(i); // may be input or input:0 or input:1 if (!input_name.empty()) { // use for GRU // delete the name that has "^" input_name = input_name.substr(input_name.find("^") + 1, input_name.size()); if (all_node_map.find(input_name) != all_node_map.end()) { if (all_node_map[input_name]->op_type() == KONNX_AWEIGHT) { input_name = all_node_map[input_name]->input(0); } if (all_node_map[input_name]->op_type() == KONNX_MAXIMUM_SCALAR) { if (all_node_map[all_node_map[input_name]->input(0)]->op_type() == KONNX_ABS) { input_name = all_node_map[all_node_map[input_name]->input(0)]->input(0); } else { input_name = all_node_map[input_name]->input(0); } } } // if (onnx_node.op_type() == KONNX_SUB) { // CHECK(inputSize == 2) << "The sub node input size must be euqal with 2"; // const std::string &input_name2 = onnx_node.input(1); // magik_node.add_input(""); // magik_node.add_input(""); // if (all_node_map.count(input_name) && all_node_map[input_name]->op_type() == KONNX_CONST) { // magik_node.set_input(1, input_name); // magik_node.set_input(0, input_name2); // } else { // magik_node.set_input(0, input_name); // magik_node.set_input(1, input_name2); // } // break; // } magik_node.add_input(input_name); } } }
最新发布
03-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值