编程

类型转换与强制转换

我爱IT资讯库   2021/02/22

自动转换: 举一个例子:把一个小的东西放到一个大的盒子里,是件非常容易的事,不用做任何改变,在这里理解成自动转换。若把一个大的东西放到一个小的盒子,那就要对这个东西做些舍弃,加工一下,强制把它放进小盒子里,可理解成强制类型转换。
byte->short->int->long->float->double

<wbr></wbr>

如果要把一个大类型塞到小类型中去,就要进行强制转换。

<wbr></wbr>

类型转换发生的时机:
1)赋值运算
2)算术运算
3)方法调用
自动类型转换举例(int类型自动转换成float类型):
<wbr><wbr><wbr><wbr>int i=7;<br><wbr><wbr><wbr> float j=1.0f;<br><wbr><wbr><wbr> float sum=i+j;//返回8.0<br> 强制类型转换举例(float类型强制转换成int类型):<br><wbr><wbr><wbr><wbr> int i=2;<wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr> float j=1.0f;<br><wbr><wbr><wbr><wbr> int sum=(int)(i+j);//返回3<br> 注:char可以自动类型转换成int。</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr></wbr>

何为兼容:只有数字类型(包括整型和浮点)兼容,数字类型和CHARBOOLEAN是不兼容的。CHARBOOLEAN不兼容。

<wbr></wbr>

<wbr></wbr>

<wbr></wbr>

<wbr></wbr>

<wbr></wbr>

<wbr></wbr>

<wbr></wbr>

二、字符串与其它数据类型的转换
1)从Integer类对象中把数据以int类型取出方法有两个:类级别的“parseInt”、对象级别的“intValue”。intValue不需要任何参数,直接调用,前提必须有Integer类对象。<wbr>如只想把字符串类型的数字转换成int类型数字,可以直接使用parseInt方法。<br><wbr><wbr><wbr>intValue方法可以用来取得Integer对象所存放的int数值,也可以通过类似的方法来转换其他的基本数据类型,boolean,char除外。byte,short,long,float,double分别对应方法byteValue,shortValue,longValue,floatValue,doubleValue。<br><br> 举例:String-&gt;int<br><wbr><wbr><wbr><wbr><wbr><wbr>Integer s = new Integer(str);<br><wbr><wbr><wbr><wbr><wbr><wbr>int s1=s.intValue();<br><br><wbr><wbr><wbr><wbr><wbr><wbr>int s1=Integer.parseInt(str);<br><br> 2)和parseInt相反的是"toString"这个方法,这个方法是对象级别的,即将对象转换成字符串。当使"+"运算符将对象同一字符串连接,Java编译器会自动调用"toString"方法。<br> 举例:int-&gt;String<br><wbr><wbr><wbr><wbr><wbr><wbr>Integer.toString(10);//返回10<br> 另外一个类似方法,object.valueOf( ) 方法,它返回的是Integer对象。<br> 举例:int-&gt;String<br><wbr><wbr><wbr><wbr><wbr><wbr>int a = 12345;<br><wbr><wbr><wbr><wbr><wbr> String b = String.valueOf(a);//返回12345<br><b>三、类与类之间的类型转换</b><br> 类与类之间的转换只能用在父子类上,不能用在兄弟类,更不能用在根本不相关的两个类之间。子类转换成父类属于自动类型转换,父类转换成子类属强制类型转换。<br><br> 再补充一个例子:</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr>1<wbr>class<wbr>A<wbr>{<br><wbr>2<wbr><wbr><wbr><wbr><wbr>void<wbr>sum(double<wbr>a,<wbr>double<wbr>b)<wbr>{<br><wbr>3<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>System.out.println("a<wbr>+<wbr>b<wbr>=<wbr>"<wbr>+<wbr>(a<wbr>+<wbr>b));<br><wbr>4<wbr><wbr><wbr><wbr><wbr>}<br><wbr>5<wbr>}<br><wbr>6<wbr><br><wbr>7<wbr>class<wbr>B<wbr>{<br><wbr>8<wbr><wbr><wbr><wbr><wbr>public<wbr>static<wbr>void<wbr>main(String<wbr>args[])<wbr>{<br><wbr>9<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>A<wbr>ob<wbr>=<wbr>new<wbr>A();<br> 10<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>ob.sum(10,<wbr>20);//<wbr>两个int型参数<br> 11<wbr><wbr><wbr><wbr><wbr>}<br> 12<wbr>}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>


程序输出:
a + b = 30.0

这里说明在方法调用时发生自动类型转换。A中定义sum(double,double),我在B中调用sum(int,int)方法,但A中不存在此方法。所以Java 将int型扩大到double型,然后调用sum(double,double) 。当然,如果A中定义了sum(int,int) ,当然会调用sum(int,int),而不会调用sum(double,double) 。




热门内容

利用wxwidgets操纵word

最近在学习怎么用wxwidgets来操纵word,寻找之中发现MedeoSoftware,里面有很多wxwidgets的... ...

