相关疑难解决方法(0)

51
推荐指数
1
解决办法
2530
查看次数

F和D在数字文字的末尾是什么意思?

我见过一些这样的符号,但我找不到任何奇怪的东西,

double d = 5D;
float f = 3.0F;
Run Code Online (Sandbox Code Playgroud)

5后面的D和F究竟意味着什么?

java floating-point double

42
推荐指数
3
解决办法
4万
查看次数

Java - char,int转换

在Java中,允许以下内容:

char c = 'A' + 1;
Run Code Online (Sandbox Code Playgroud)

这里,c将保持值'B'.在上面,首先评估表达式.所以'A'被转换为65,整个表达式的计算结果为66,然后66被转换为'B',因为我们将值存储在char中.

但是,以下内容会产生编译时错误:

char c = 'A';
c = c + 1;
Run Code Online (Sandbox Code Playgroud)

Java如何以不同方式查看表达式的解释是什么?顺便说一句,以下工作也很好:

char c = 'A';
c++;
Run Code Online (Sandbox Code Playgroud)

java int type-conversion char variable-assignment

39
推荐指数
1
解决办法
2万
查看次数

为什么我不能添加两个字节并得到一个int,我可以添加两个最后的字节得到一个字节?

public class Java{
    public static void main(String[] args){
        final byte x = 1;
        final byte y = 2;
        byte z = x + y;//ok
        System.out.println(z);

        byte a = 1;
        byte b = 2;
        byte c = a + b; //Compiler error
        System.out.println(c);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果涉及任何int-sized或者更小的表达式的结果总是为int,即使两个字节的总和适合一个字节.

当我们添加两个适合字节的最终字节时,为什么会这样? 没有编译器错误.

java int scjp variable-assignment ocpjp

27
推荐指数
2
解决办法
2万
查看次数

Java中的最终字符

以下代码段发出编译时错误.

char c = 'c';
char d = c + 5;
Run Code Online (Sandbox Code Playgroud)

第二行的错误说,

possible loss of precision
  required: char
  found:    int
Run Code Online (Sandbox Code Playgroud)

该错误消息基于NetBeans IDE.


当此字符c声明final如下时.

final char c = 'c';
char d = c + 5;
Run Code Online (Sandbox Code Playgroud)

编译器时间错误消失了.

它与最终字符串的情况无关

什么是final修改有所作为吗?

java final char

27
推荐指数
2
解决办法
3754
查看次数

Bitwise Operations简称

我使用的是一种名为DDS的技术,在IDL中,它不支持int.所以,我想我会用short.我不需要那么多位.但是,当我这样做时:

short bit = 0;
System.out.println(bit);
bit = bit | 0x00000001;
System.out.println(bit);
bit = bit & ~0x00000001;
bit = bit | 0x00000002;
System.out.println(bit);
Run Code Online (Sandbox Code Playgroud)

它说"类型不匹配:无法从int转换为short".当我换short到时long,它工作正常.

是否有可能short在Java中执行这样的按位运算?

java bit-manipulation

8
推荐指数
1
解决办法
4425
查看次数

编译器丢弃我的类型转换?

我为使这段代码工作而必须做的事感到困惑.似乎编译器优化了我需要的类型转换,或者在这里我还有其他一些我不理解的东西.

我有各种对象存储在实现接口的数据库中Foo.我有一个对象,bar它保存我用来检索我的Foo对象的数据.bar有这些方法:

Class getFooClass()

Long getFooId()
Run Code Online (Sandbox Code Playgroud)

我将类和ID传递给具有此签名的方法,该方法委托给hibernate,后者根据其类和ID检索主题:

public <T> T get(Class<T> clazz, Serializable id);
Run Code Online (Sandbox Code Playgroud)

有不同的实现者Foo,其中一些hibernate对象有Longid,而其他有Integerid.虽然这种方法接受了,但更远的地方最好接受正确的方法.因此,当我尝试调用get()带有Integerid 的对象时,如下所示,我可以理解地抱怨我提供了Long一个Integer需要的位置:

    get(bar.getFooClass(), bar.getFooId());
Run Code Online (Sandbox Code Playgroud)

这里有没有休眠的问题,我只需要提供一个Integer地方的Integer需要ID和Long其中一个Long是必需的ID.所以我添加了一个方法bar,hasLongId()和试过这:(在这一点上,你可能会想,这不是一个很好的设计,但现在这不是我的问题)

get(bar.getFooClass(),
    bar.hasLongId() ? bar.getFooId() : bar.getFooId().intValue());
Run Code Online (Sandbox Code Playgroud)

它仍然抱怨我提供了一个Long.这看起来很奇怪.然后我尝试了这个:

get(bar.getFooClass(),
    bar.hasLongId() ? bar.getFooId() 
                    : new Integer(bar.getFooId().intValue()));
Run Code Online (Sandbox Code Playgroud)

同样的错误!怎么会这样?所以我介入调试器,是的,它逐步完成intValue()并通过Integer构造函数,但是在get方法中,传递的参数实际上是一个Long- Long从返回的同一个对象getFooId(). …

java static-typing

8
推荐指数
1
解决办法
79
查看次数

为什么Java中的运算符总是生成整数?

我有这样的代码

short a = 1;
short b = 2 ;
short c = a + b; // dosen't compile
Run Code Online (Sandbox Code Playgroud)

编译失败的原因是什么?x+ x总是产生Integer更大 Number,但为什么?

java jvm compiler-errors language-specifications

4
推荐指数
1
解决办法
468
查看次数

为什么在整数的情况下无需显式转换?

byte a=10;
byte b=20;

b=a+b;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我需要a+b像这样显式转换为字节:

b=(byte)(a+b);
Run Code Online (Sandbox Code Playgroud)

与short相同:

short x=23;
short y=24;
Run Code Online (Sandbox Code Playgroud)

否则会产生错误。

但是在整数的情况下,不需要显式转换:

int p=7788;
int q=7668;

p=p+q;
Run Code Online (Sandbox Code Playgroud)

这样就可以了。

这是为什么?

即使在很长的情况下,我们也不需要显式转换。

java integer casting

3
推荐指数
1
解决办法
94
查看次数

字节算术:如何减去字节变量?

当我试图做这样的事情时,我收到了一个错误:

byte a = 23;
a = a - 1;
Run Code Online (Sandbox Code Playgroud)

编译器给出了这个错误:Test.java:8:可能发现精度损失:int required:byte a = a - 1; ^ 1错误

转换不能解决错误...为什么编译器不让我这样做?我是否需要将变量'a'转换为int?

java byte

2
推荐指数
2
解决办法
8003
查看次数

short plus short是一个int

我有三个短变量.当我将两个加在一起并将结果分配给第三个时,eclipse告诉我,我需要将其转换为简短的!

short sFirst, sSecond, sThird;

sFirst = 10;
sSecond = 20;
sThird = sFirst + sSecond;
Run Code Online (Sandbox Code Playgroud)

Hovever,当我做一个简单的任务,然后是增量赋值时,一切都很好.

short sFirst, sSecond, sThird;

sFirst = 10;
sSecond = 20;
sThird = sFirst;
sThird += sSecond;
Run Code Online (Sandbox Code Playgroud)

为什么是这样 ?

java

2
推荐指数
1
解决办法
2145
查看次数