为什么下面的代码即使 long3 == long2* 比较也返回 false ,即使它是文字。 *
public class Strings {
public static void main(String[] args) {
Long long1 = 256L + 256L;
Long long2 = 512L;
Long long3 = 512L;
System.out.println(long3 == long2);
System.out.println(long1.equals(long2));
}
}
Long
是一个对象,而不是原始对象。通过使用==
您正在比较 参考值 。
您需要做:
if(str.equals(str2))
正如您在第二次比较中所做的那样。
编辑: 我明白了…您正在考虑其他对象的行为就像String
文字。他们不*。即使如此,你永远要使用==
有String
任何文字。
(* Autobox类型确实实现了flyweight模式,但仅适用于-128->
127值。如果将其Long
设为等于,则50
实际上将有两个对同一个flyweight对象的引用。同样, 永远不要使用== 来比较它们。)
编辑添加:
Java语言规范第5.1.7节中专门说明了这一点:
如果装箱的值p为true,false,字节或\ u0000到\
u007f范围内的char或-128到127(含)之间的整数或短数,则令r1和r2为结果p的任何两次拳击转换。r1 == r2总是这样。
请注意,long
是 没有 明确提及,但目前甲骨文和OpenJDK的实现方式做到这一点(1.6和1.7),这是另一个原因 从未
使用==
Long l = 5L;
Long l2 = 5L;
System.out.println(l == l2);
l = 5000L;
l2 = 5000L;
System.out.println(l == l2);
输出:
真
假
问题内容: 如何比较数据类型? 我需要将存储在数据库中的文件与上传的文件进行比较,但是它说无法比较数据类型,我什至试图将其转换为 谁能帮我? 问题答案: 不要使用不推荐使用的数据类型。 而是使用不具有以下所有限制的替换数据类型 同时,您可以允许进行比较。
MLlib既支持保存在单台机器上的本地向量和矩阵,也支持备份在一个或多个RDD中的分布式矩阵。本地向量和本地矩阵是简单的数据模型,作为公共接口提供。底层的线性代数操作通过Breeze和jblas提供。 在MLlib中,用于有监督学习的训练样本称为标注点(labeled point)。 1 本地向量(Local vector) 一个本地向量拥有从0开始的integer类型的索引以及doubl
NumPy 数字类型是dtype(数据类型)对象的实例,每个对象具有唯一的特征。 这些类型可以是,np.float32等。 数据类型对象描述了对应于数组的固定内存块的解释,取决于以下方面: 数据类型(整数、浮点或者 Python 对象) 数据大小 字节序(小端或大端) 在结构化类型的情况下,字段的名称,每个字段的数据类型,和每个字段占用的内存块部分。 如果数据类型是子序列,它的形状和数据类型。 字
数据类型 可以通过 (type x) 来获取 x 的类型. 来自 JavaScript 的数据类型 nil, 对应 null Number Boolean String RegExp cljs 当中正则的语法是 #"\\d" 对应 js 里 /\d/. \d 本来是字符类型, 在 js 环境中成了 String. ClojureScript 其他常用的类型 Keyword, :demo, 或者从
一、存储种类和数据类型: SQLite将数据值的存储划分为以下几种存储类型: NULL: 表示该值为NULL值。 INTEGER: 无符号整型值。 REAL: 浮点值。 TEXT: 文本字符串,存储使用的编码方式为UTF-8、UTF-16BE、UTF-16LE。 BLOB: 存储Blob数据,该类型数据和输入数据完全相同。 由于SQLite采用的是动态数据类型,而其他传统的关系型数据库使用的是静态
Perl是一种松散类型的语言,在程序中使用时无需为数据指定类型。 Perl解释器将根据数据本身的上下文选择类型。 Perl有三种基本数据类型:标量,标量数组和标量散列,也称为关联数组。 以下是有关这些数据类型的一些细节。 Sr.No. 类型和描述 1 Scalar 标量是简单的变量。 它们前面有一个美元符号($)。 标量可以是数字,字符串或引用。 引用实际上是变量的地址,我们将在后面的章节中看到。