Python中的简单类型

整数 & 浮点数 整数有两种,分别是 int 和 long。其中 int 最大值是 2147483647... ...

JS-时间函数

/** * 日期范围工具类 */ var daterangeutil = (function () { /** ...
“大数据”信息平台 覆盖社区5000老年人

“大数据”信息平台 覆盖社区5000老年人

突然头疼脑热,身边没人照顾;电灯坏了、水管漏了,该找谁来帮忙修?菊园新区智慧养老项目搭建了一个为老综合服务平台... ...

在PHP中全局变量的使用详解

即使开发一个新的大型PHP程序,你也不可避免的要使用到全局数据,因为有些数据是需要用到你的代码的不同部分的。一些常见的全... ...

名称空间也可以自定义

名字空间的定义 名字空间除了系统定义的名字空间之外,还可以自己定义,定义名字空间用关键字namespace,使用名字空 ...
从量价变化中洞察主力意图

从量价变化中洞察主力意图

成份B指(399003.SZ) <script language="JavaScript" typ... ...
android 继承view类刷新页面【安卓进化十一】

android 继承view类刷新页面【安卓进化十一】

       最近做项目中发现,继承了view类的子类... ...

C# XmlSerializer 对象的Xml序列化和反序列化

    .Net程序执行时,对象都驻留在内存中;内存中的对象如果需要传递给其他系统使用;或者在... ...

hdu-1286找新朋友(欧拉函数,水题)

题目链接: 找新朋友 time limit: 2000/1000 ms (java/others)memory limi ...

java程序 处理 andrid本地帮助文档打开慢的方式

    下载本地的android自带sdk帮助文档由于有被墙的google地址,可以通... ...

RTTI学习笔记

翻看C++的书,对RTTI的讲解都很困惑,"你知道你的对象是哪个类吗","RTTI常用于调试和数据库程序"对这些讲... ...

使用axis2传输附件

服务端Service文件: import java.io.FileOutputStream; import jav... ...

sql server 的行转列

sql server中行转列在sql2005之后,sqlserver引入了pivot运算符,也即是可以旋转行为列,... ...
【Node.js基础篇】(九)使用readline模块实现Node.js的输入输出

【Node.js基础篇】(九)使用readline模块实现Node.js的输入输出

学C++的时候,有cout和cin,Java也有println和Scanner控件,Node.js也有如同... ...
iOS 应用支持4寸屏

iOS 应用支持4寸屏

iPhone 5出了,一大批应用要兼容新的分辨率,下载了Xcode 4.5,在官方那里找不到有关兼容新分辨... ...

循环执行oracle到mysql的迁移步骤及各种注意事项

改章节笔者在北京逛街的时候突然想到的...今天就有想写几篇关于循环执行的笔记,所以回家到之后就奋笔疾书的写出来发表了 ... ...
2015收获的季节

2015收获的季节

—————————————————————前言————————————————————— ———————... ...

JSP中的pageEncoding和contentType属性

关于JSP页面中的pageEncoding和contentType两种属性的区别: pageEncoding是js... ...

对XX证券报关于物联网操作系统的几个问题的答复

XX证券报提问了几个关于物联网和物联网操作系统的问题,个人表达了一些粗陋的观点,在这里发表出来,与行业朋友交流和探... ...
In语句优化

In语句优化

In语句的优化 现有两张表: CLINIC_ORGANISM 数据量:1400 LAB_DRUGRESISTITE... ...
fuzzysearch, 在JavaScript中,快速而快速的模糊搜索

fuzzysearch, 在JavaScript中,快速而快速的模糊搜索

源代码名称:fuzzysearch源代码网址:http://www.github.com/bevacqua/fuzzys ...

SQL Server里的 ISNULL 与 NULLIF

SQL Server 中有两个参数,语法:     ISNULL(check_... ...

判断SD是否存在及其容量查询

这个非常简单,直接上代码: MainActivity: package com.home.getsdinf... ...

Python:如何排序(sort)

一、前言 python的列表(list)有两个排序方法: 一种是内建的list.sort()方法,可以直接改变列表的内容 ...

boost库在工作(5)作用域智能指针scoped_ptr之四

第二种情况,主要就是使用在调用异常抛出的函数的地方。如下面的例子: //异常抛出的函数,适合使用智能指针... ...

Error:couldnotopen`C:\ProgramFiles\Java\jre6\lib\i386\jvm.cfg'

昨天刚过情人节!哈哈,好久没记录学习内容了,今天在房子闲着没事重新安装jdk,按道理很简单的; 第一步下载jdk; ...

第49周二

晚上总结下今天,主要是在完善用户需求文档,同时看了jquery相关的操作技巧,主要是想学习jquery源码,在知乎jqu ...

C++ #include 和 using std::string

今天,偶尔写了一个小小的程序,关于字符串问题程序。 比如,我想连续打印用户输入的字符串。 #include&l... ...

Struts Hibernate Spring 经典面试题

Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建Ses... ...