javasql 数值类型型问题

java Long类型转换为flex AS Number类型时出现数值错误
java Long类型转换为flex AS Number类型时出现数值错误
[摘要:FlexAs Number范例用53个byte透露表现粗度,能透露表现的最大整数为0992,巨细那个数的整数转换后会得没有到正数值。 透露表现浮面数时粗度也不克不及凌驾那个数 * Number.MIN_VALUE = 4.47e-32]
Flex&As Number类型用53个byte表示精度,能表示的最大整数为0992,大小这个数的整数转换后会得不到正数值。
表示浮点数时精度也不能超过这个数
& * Number.MIN_VALUE = 4.47e-324& * Number.MAX_VALUE = 1.32e+308
感谢关注 Ithao123精品文库频道,是专门为互联网人打造的学习交流平台,全面满足互联网人工作与学习需求,更多互联网资讯尽在 IThao123!
Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
产品设计是互联网产品经理的核心能力,一个好的产品经理一定在产品设计方面有扎实的功底,本专题将从互联网产品设计的几个方面谈谈产品设计
随着国内互联网的发展,产品经理岗位需求大幅增加,在国内,从事产品工作的大部分岗位为产品经理,其实现实中,很多从事产品工作的岗位是不能称为产品经理,主要原因是对产品经理的职责不明确,那产品经理的职责有哪些,本专题将详细介绍产品经理的主要职责
IThao123周刊Java中数值的默认类型问题_java吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:457,618贴子:
Java中数值的默认类型问题收藏
byte a=12;12默认是int型
为什么这不报错?float b=12.3212.32默认是double 型 所以报错俺是新手 忘达人指教~自动转型是从低到高的啊byte-&short-&int-&long-&float-&doublechar-&int-&long-&float-&double默认是int 怎么转化为byte的?
自己给自己顶一下
——来自 爱贴吧 Windows Phone 客户端
因为在他的范围
-——菇凉,COS系统再现江湖,买把葛霸牌菜刀防身吧!
这个吧已经废了,全是灌水的。。
byte,short,char在范围内是可以看做int的,不用转型
又一个研究茴字有几个写法的…
不知道啊 用到再不百度 我是废物 哎byte a = (int) 12; 编译器提示你 这个 int 是多余的,说是不必要的强制类型转换就是说可以自动类型转换 或者说隐式类型转换byte b = 128;
编译器报错 Require Byte, Found Int
原因是128超过127了
溢出你懂吗
2^(n-1)-1
byte1位 8字节
2^7-1 = 127 ? java没有设计 unsigned类型
可以大一倍 这里可以看出 128是默认判断为int类型的
byte a = (byte)128
System.out.print ((int)(byte)128);
输出 -128 128 超过之前的说的 127了
然后就溢出成 -128了
short b = 128;
没任何提示通过了
表示也可以自动类型转换 short b = (short)128;
没任何提示通过了
这里编译器没有提示 short是多余的 不知道编译器怎么考量的
可以和IDE的实现有关吧。。。 short b =
编译器报错 Require short, Found Int
原因还是溢出对于一个不提供 typeof (变量名)看出类型的语言细究底层实在是 。。@ woachyx
月到梧桐上,风来杨柳边,非大丈夫不能有此襟怀!
点亮12星座印记,
看帖,回帖,顶贴,攒人品
在范围内,_128 到127
Java运行时最小的存储单位是32位,所以short byte这些类型仅存在于编译时,也就是说你编译时是short byte类型的变量在运行时都会变成和int一样的32位型。整型字面量常量是32位的,对于直接使用字面量进行赋值的byte b = 10, short s = 10这些只要没有超出编译时类型所限制的范围都是允许的,其他情况下类型检查也能够保证你做了强制类型转换。另外float型是32位,double型是64位,默认的浮点字面量常量是64位的double型,加了f才成为32位的float型,比较出区别了么?
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或只需一步,快速开始
扫一扫,访问微社区
查看: 3185|回复: 8
关于Java中,两个byte类型数据相加的问题!
该用户从未签到黑马币技术分主题
中级黑马, 积分 212, 距离下一级还需 788 积分
中级黑马, 积分 212, 距离下一级还需 788 积分
本帖最后由 江公亮 于
10:54 编辑
& & byte a=3,b=4,z;
& & 1、& &z=3+4;//这样就不会报错了。
& & 2、& &z= 3+560;//这样也会报错,也要求byte造型
& & 3、&&z=a+b; //Eclipse 会提示我对a+b进行byte造型,也就是z=(byte) (a+b);
& &通过在网上搜索,明白编译器在编译时,发现右边的类型是int类型,并且是常量,编译器就会判断,运算结果是否在byte
【-128 127】范围内,如果是,编译器会默认由int转化为byte,如果不在,就会要求我们造型。我认为这就是1、2的原因。
& &对于3、,编译器发现右边的变量,不认确定它的值是否在byte的范围内,为了保险起见,编译器就要求我们显示造型。也就是要求在外面加上byte.
还有为什么,编译器会这样要求,那如果两个int相加,就不会超出int范围吗??
该用户从未签到黑马币技术分主题
高级黑马, 积分 1176, 距离下一级还需 824 积分
高级黑马, 积分 1176, 距离下一级还需 824 积分
&&1、& &z=3+4;//这样是向上类型转换,不需要强转
& & 2、& &z= 3+560;//这样右边相加是int类型,而左边是byte类型 这是向下类型转换,需要强转
& & 3、&&z=a+b; //这个也是类型转换的问题
总结:向上类型转换不用强转,但是向下类型转换必须强转
该用户从未签到黑马币技术分主题
中级黑马, 积分 823, 距离下一级还需 177 积分
中级黑马, 积分 823, 距离下一级还需 177 积分
&&a和b是“变量”意味着这两值不确定、可能随时变化,编译器无法检查,也无法确定是否在byte字节范围之内, 他检查不了就会报错(可能丢失精度),如果是“常量”编译器就能够判断了
当两个数是常量时,再进行判断 常量是否在byte类型范围内& &若在&&就相加& &若不在& &就报错& &因为可能会丢失精度
如你给定的题目
&&z= 3+560;&&后面那个560很明显超出了 byte的范围,应该是int类型&&右边相加结果是int类型;而左边z是byte类型,若不进行转换 会丢失精度 编译器报错&&
还有为什么,编译器会这样要求,那如果两个int相加,就不会超出int范围吗??
而两个int类型进行相加运算&&java内部机制会默认int运算,一旦超出这个范围,他自动底层有强制转换过程,保留自己原有位置、高位全舍弃&&这就是byte和int的区别,int属于默认类型,他就没有byte上面那样的问题
&&byte和short类型“变量”,相加不能确定结果,无法检查,也不是默认类型,所以byte、short类型相加的时候,都会自动提升到int类型的
该用户从未签到黑马币技术分主题
中级黑马, 积分 212, 距离下一级还需 788 积分
中级黑马, 积分 212, 距离下一级还需 788 积分
我手心里的宝 发表于
1、& &z=3+4;//这样是向上类型转换,不需要强转
& & 2、& &z= 3+560;//这样右边相加是int类型,而左边是b ...
1,2 右边的都是int类型,都应该是向下转,重要的是第一个相加的结果在byte范围之类,而第二个不在!
该用户从未签到黑马币技术分主题
中级黑马, 积分 212, 距离下一级还需 788 积分
中级黑马, 积分 212, 距离下一级还需 788 积分
郝勇 发表于
a和b是“变量”意味着这两值不确定、可能随时变化,编译器无法检查,也无法确定是否在byte字节范围之内 ...
额,也就是说,如果两个int类型相加或相减,超过int的范围,就保留低位
该用户从未签到黑马币技术分主题
高级黑马, 积分 1176, 距离下一级还需 824 积分
高级黑马, 积分 1176, 距离下一级还需 824 积分
你在定义的时候 byte a=3,b=4,z;
已经定义了abc的类型为byte
byte类型的范围为-128——127
3,4,都在这个范围内相加的7 也在byte范围内 所以没有转换 刚才说的有点错(如果值在byte 范围内不需要转换,)
但是过了127就是为int 了 所以需要强转
该用户从未签到黑马币技术分主题
中级黑马, 积分 212, 距离下一级还需 788 积分
中级黑马, 积分 212, 距离下一级还需 788 积分
我手心里的宝 发表于
你在定义的时候 byte a=3,b=4,z;
已经定义了abc的类型为byte
byte类型的范围为-128——127
:),嗯,确实,超出了会默认转化,
该用户从未签到黑马币技术分主题
中级黑马, 积分 823, 距离下一级还需 177 积分
中级黑马, 积分 823, 距离下一级还需 177 积分
江公亮 发表于
额,也就是说,如果两个int类型相加或相减,超过int的范围,就保留低位
恩& &这是java开发人员 设定的吧&&具体我感觉& &把有些东西死记住就行!&&敲的多了&&可能就会明白了!
该用户从未签到黑马币技术分主题
中级黑马, 积分 212, 距离下一级还需 788 积分
中级黑马, 积分 212, 距离下一级还需 788 积分
嗯,谢了,
黑马骑士勋章
有了黑马骑士勋章,比白马王子还要牛!
站长推荐 /5
你还在游走于Baidu贴吧、Google找着各种各样的入门技巧以及视频吗?你还在为了各种学习资料在某宝花着大量银子吗?赶快行动,让青春不留遗憾!一键获取所有免费资源更有价值千元礼品等你来拿 ------->
加qq号22...
黑马iOS最权威最有料的资源帖横空出世!你还在找着各种各样的技巧及视频,在某宝花着大量银子才发现最终收到的却是很多年前的教学视频与资料吗?请来了解下,为什么iOS开发者是程序猿中的高富帅,开发者中的战斗机!
你还在为东拼西凑的找资料吗?你还在为焦灼为面试题和技巧而忙碌吗?本帖持续更新,真正的做到毫不保留,全部无偿分享,只为帮助更多的人受益;一键获取所有免费资源,添加QQ:2291...
黑马论坛Andrid真正精华资源,受益Google-Andrid开发的大牛中级小菜鸟伙伴。一、精华级传智Android视频学习资源分享。二、Android新手篇入门分享。三、Android实战技术经验集.......
一帖在手,说走就走,小马驹们看过来~是不是有一种点招社招傻傻分不清楚赶脚?是不是有一种黑马论坛黑马报名系统傻傻分不清楚赶脚?是不是有一种先付费后付费傻傻分不清楚赶脚?莫要担心,雪姐来解释一下!
Powered by
Copyright &rabbitmq消费者接受json数据类型的问题
今天在公司解决一个bug,同事没搞定,喊我过去,当时没看出来是任何错误,后来在rabbitmq的控制台发现原来是一个队列绑定了多个routingKey,导致该消费的没消费,不想消费的拿过去消费了,然后就报错了。而我们的队列监听配置的是,如果消息处理有异常,直接抛弃,不再放回队列中。够悲惨!这个问题解决了,还不够,后来发现类型转换异常了,坑爹,扒开代码一看,我擦嘞,居然是map转消费者的对象错误。何故?这里就要扯到我们这边对消费者接受到消息的处理封装了。1.原来我们用原生的,发现这个项目要是需要消费另外一个项目的生产的消息,那么这两个项目就得依赖了,因为你要用到生产方的类型了,不愿意这么做!2.后来我们使用spring-amqp中的jackson转换,这样看似是好的,可是用着就发现还是不方便,消费方的对象必须与生产方的对象的包路径+类名都要完全一致,当然也包括字段名了,用着很不爽,所以还是给废弃了。3.后来领导封装了一层东西,在消费方接到消息,处理之前,将其中的__TypeId__给替换成消费方对象的包路径+类名,这样我们就不用纠结要和生产方高度一致了,见代码(MessageListenerAdapter4Json-version1.0.java)4.这回就要扯到上面的问题了,用到泛型怎么办?如何单纯的用3的话,list中的泛型将被Jackson转出map了,到消费方处理时,自然要转成自己的对象,这里就报错了5.晚上回来,我扒了一下spring-amqp的代码,然后把泛型加上去了。见代码(MessageListenerAdapter4Json-version2.0.java)相应的配置,见对于的rabbitmq-version.1.0.xml或者rabbitmq-version.2.0.xmlpackage message.amqp.import com.rabbitmq.client.Cimport org.springframework.amqp.AmqpIllegalStateEimport org.springframework.amqp.core.Mimport org.springframework.amqp.core.MessageLimport org.springframework.amqp.rabbit.core.ChannelAwareMessageLimport org.springframework.amqp.rabbit.listener.adapter.MessageListenerAimport org.springframework.amqp.support.converter.AbstractJavaTypeMimport java.lang.reflect.Mimport java.lang.reflect.ParameterizedTimport java.lang.reflect.T/** * 由于原来的amqp在接受json数据转成Java对象时,需要按照原来message中__TypeId__来转换,这里重写类是为了替换这里的__TypeId__为消费者的 * 数据类型,并且加入泛型的判断.* * @author sunhao([email protected]) * @version V1.0,
19:09*/public class MessageListenerAdapter4Jackson extends MessageListenerAdapter {@Override public void onMessage(Message message, Channel channel) throws Exception { // Check whether the delegate is a MessageListener impl itself. // In that case, the adapter will simply act as a pass-through. Object delegate = getDelegate(); if (delegate != this) { if (delegate instanceof ChannelAwareMessageListener) { if (channel != null) { ((ChannelAwareMessageListener) delegate).onMessage(message, channel); } else if (!(delegate instanceof MessageListener)) { throw new AmqpIllegalStateException("MessageListenerAdapter cannot handle a" +"ChannelAwareMessageListener delegate if it hasn't been invoked with a Channel itself");}} if (delegate instanceof MessageListener) { ((MessageListener) delegate).onMessage(message);}} String methodName = getListenerMethodName(message, null); if (methodName == null) { throw new AmqpIllegalStateException("No default listener method specified:" +"Either specify a non-null value for the 'defaultListenerMethod' property or" +"override the 'getListenerMethodName' method.");} Method[] methods = delegate.getClass().getMethods(); for (Method method : methods) { if (method.getName().equals(methodName) && method.getParameterTypes().length == 1) { String className = method.getParameterTypes()[0].getName(); message.getMessageProperties().getHeaders().put(AbstractJavaTypeMapper.DEFAULT_CLASSID_FIELD_NAME, className); Object convertedMessage = extractMessage(message); Object result = method.invoke(delegate, convertedMessage); if (result != null) { handleResult(result, message, channel);}}}}}package message.amqp.import com.rabbitmq.client.Cimport org.springframework.amqp.AmqpIllegalStateEimport org.springframework.amqp.core.Mimport org.springframework.amqp.core.MessageLimport org.springframework.amqp.rabbit.core.ChannelAwareMessageLimport org.springframework.amqp.rabbit.listener.adapter.MessageListenerAimport org.springframework.amqp.support.converter.AbstractJavaTypeMimport java.lang.reflect.Mimport java.lang.reflect.ParameterizedTimport java.lang.reflect.T/** * 由于原来的amqp在接受json数据转成Java对象时,需要按照原来message中__TypeId__来转换,这里重写类是为了替换这里的__TypeId__为消费者的 * 数据类型,并且加入泛型的判断.* * @author sunhao([email protected]) * @version V1.0,
19:09*/public class MessageListenerAdapter4Jackson extends MessageListenerAdapter {@Override public void onMessage(Message message, Channel channel) throws Exception { // Check whether the delegate is a MessageListener impl itself. // In that case, the adapter will simply act as a pass-through. Object delegate = getDelegate(); if (delegate != this) { if (delegate instanceof ChannelAwareMessageListener) { if (channel != null) { ((ChannelAwareMessageListener) delegate).onMessage(message, channel); } else if (!(delegate instanceof MessageListener)) { throw new AmqpIllegalStateException("MessageListenerAdapter cannot handle a" +"ChannelAwareMessageListener delegate if it hasn't been invoked with a Channel itself");}} if (delegate instanceof MessageListener) { ((MessageListener) delegate).onMessage(message);}} String methodName = getListenerMethodName(message, null); if (methodName == null) { throw new AmqpIllegalStateException("No default listener method specified:" +"Either specify a non-null value for the 'defaultListenerMethod' property or" +"override the 'getListenerMethodName' method.");} Method[] methods = delegate.getClass().getMethods(); for (Method method : methods) { if (method.getName().equals(methodName) && method.getParameterTypes().length == 1) { String className = method.getParameterTypes()[0].getName(); message.getMessageProperties().getHeaders().put(AbstractJavaTypeMapper.DEFAULT_CLASSID_FIELD_NAME, className);//泛型的参数类型(如果只有一个参数,那么就取第一个) Type[] types = method.getGenericParameterTypes(); if (types.length >= 0 && types[0] instanceof ParameterizedType) {//存在泛型 ParameterizedType pType = (ParameterizedType) types[0]; Type t = pType.getActualTypeArguments()[0]; if (t instanceof Class) {//泛型类型 message.getMessageProperties().getHeaders().put(AbstractJavaTypeMapper.DEFAULT_CONTENT_CLASSID_FIELD_NAME, ((Class) t).getName());}} Object convertedMessage = extractMessage(message); Object result = method.invoke(delegate, convertedMessage); if (result != null) { handleResult(result, message, channel);}}}}}
最新教程周点击榜
微信扫一扫Java从数据库中获取数据的类型转化问题 - 开源中国社区
当前访客身份:游客 [
当前位置:
用的是jfinal+mysql。。查询语句中有一个字段
IFNULL(a,b) as `STATUS`
查出来之后。发觉有时候是LONG,有时候是INTEGER.
a,b的定义都是int
想问下为什么会有这种情况。。。因为我取出来之后是要做一个值比较判断。。用Long或者Integer去接收这个值都会有时候出现CLASSCASTEXCEPTION问题。。
---------------问题补充---------------
:主要是想了解下。查了下mysql的ifnull函数。返回的是字符串或者数字。那么传递到java中。是根据什么策略进行转换的呢?了解了这个应该可以明白为什么会出现两种类型。。有研究过的大大请回复个谢谢哦
共有2个答案
<span class="a_vote_num" id="a_vote_num_
java.lang.blob 肯定可以接收吧
--- 共有 2 条评论 ---
:刚才 粗略地看了下JDBC文档,没找到答案,可能要看源码了
(3年前)&nbsp&
接受的话bigdecimal可以。。比较想知道转换是根据什么去判断的。。
(3年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
& &JFinal 将数据从 ResultSet 中读取出来时并未对对数据进行转换(CLOB、BLOB类型除外),如果出现int 自动转 long 肯定是 JDBC 自己的行为。
& & 以前出现 int 字段转 long 的例子:Long sum = Db.queryLong(&select sum(money) from account where id=123&); 这里假定 money 是 int 型,但使用了 sum 函数,jdbc 就一定会将之转成long 值结果,这是因为sum出来的结果int保存可能会溢出。
& & 而你碰到的情况或许也与上面的例子类似,是因为在 sql 中使用了函数
--- 共有 3 条评论 ---
: 恩用这个方法的确是好。。。比较便捷。。另外想问下哦。上次问的问题是不是已经修复了呀。?关于分页的page的。
(3年前)&nbsp&
: 你可以先 getNumber(att).longValue() 来统一标准取值,先解决这个问题,无论是 int 还是 long, getNumber 不会出错
(3年前)&nbsp&
应该是类似,但是比较奇特的是。他这个转换有时候是转为int,有时候是转为long。。最重要的是出来的数据长度基本都是两三位数的。所以比较以后它底层是根据什么进行这种转换。。不知道有没熟悉这部分原理的朋友能指点指点
(3年前)&nbsp&
更多开发者职位上
有什么技术问题吗?
黄开源中国的其它问题
类似的话题

我要回帖

更多关于 sql 数值类型 的文章

 

随机推荐