JAVA中给变量赋值的问题

在JAVA中,Byte和Short是例外,可以直接把int赋值给其,比如 byte a = 5

且如果写 byte a = 5 * 10 也是可以编译打印的,结果是50

但是如果我先写 byte a = 5 ,再写 byte b = a * 10 则损失精度,

我想问,byte b = a * 10中的a是byte型,10 是int型,那么乘起来应该是还是int,既然前面说了byte和short可以用Int赋值,且如果是直接赋值,比如byte a = 5 或者 byte a = 5 * 10 也确实可以,但为什么先写 byte a = 5 ,再写 byte b = a * 10 就不行了???

byte a = 5 或者 byte a = 5 * 10 后面都是一个常量整数,
只要是不超过byte精度的常量 都正确
但是你下面的 byte b = a * 10
a是变量了,变量参与运算,会自动往大类型转换,于是结果就是int型
你把int赋给byte b自然就超过精度了
要想通过必需强转
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-25
在JAVA里面只能从小的data type转换到大的data type。
所以说你的程序, "byte a = 5; byte b = a * 10; "会有编译错误。
10是int, byte b = a * 10在编译的时候会尝试着让10变成byte,但这是错误的。
正确的程序应该是”byte a = 5; byte b = (byte)(a * 10); "本回答被提问者采纳
第2个回答  2012-08-26
这个是类型转换问题,int比byte要高,我们都知道低类型转换为高类型,系统默认转换,而且不会损失精度,而高类型转换低类型,则会出现损失精度,不准确等,要想把高类型转为低类型,只能进行类型强转。
第3个回答  2020-01-18
你可能想错了了哦那个方法a.pick()肯定有返回值他的返回值也是double类型,其实
area=a.pick()不是把方法赋给double变量area只是把方法返回的double类型的值赋给了area所以这种是可以的。相当于你直接这样的写法例子:
double
area
=
2.2d;

Java编程中变量赋值失败的原因
更系统全面的学习资料,点击查看在Java编程中,变量赋值失败通常有以下几个原因:1. 类型不匹配:Java是一种静态类型语言,要求变量的数据类型与其赋值的数据类型相匹配。如果将一个不兼容的数据类型赋值给变量,就会导致赋值失败。例如,将一个字符串类型的值赋给整数类型的变量。2. 作用域问题:Java中的...

Java编程中变量赋值失败的原因
在Java编程中,void关键字用于指定一个方法不返回任何值。如果你在方法声明中写了void,那么这个方法就不能有任何的返回语句。然而,你在问题中提到的void f(),这里少写了一个分号。在Java中,声明方法的语法是:javareturnType methodName(parameters) { \/\/ method body }对于void方法,returnTyp...

JAVA中的字符变量用键盘输入赋值,要赋一个汉字怎么搞?
public static void main(String[] args){ Scanner in = new Scanner(System.in);System.out.println("请输入:");String name = in.nextLine();System.out.println("你输入的数为:"+name);} }

java中一个引用变量给另一个引用变量赋值,内存是如何表现的
直接把引用变量在空间里面的地址传给被赋值的变量。所以如果此时你对被赋值的变量操作,实际上也会操作赋值的那个变量,比如,int a[]=new int[10]; int b[]=a;如果你改变了数组b里面的值 那么a里面的值也会随之改变,虽然你没有操作a

关于java中赋值问题,for(int j=0;j<20;j++)
第二个循环这么写:for(int j=0;j<20;j++)你没定义变量才出错的,在for后面括号里定义的变量,在循环结束时都会自动释放,所以第二次你虽然用了一样的变量名,但是2个j其实不是同一个变量。

哪种语句用于对变量进行赋值?
以常见的编程语言为例,如在Python中,赋值语句使用等号来表示。例如,`x = 10` 就是一个赋值语句,它将整数值10赋给变量x。此后,在程序中引用变量x时,就会使用到这个被赋的值10。同样,在JavaScript、Java、C++等语言中,赋值操作也是使用等号来完成的。赋值语句的灵活性在于,它可以用于不同类型...

Java中给byte变量直接赋值可以自动转换,但为什么把int变量赋给byte变 ...
是这样的,整型直接量在没有加后缀的时候默认为int,但是当它被赋值给某个变量(这个变量是short型,int型,byte型中的一种)时,则会自动转化成相对应的类型。比如说byte a=127;这里的127在没有赋值给a时默认是int型,赋值时自动调为byte型,并赋给a。但是,如果出现这样的情况:int a=12;\/\/...

JAVA中静态变量如何动态赋值?
Java赋值:1、赋初值:定义变量的同时赋值 例如: int a = 5;2、先定义后赋值 例如:int a;a = 5+5;这两种都是可以的,你选择的是第二种,先定义后赋值。你在val类中创建Demo类的实例,只是获得了t1的初值,而给t1赋值的部分放在了main()方法里,方法需要调用才能执行的(构造方法除外),...

java给对象的成员变量的赋值方法
java类的成员变量也可以不赋值,系统会根据变量类型赋系统默认值;java类的成员变量可以在以如下赋值:声明时(int i=10;)构造方法里(this.变量名=? 方式)类声明时不赋值,用 对象实例名.setXXX(xxx); 即set方法 Java类的局部变量必须在声明时赋值,否则报错...就是那种定义在方法里的变量......

在java中,如果要随机产生数给某个变量赋值,但产生数的范围有两个,该...
Math.random()函数是取一个大于等于0,小于等于1的随机数,返回的一个值是个double型。根据你的需要,你可以对这个值进行范围控制:比如(int)(Math.random()*100),即为取一个范围在0-100的整数;(int)(Math.random()*100)+10,即为取一个范围在10-110的整数。

相似回答