写代码的考拉
2018-03-16 11:39
采纳率: 66.7%
浏览 7.7k
已采纳

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

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

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

11条回答 默认 最新

  • 关莫忆 2018-03-17 11:25
    已采纳

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

    打赏 评论
  • RolleDev 2018-03-16 12:32

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

    打赏 评论
  • zore_bug 2018-03-16 13:30

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

    打赏 评论
  • threenewbee 2018-03-16 15:35

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

    打赏 评论
  • 凝__ 2018-03-16 16:09

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

    打赏 评论
  • f19910925 2018-03-16 16:19

    同意zore_bug同学的说法

    打赏 评论
  • 云城木亚 2018-03-17 03:10

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

    打赏 评论
  • MikeDDT009 2018-03-17 04:24

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

    打赏 评论
  • Zeng WD 2018-03-17 06:12

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

    打赏 评论
  • Sincle_z 2018-03-17 07:03

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

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

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

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

    打赏 评论
  • m0_37848367 2018-03-18 08:06

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

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

    打赏 评论

相关推荐 更多相似问题