关于Java中long 型转换为Integer类型的问题

这里想将这个long型的结果转为integer型但是却报错图片说明
而把Integer改为int就不抱错了,这是为什么,能否详细解释一下

long和int类型为基本数据类型,Integer为引用数据类型
基本数据类型之间可以强转,而且基本数据类型只能与各
自的包装类进行自动包装和自动拆箱,即long对应Long
int对应Integer,故long转Integer是有违java的语法的

int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象.望采纳

int和char、double一样,都是基本的数据类型,而integer是引用类型,说白了就是类,是class,基本类型和引用类型之间是不能直接强制转换的

精度不同(或者表示范围不同)的两个数字类型转换,java规定精度低(表示范围小)的,可以自动转换为高的,反之需要程序员强制转换,这主要是为了避免无意中造成错误。

图片说明
如图,long转并没有问题,你这代码里也没有转integer啊,你那个-stock-quantity是什么,代码不全啊

同意zore_bug同学的说法

转了会丢失数据,打个代码就知道.

类型不一致而已,并没有特别的问题。
int类型
Integer类型
类型都不一样你怎么你能够转换?int和Integer的关系说起来就是Integer类型是int类型的打包器,他们之间是有一些关联的,只是为了让int基本类型能够
像对象一样的操作(也就是obj.方法这种访问方式)。还有一个就是java在某些操作上会对基本类型(如int)自动打包成打包器类型(int对应打包器的Integer对象)。
在某些方面感觉是很微妙的。
你使用的时候只要保证一点就行了,变量类型和强转类型的类型对上。举例来说就是int num = (int)longNum(longNum是long类型吧)。也就是声明类型和强转类型一致就行了。int 对应 强转类型(=后面的()里面的类型和声明的时候一致就行了)。当然这种形式基本上是针对基本类型。如果是引用类型的话,那么就要涉及向上转型和向下转型的关系

JDK5之后能自动装箱,你这样转就没错了

首先你需要了解Java的两种“自动”特性:
1、首先,你需要明白Java的"自动"装箱原理:
int--Integer
long--Long

2、其次了解Java基本数据类型“自动”转换:
byte可以自动转成int,int可以自动转成long
反过来则会造成精度缺失。

而你的例子:Integer a = (int)b;

//int 转成 long,包含了1和2两步,而java不会同时做1和2两步,需要分开来操作

long l = 10l;
Integer i = Integer.parseInt(String.valueOf(l));
System.out.println(i);

long 是基本数据类型 Integer是对象