基本数据类型为空导致的错误cannot be translated into a null value due to being declared as a primitive type
Optional int parameter ‘xxx’ is present but cannot be
translated into a null value due to being declared as a primitive type.
可选的int参数“xxx”存在,但不能为空,由于被声明为基元类型而转换为空值。
所以一般采用采用包装类型来申明参数类型。
原因是在Interger和int的区别
(1)Integer是int的包装类;int是基本数据类型;
(2)Integer变量必须实例化后才能使用;int变量不需要;
(3)Integer实际是对象的引用,指向此new的Integer对象;int是直接存储数据值 ;
(4)Integer的默认值是null;int的默认值是0(int不可以为null)。
int与Integer的深入对比
(1)由于Integer变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变量永远是不相等的(因为new生成的是两个对象,其内存地址不同)。
Integer i = new Integer(100);
Integer j = new Integer(100);
System.out.print(i == j); //false
(2)Integer变量和int变量比较时,只要两个变量的值是向等的,则结果为true(因为包装类Integer和基本数据类型int比较时,java会自动拆包装为int,然后进行比较,实际上就变为两个int变量的比较)
Integer i = new Integer(100);
int j = 100;
System.out.print(i == j); //true
(3)非new生成的Integer变量和new Integer()生成的变量比较时,结果为false。(因为非new生成的Integer变量指向的是java常量池中的对象,而new Integer()生成的变量指向堆中新建的对象,两者在内存中的地址不同)
Integer i = new Integer(100);
Integer j = 100;
System.out.print(i == j); //false
(4)对于两个非new生成的Integer对象,进行比较时,如果两个变量的值在区间-128到127之间,则比较结果为true,如果两个变量的值不在此区间,则比较结果为false
Integer i = 100;
Integer j = 100;
System.out.print(i == j); //trueInteger i = 128;
Integer j = 128;
System.out.print(i == j); //false
对于第4条的原因: java在编译Integer i = 100 ;时,会翻译成为Integer i = Integer.valueOf(100)。而java API中对Integer类型的valueOf的定义如下,对于-128到127之间的数,会进行缓存,Integer i = 127时,会将127进行缓存,下次再写Integer j = 127时,就会直接从缓存中取,就不会new了。
public static Integer valueOf(int i){assert IntegerCache.high >= 127;if (i >= IntegerCache.low && i <= IntegerCache.high){return IntegerCache.cache[i + (-IntegerCache.low)];}return new Integer(i);
基本数据类型为空导致的错误cannot be translated into a null value due to being declared as a primitive type相关推荐
- 解决错误:Optional int parameter ‘pageSize‘ is present but cannot be translated into a null value due to
今天在学习springboot的时候,遇到了上面的问题,最开始一致找不到错误,然后查询资料,给的方法是: 将你的spring mvc中的int 修改为Integer就可以了,因为int不能装载null ...
- 未分配内存的指针导致段错误
一个最简单的队列初始化操作案例: 编译可以通过:但是运行程序时,会出现段错误:Segmentation fault 分析:主函数中声明了队列的一个指针(只是声明,并未实际分配地址空间),调用初始化函数 ...
- 页面缓存导致数据错误
页面缓存导致数据错误 服务端渲染(ssr)会将 API 数据做页面元素返回给前端, 而浏览器会认为是静态页面并将页面缓存, 导致每次访问时都是缓存用户数据. 页面又包含对数据的处理并提交. 当多端更新 ...
- 【No.5 类型转换导致的错误】
==[注意]== 程序语言只是我们与计算机交流并让计算机实现我们创造性思想的工具,可以并鼓励深入掌握一门语言,但千万别沉迷于钻某种语言的牛角尖,一定要把握好二者间的度 本帖属不定时连载贴,以试卷的形式 ...
- 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的。如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误。...
调试ASP.NET程序时发生错误:在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的.如果在 IIS 中没有将虚拟目录配置为应用程 ...
- 为什么链接库的顺序有时会导致GCC错误?
为什么链接库的顺序有时会导致GCC错误? #1楼 一个让我震惊的提示:如果您以" gcc"或" g ++"的形式调用链接器,则使用" --start- ...
- java 502错误,Spring Boot连接超时导致502错误的实战案例
1.问题描述 内部系统之间通过Nginx来实现路由转发. 但最近发现有一个系统,经常报502错误,每天达到上百次,完全无法忍受. 2. 原因排查 于是进行排查, 发现配置人员把连接超时时间(serve ...
- python变量初始化的位置不当、程序结果可能会出现问题_解决tensorflow由于未初始化变量而导致的错误问题...
我写的这个程序 import tensorflow as tf sess=tf.InteractiveSession() x=tf.Variable([1.0,2.0]) a=tf.constant( ...
- 微博 php7,新浪微博PHP版SDK的导致20007错误
本文章来转一篇关于新浪微博PHP版SDK的导致20007错误的解决方法,碰到此类问题的朋友可参考. 新浪微博有个高级接口'statuses/upload_url_text'(需要在open.weibo ...
最新文章
- atom搭建markdown环境
- Zookeeper原生客户端
- 如何修改world 2007文档结构图的字体 ???
- Slack设置根据关键字自动提醒的小技巧
- 微型CRM SaaS应用HubSpot的一些使用截图
- mysql8.0提示命令_Mysql 8.0 相关命令
- asp.net中条件查询+分页
- 一个小小的总结--关于写博客这件事
- 基于 Vue BootStrap的迷你Chrome插件
- Shrink space合并表的碎片
- 【幽默】工作搞不好的原因
- vs code 开发企业级python_入股不亏!VS Code中最好用的Python扩展插件
- gpu云服务器运行游戏_99元起!华为云鲲鹏云手机正式发布:流畅运行大型游戏...
- GBK字库集测试求助
- M1 macbook安装jdk
- photoshop--抽出滤镜
- Win7显示文件拓展名
- 单片机实习音乐播放器的源码
- 政务云公共服务区与资源共享区数据交换的方式
- Lua实现简单的任务动画移动(Animator)
热门文章
- 在线获取外链的php源码,y.qq.com-php获取QQ音乐外链源码
- U盘数据被格式化怎么办,U盘格式化数据如何恢复?
- 机器学习习题(16)
- 浙江杭州烟花爆炸事故中受伤最重者属二级烧伤-杭州-烟花爆炸-烧伤
- Win7关闭防火墙的脚本
- GObject对象系统
- 使用 KubeSphere 和极狐GitLab 打造云原生持续交付系统
- 当运行pychrm时遇到please select a valid interpreter怎么解决
- 安徽农业大学计算机信息管理专业,刘连忠 - 安徽农业大学 - 信息与计算机学院...
- 计算机维护宝典,分分钟教你“修电脑”的宝典,值得收藏