为什么json字符串转java对象打印的int值不一样?

package project001.test;

import java.util.ArrayList;
import net.sf.json.JSONArray;

public class PersonTest {
    private int num;
    
    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public static void main(String args[]){
        String obj = "[ {\"num\":549033428509} ]";
        JSONArray jsonArr = JSONArray.fromObject(obj);
        
        ArrayList<PersonTest> list1 = (ArrayList<PersonTest>)JSONArray.toList(jsonArr,PersonTest.class);
        
        PersonTest p1 = list1.get(0);
        System.out.println(p1.getNum());
        
    }
}

为什么打印的结果是:-722385379

而我的num值,明明是549033428509
这是为什么啊?

阅读 3.9k
5 个回答

java中int的范围是 -2147483648~2147483647549033428509就溢出了;你可以先看下计算机中的原码, 反码, 补码的说明,大概就知道为什么了
这个问题应该能帮你理解:https://segmentfault.com/q/10...

兄弟 你知道int的最大值是多少咩,你这个超过最大值了,这里应该换成long类型

新手上路,请多包涵

超出int的范围了

这个转义符看的我头疼~~

补充补充Java基础

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题