java中怎么处理值类型的数据类型转换java 异常类型

java中各数据类型是如何实现强制类型转换的?_百度知道
java中各数据类型是如何实现强制类型转换的?
我有更好的答案
比如:int a = 10;不同类型之间如果要转型 , 需要通过中间途径 转型有两种: 向上转型和向下转型(强制转型)两种分别如下, 比如long a = 10 :一种是向上转型对于基础数据类型 , 可以自动转型 , 因为 long范围比int大 , 这样的转型不会有任何影响 ;
B b = (A)而这种强转 , 又有要求 , 必须是同类型 , 比如a如果超过了b的范围 , 那么强转成int型;&lt, 不然会报错.&&#47, 也就是说
A 就是B , 只会等于int的最大值又比如 :B b = new A(); 这样是不行的 ;第二种是向下转型 ;long b =这里就是把int型转成了long型 ;ol&gt, 但是B继承A , 拥有A的一切属性和方法 (不谈复写) &&#47, 但是这样会丢失精度 , 所以可以自动转型又比如 A a = new B(); 其中 A 是B 的父类 , 这也是多态 , 就是父类的对象指向子类的引用 ;通过 (int)可以强制转型 ;ol&gt, 你调用a对象 , 实际上是B的类
, 也就是强制这种需要强转 ;ol&int b = (int) a, 需要有中间途径 , 比如JSON , 将A转成JSON串 , 然后再转换为B&&#47, 比如A a = new A();
Object obj = a
采纳率:98%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Java数据类型和类型转换
Java的数据类型分为基本数据类型和引用数据类型
Java 程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式...
Java的数据类型分为基本数据类型和引用数据类型
Java 程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
   && &&& &栈(stack):在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。在Windows下,栈是向低地址扩展的数据结构,&& &&& &&& &&& &&& &是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是2M(也有 &&& &&& &&& &&& &&& &的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。 &&& &&& &&& &&& &堆(heep): 堆内存用来存放由new创建的对象和数组,堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储 &&& &&& &&& &&& &&& & 的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,
      & 堆获得的空间比较灵活,也比较大。&
   方法区:用于存放类的信息。
   本地方法栈:给C/C++的native原生底层方法给予支持。
   PC寄存器:给CPU用。
堆与栈之间的联系:当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,&& &&& &&& &&& &&& &&& &&&&&&& Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。& &&& &&& &&& &&& &&& &&& & &&& &&& &&& &&& &&& &&& &&   在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于&& &&& &&& &&& &&& &&& && 数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。引用变量就相&& &&& &&& &&& &&& &&& && 当于是为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。 && &&& &&& &&& &&& &&& && 引用变量是普通的变量,定义时在栈中分配,引用变量在程序运行到其作用域之外后被释放。而数组和对象本身在堆中分配,&& &&& &&& &&& &&& &&& && 即使程序运行到使用 new 产生数组或者对象的语句所在的代码块之外,数组和对象本身占据的内存不会被释放,&& &&& &&& &&& &&& &&& && 数组和对象在没有引用变量指向它的时候,才变为垃圾,不能在被使用,但仍然占据内存空间不放,&& &&& &&& &&& &&& &&& && 在随后的一个不确定的时间被垃圾回收器收走(释放掉)。&& &&& &&& &&& &&& &&& && 栈中的变量指向堆内存中的变量,这就是 Java 中的指针!
数据类型的转换
  数据类型的转换分为隐式类型转换和显示类型转换,区别在于范围大小(如int的范围-2^16~2^16-1,注意这里比较的并不是所占字节)的转换方向,也就是向上转型和向下转型。
  隐式类型转换即是向上转型,属于自动转换,,如:
     long b=a;
  显示类型转换即是向下转型,属于强制转换,表示范围大的向范围小的数据类型进行转换,如:
         long a=50;
     int b=(int)
  文章来源:
转载请标明出处:
阅读 ( 12 )
你可能感兴趣的文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!
部分文章转自于网络,若有侵权请如何转换java中数据类型_百度经验
&&&&&&&&&电脑软件如何转换java中数据类型听语音123
百度经验:jingyan.baidu.com数据类型转换,分为自动转换和强制转换,简单的就可以这样理解,大的转小的叫强制,小的转大的,就叫自动!下面给大家看例子!百度经验:jingyan.baidu.com记事本java基本语句要会百度经验:jingyan.baidu.com1自动转换:把取值范围小的类型,转换为取值范围大的数据类型,例如从int转型到long,系统自动就读取了2强制转换:从取值范围大的转换成为取值范围小的!从long转换为int,long l2=999999;int l3=(int)l2;强制转换看提示3long强制转换int 成功4以下,从左到右,自动转换,从右到做强制转换!哈哈 绝得还行赞一个!END百度经验:jingyan.baidu.com注意格式,想转换成什么,就在前面加“(*)”*代表取值范围小的数据类型经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。投票(3)已投票(3)有得(0)我有疑问(0)◆◆说说为什么给这篇经验投票吧!我为什么投票...你还可以输入500字◆◆只有签约作者及以上等级才可发有得&你还可以输入1000字◆◆如对这篇经验有疑问,可反馈给作者,经验作者会尽力为您解决!你还可以输入500字相关经验00010热门杂志第1期你不知道的iPad技巧3699次分享第1期win7电脑那些事6527次分享第2期新人玩转百度经验1367次分享第1期Win8.1实用小技巧2627次分享第1期小白装大神1870次分享◆请扫描分享到朋友圈java中怎么处理值类型的数据类型转换异常_百度知道
java中怎么处理值类型的数据类型转换异常
把不确定字符串换成其他类型时经常容易出异常,怎么解决,非要用用try catch吗
有没有一些方法比如 tryParse可以用来判断的
我有更好的答案
你自己封装一个方法就是了= =就叫tryParse,然后里面是嵌套的try catch
采纳率:80%
来自团队:
为您推荐:
其他类似问题
值类型的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。博客分类:
Struts2的类型转换是基于OGNL表达式的.有良好的扩展性.
WEB应用接收到表单提交的数据都是String类型的,Struts2可方便的转换为 常规类型(数值,日期) / 自定义类型(User,Point类).
如果转换中出现异常,conversionError拦截器会自动处理该异常.
----------------------------------------------------------------------------------------------------
一, 常规类型的转换:
比如表单提交的信息有 用户名,生日, 年龄, Action中对应的数据类型分别是 String, Date, int.
没什么好说的, Struts2会自动完成.
Struts2内建了常用的类型转换器,如String ,boolean,char,int,long,float,double,Date, 数组(假定元素是String类型), 集合(假定元素是String类型,用ArrayList封装)
二,自定义类型的转换(方法一):
这种方法用用来转换复杂对象
ONGL项目中有一个TypeConverter接口,是实现转换器必须实现的接口,这个接口有点复杂,所以OGNL还提供了该街接口的一个实现类ognl.DefaultTypeConverter , 通过继承该类重写convertValue方法 ,实现自定义类型的转换 .
方法是这样的convertValue(final Map context, final Object value, final Class toType)
第一个参数:context 是类型转换环境的上下文
第二个参数 : value 是须要转换的参数,方向不同,value的类型也是不同的.
第三个参数 : toType是转换后的目标类型,
返回值是 : 转换后的目标类型, 方向不同,类型也是不同的.
Struts2自己有一个抽象类继承自 DefaultTypeConverter类,是StrutsTypeConverter .就是转换的两个分别对应两个抽象方法, 其实都一样,换汤不换药,百变不离其中.所以我们也可以继承 StrutsTypeConverter类.
下面做一个自定义类型转换的实例:
1. 表单是这样的:
输入一个用 豆号分隔的两个数字, 代表一个坐标点的X,Y值 .
2.Point 对象如下 ,用来封装表单信息.
package ssh.org.
public class Point {
public class LoginAction extends ActionSupport {
set,get方法略...
public String execute() throws Exception {
return "success";
3.实现自定义类型转换器 ,我们自己写一个转换类PointConverter
package ssh.org.
import java.util.M
import ognl.DefaultTypeC
public class PointConverter extends DefaultTypeConverter {
public Object convertValue(final Map context, final Object value, final Class toType) {
if (Point.class == toType) //从表单字符串转换为 Point对象
final Point point = new Point();
final String[] str = (String[])
final String[] param = str[0].split(",");
final int x = Integer.parseInt(param[0]);
final int y = Integer.parseInt(param[1]);
point.setX(x);
point.setY(y);
if (String.class == toType) //从对象转换为字符串
final Point point = (Point)
final int x = point.getX();
final int y = point.getY();
final String result = "[x=" + x + ",y=" + y + "]";
4. 把上面的类型转换器PointConverter注册在struts2应用中,Struts2框架才可以正常使用该 转换器.
有3种方法,任选其中一种就行 .
注册局部类型转换器 , 假定请求的LoginAction 来处理
, 我们就要篇写
LoginAction-conversion.properties文件 .本文件要与LoginAction.java放再同一文件夹
Properties代码
#本文件名是:LoginAction-conversion.properties
#注册局部的类型转换器的属性文件, 只针对指定名称的Action起作用
#文件名必须 是action类名 + -conversion.properties
#指定LoginAction的point属性由ssh.org.util.PointConverter类完成转换,point是成员属性,不是类
#本文件要与LoginAction.java放再同一文件夹
point=ssh.org.util.PointConverter
#本文件名是:LoginAction-conversion.properties #注册局部的类型转换器的属性文件, 只针对指定名称的Action起作用 #文件名必须 是action类名 + -conversion.properties #指定LoginAction的point属性由ssh.org.util.PointConverter类完成转换,point是成员属性,不是类 #本文件要与LoginAction.java放再同一文件夹 point=ssh.org.util.PointConverter
2) 注册全局类型转换器 .
Properties代码
#本文件名是 xwork-conversion.properties
#注册全局的类型转换的属性文件 , 对所有有ssh.org.util.Point类型成员属性的Action都起作用
#文件名必须是 xwork-conversion.properties
#该文件放在classPath根路径,也就是src包下面,与struts.xml再一起
#指定ssh.org.util.Point类(带包名)
的类型类转换器为ssh.org.util.PointConverter
ssh.org.util.Point=ssh.org.util.PointConverter
#本文件名是 xwork-conversion.properties #注册全局的类型转换的属性文件 , 对所有有ssh.org.util.Point类型成员属性的Action都起作用 #文件名必须是 xwork-conversion.properties #该文件放在classPath根路径,也就是src包下面,与struts.xml再一起 #指定ssh.org.util.Point类(带包名) 的类型类转换器为ssh.org.util.PointConverter ssh.org.util.Point=ssh.org.util.PointConverter
3) 使用JDK1.5的注解 来注册类型转换器,目前还无例子, 暂时略...
5 结果页面 success.jsp
点对象point: value="point"
三,自定义类型的转换(方法二): 这种简单,不须要自己写类型转换器,不用写转换器注册文件* -conversion.properties .
1 表单是这样地:
第一个文本框是X坐标,第二个文本框是Y坐标, 与方法二中一个文本输入x,y不同了.
&form action="login.action" & point3.x:&input type="text" name="point3.x"/& point3.y:&input type="text" name="point3.y"/& &input type="submit" value="提交"/& &/form& login.action是class LoginAction类在struts.xml配置的name
2 LoginAction 类
public class LoginAction extends ActionSupport { private Point point3; set,get方法略... @Override public String execute() throws Exception { return "success"; } }
3 Point 对象如下 ,用来封装表单信息.
package ssh.org. public class Point { }
4 结果页面 success.jsp
点对象point:&s:property value="point3"/&&br&
--------------------------------------------------------------------------------------------------------
类型转换错误的处理
conversionError拦截器被注册在默认的拦截器栈中, 也是在struts-default.xml
&interceptor-stack name="defaultStack"& &!--类型转换错误的拦截器 --& &interceptor-ref name="conversionError"/& &!--数据校验的拦截器 --& &interceptor-ref name="validation"& &param name="excludeMethods"&input,back,cancel,browse&/param& &/interceptor-ref& &/interceptor-stack&
被 conversionError拦截
将错误信息放入ActionContext中
读Action的局部资源文件 Action名称.properties
取得单个字段(成员属性)的提示信息
跳转到input逻辑视图,显示提示信息
,要struts.xml中 &result name="input"&/login/login.jsp&/result& 这要指定 input逻辑视图.
本例子,处理请求的action 名称为LoginAction.java.
LoginAction.properties 文件 必须与LoginAction.java同名(扩展名不同) ,并放在同一文件 夹内
Properties代码
#局部资源文件
#文件名为LoginAction.properties,
#必须与LoginAction.java同名(扩展名不同) ,并放在一起
# invalid.fieldvalue.成员属性=提示信息
invalid.fieldvalue.point=输入坐标不正确
invalid.fieldvalue.point2=输入坐标不正确
invalid.fieldvalue.point3=输入坐标不正确
invalid.fieldvalue.birthday=生日不正确
#局部资源文件 #文件名为LoginAction.properties, #必须与LoginAction.java同名(扩展名不同) ,并放在一起 # invalid.fieldvalue.成员属性=提示信息 invalid.fieldvalue.point=输入坐标不正确 invalid.fieldvalue.point2=输入坐标不正确 invalid.fieldvalue.point3=输入坐标不正确 invalid.fieldvalue.birthday=生日不正确
下面的表单是用Struts2标签写的, 出错误时,会自动显示错信息:
下面的表单是用HTML标签写的, 显示错误信息要加&s:fielderror &&/s:fielderror&标签 :效果如下:
-----------------------------------------------------------------------------------------------------------
附件中是总个工程文件 ,包括上面的演示代码, 由于jar包较少,打包后大小为2M,就全打包上传了. 开发环境 Eclipse 3.3 + 支持属性文件中文自动编码的插件(忘记名称了)
下载次数: 14
azrael6619
浏览: 433080 次
来自: 杭州
多谢博主分享,已经收藏:http://www.iwwenbo. ...
你好,我用的是ireport4.5.1,子表一直无法显示
ireport实用性上没有帆软报表好用
破解版不行了,要注册才行
得到某个类的静态属性好像用你的方法不对啊,只能使用暴力反射吗? ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'}

我要回帖

更多关于 java 判断异常类型 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信