java为什么可以类型转换

问题描述

这是一个空绕我很久的问题。为什么可以类型转换?两个类可以类型转化的必要条件是什么?转换时内存空间如何发生转变? 问题补充:liveHappy 写道

解决方案

一、简单数据类型间的转换两种数据类型相互转换首先要类型兼容。根据目的数据类型的范围与原数据类型的范围,将类型转换分自动类型转换(放大转换)和强制类型转换(缩小转换)。 举一个例子:把一个小的东西放到一个大的盒子里,是件非常容易的事,不用做任何改变,在这里理解成自动转换。若把一个大的东西放到一个小的盒子,那就要对这个东西做些舍弃,加工一下,强制把它放进小盒子里,可理解成强制类型转换。byte->short->int->long->float->double这样的顺序是属于放大且自动类型转换,反过来就属于缩小且强制类型转换。类型转换发生的时机:1)赋值运算2)算术运算3)方法调用自动类型转换举例(int类型自动转换成float类型): int i=7; float j=1.0f; float sum=i+j;//返回8.0强制类型转换举例(float类型强制转换成int类型): int i=2; float j=1.0f; int sum=(int)(i+j);//返回3注:char可以自动类型转换成int。二、字符串与其它数据类型的转换1)从Integer类对象中把数据以int类型取出方法有两个:类级别的“parseInt”、对象级别的“intValue”。intValue不需要任何参数,直接调用,前提必须有Integer类对象。 如只想把字符串类型的数字转换成int类型数字,可以直接使用parseInt方法。 intValue方法可以用来取得Integer对象所存放的int数值,也可以通过类似的方法来转换其他的基本数据类型,boolean,char除外。byte,short,long,float,double分别对应方法byteValue,shortValue,longValue,floatValue,doubleValue。举例:String->int Integer s = new Integer(str); int s1=s.intValue(); int s1=Integer.parseInt(str);2)和parseInt相反的是"toString"这个方法,这个方法是对象级别的,即将对象转换成字符串。当使"+"运算符将对象同一字符串连接,Java编译器会自动调用"toString"方法。举例:int->String Integer.toString(10);//返回10另外一个类似方法,object.valueOf( ) 方法,它返回的是Integer对象。举例:int->String int a = 12345; String b = String.valueOf(a);//返回12345三、类与类之间的类型转换类与类之间的转换只能用在父子类上,不能用在兄弟类,更不能用在根本不相关的两个类之间。子类转换成父类属于自动类型转换,父类转换成子类属强制类型转换。 再补充一个例子: 1 class A { 2 void sum(double a, double b) { 3 System.out.println("a + b = " + (a + b)); 4 } 5 } 6 7 class B { 8 public static void main(String args[]) { 9 A ob = new A();10 ob.sum(10, 20);// 两个int型参数11 }12 }程序输出: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) 。
解决方案二:
大转小,是直接切一部分 不用生成新的对象 在原来的基础上转换
解决方案三:
比如:long a = 1000;int b = (int)a;那么a的大小没有变化。而b是新分配的,你把a强制给b,b其实还是Int所占的大小而已。只不过就是你声明b的时候分配了一个空间而已。
解决方案四:
数据类型之间的转换 充其量还是在基本数据类型之间数字类型的我想不用说了 低级可以直接转换为高级 他们都用一定的长度把字符型变量转换为数值型变量实际上是将其转换成对应的ASCII码类与类直接的 无非还是基本数据类型的封装面向对象 对象中放的什么?类成员是什么类型的?自己可以理解一下

时间: 2024-08-04 04:13:59

java为什么可以类型转换的相关文章

java 时间运算 类型转换

问题描述 java 时间运算 类型转换 获得当前时间(yy-MM-dd HH-mm-ss)t1,每天规定时间t2(HH-mm-ss) t1与t2相减运算得到int类型的数据结果 解决方案 Date().getTime() 就能将时间转为数字,我感觉你想做定时器..相见java Timer类

java类型转换-java中的类型转换问题

问题描述 java中的类型转换问题 ①ClassCastException②错误:不兼容的类型 这两有什么区别?如何判断何种情况下跑出哪一个呢? 解决方案 既然是Exception,编译的时候肯定发现不了啦.只能程序跑的的时候抛出.一般都是因为使用父类或者接口类型做变量的类型的时候在进行转型时候发生 例如 Object obj = factory.createString()在应用的时候却用 Integer it = (Integer)obj ②错误:不兼容的类型首先编译的时候可以发现这个错误的

类型转化-java关于上溯类型转换

问题描述 java关于上溯类型转换 public class Test { public static void main(String[] args) { A a = new B(); B b =(B)a; System.out.println(a); System.out.println(b); System.out.println(a.a); System.out.println(b.a); System.out.println(a.show()); System.out.println(

浅谈Java中强制类型转换的问题_java

为了更好的理解我们先看下面的例子: package com.yonyou.test; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * 测试类 * @author * @创建日期 2016-5-31 */ public class Test{ public static void main(String[] args) { List<String> list=new Array

java的各种类型转换全部汇总(推荐)_java

java类型转换 Integer String Long Float Double Date 1如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([String],[int radix]); 2). int i = Integer.valueOf(my_str).intValue(); 注: 字串转成 Double, Float, Long 的方法大同小

浅谈Java中的类型转换

要说类型转换,首先要说一说java的数据类型.java中的数据类型分为两种:基本类型.引用类型.基本数据类型没有什么好说的byte char short int long float double boolean,这些类型除了boolean之外,其他的与C语言中的类型没有太大的区别.因为这篇文章的论题是类型转换,所以在此不讨论boolean值的用法. 下面要说的是引用类型.引用在有的书里也叫做句柄,它很类似C/C++中的指针,但要注意引用和指针并不是同一个概念.指针是一个存放地址的变量,他使C/

Java基础12 类型转换与多态

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   我们之前使用类创造新的类型(type),并使用继承来便利我们创建类的过程.我将在这一讲中深入类型,并介绍多态(polymorphism)的概念.   类型检查 Java的任意变量和引用经过类型声明(type declaration),才能使用.我们之前见过对象数据.类数据.方法参数.方法返回值以及方法内部的自动变量,它们都需要声明其类型.Java是一种强类型(strongly

Java的数据类型转换

1.Java的简单类型及其封装器类 1.1Java简单类型与封装类 我们知道,Java语言是典型的支持面向对象的程序语言,但考虑到有些基本数据类型的 结构简单,占内存小且存取速度快等优点,Java依然提供了对这些非面向对象的简单数据类 型的支持.当然,Java在提供大量的其它类时,也提供了与简单数据类型对应的封装类,于 是,Java中就有了诸如int和Integer(float和Float.double和Double--) 的不同的数据类型. Java语言的数据类型有两大类:一类是简单类型,也称

java-关于Set的类型转换(Java)

问题描述 关于Set的类型转换(Java) 这里是一个Courses类,Student类和SetTest类, 其中SetTest类中用List存储可选课程,再把选到的课程存储到Student类定义的Set对象中 为什么我在SetTest类中foreach循环Set对象会提示转换不了Courses类型,我在Student类已经设置了类Set 求大神讲解!!!!小弟才疏学浅啊!! 解决方案 因为你的Student的getCourses方法没有指定泛型类型,修正填上泛型就可以了: public Set