Moh*_*sal 16 java types casting long-integer
我有一个名为的哈希表table.类型值是long.我正在使用价值观.values().现在我想访问这些值.
Collection val = table.values();
Iterator itr = val.iterator();
long a = (long)itr.next();
Run Code Online (Sandbox Code Playgroud)
但是当我试图得到它时,它会给我错误,因为我无法从类型转换object为long.我该怎么办呢?
Vin*_*nie 35
试试这个:
Long a = (Long)itr.next();
Run Code Online (Sandbox Code Playgroud)
你最终得到一个Long对象但是使用自动装箱你可能会使用它几乎像一个原始的长.
另一个选择是使用泛型:
Iterator<Long> itr = val.iterator();
Long a = itr.next();
Run Code Online (Sandbox Code Playgroud)
Number class可用于克服数值数据类型转换.
在这种情况下,可能会使用以下代码:
long a = ((Number)itr.next()).longValue();
Run Code Online (Sandbox Code Playgroud)
我已经准备了下面的例子:
Object 以 long 例子- 1
// preparing the example variables
Long l = new Long("1416313200307");
Object o = l;
// Long casting from an object by using `Number` class
System.out.print(((Number) o).longValue() );
Run Code Online (Sandbox Code Playgroud)
控制台输出将是:
1416313200307
Run Code Online (Sandbox Code Playgroud)
Object 到 double 例子- 2
// preparing the example variables
double d = 0.11;
Object o = d;
// Double casting from an Object -that's a float number- by using `Number` class
System.out.print(((Number) o).doubleValue() + "\n");
Run Code Online (Sandbox Code Playgroud)
控制台输出将是:
0.11
Run Code Online (Sandbox Code Playgroud)
Object 以 double 例子- 3
小心这个简单的错误!如果使用doubleValue()函数转换浮点值,则第一个值可能不等于最终值.
如下图所示0.11!= 0.10999999940395355.
// preparing the example variables
float f = 0.11f;
Object o = f;
// Double casting from an Object -that's a float number- by using `Number` class
System.out.print(((Number) o).doubleValue() + "\n");
Run Code Online (Sandbox Code Playgroud)
控制台输出将是:
0.10999999940395355
Run Code Online (Sandbox Code Playgroud)
Object 到 float 例子- 4
// preparing the example variables
double f = 0.11;
Object o = f;
// Double casting from an Object -that's a float number- by using `Number` class
System.out.print(((Number) o).floatValue() + "\n");
Run Code Online (Sandbox Code Playgroud)
控制台输出将是:
0.11
Run Code Online (Sandbox Code Playgroud)