关于Java中转换机制整理

下面是最基本的数据类型比较。

说明几点:

1.也可以分为两大类:boolean类型和数值类型(主要为了数据转换时用)

(注意boolean不能与其他类型转换,把boolean赋予一个int等类型是不可以的)

2.String字符串并不是基本数据类型,字符串是一个类,就是说是一个引用数据类型。

3.若还需要用更高精度的浮点数,可以考虑使用BigDecimal类。

4.Java提供了三个特殊的浮点数值:正无穷大、负无穷大和非数,用于表示溢出和出错。例如使用一个正浮点数除以0将得到正无穷大(POSITIVE_INFINITY);负浮点数除以0得到负无穷大(NEGATIVE_INFINITY)。0.0除以0.0或对一个负数开方得到一个非数(NaN)。(都属于Double或Float包装类)

5.所有正无穷大数值相等,所有负无穷大数值都是相等;而NaN不与任何数值相等。

一、基本数值型类型的自动类型转换

这种很好理解,就是在基本类型中(boolean除外),可以系统自动转换把范围小的直接赋予范围大的变量。

一般是实行如下转换,不用特别标记

char → int → long → float → double

byte→short

public class AutoConversion
{
    public static void main(String[] args)
    {
       int a = 6;
       float f = a;//int可以自动转为float
       
       byte b = 9;
       char c = b;//出错,byte不能转为char型
       double d = b;//byte 可以转为double
       
     }
 }

PS:有一种比较特殊的自动类型转换,就是把基本类型(boolean也行)和一个空字符连接起来,可以形成对应的字符串。

public class Conversion
{
  public static void main(String[] args)
  {
	 boolean b = true;
	 String str = b + "";
	 System.out.print(str);//这里输出true
	 }
}

二、强制类型转化

上面的自动类型只能把表数范围小的数值转化为大的,如果没有显性表示把大的转为小的,会发生编译错误。

public class Conversion
{
  public static void main(String[] args)
  {
	 int b = 233;
	 byte c = (byte)b;//强制把一个int转为byte类型
	 System.out.println(c);//输出-23
	 
	 float a = 5.6;//错误,因为5.6默认是double类型
	 float a = (float)5.6;//正确,要进行强制转化
	 
	 double d = 3.98;
	 int e = (int)d;//强制把一个double转为int类型
	 System.out.println(e);//输出3
	 }
}

像上面一样,要执行表数大的范围转为小的,需要显性声明,若强制转化后数值过大,会造成精度丢失。

三、字符串(String)转换为基本类型

通常情况下,字符串不能直接转换为基本类型,但通过基本类型对应的包装类可以实现。

每个包装类都会有提供一个parseXxx(String str)静态方法来用于字符串转换为基本类型

      Sting a = "45";
      //使用Integer的方法将一个字符串转换为int类型
      int iValue = Interger.parseInt(a);
      //boolean比较特殊,仅在字符串为true的情况下为true,其他为false
      boolean b = Boolean.valueOf(a);

四、将基本类型转换为字符串(String)

每个包装类都带有一个toString的方法,比如Double.toString(double d)等,可以转换为String字符串。

五、基本数据类型和包装类的转换

基本数据类型 包装类
boolean Boolean
char Character
byte Byte
short Short
integer Integer
long Long
float Float
double Double

下面示例两者之间的互相转换

int i = 1;
Integer iWrap = new Integer(i);//包装

int unWrap = iWrap.intValue();//解包装
时间: 2024-12-15 01:57:12

关于Java中转换机制整理的相关文章

java中反射学习整理

转载请注明:http://blog.csdn.net/j903829182/article/details/38405735 反射主要是指程序可以访问,检测和修改它本身的状态或行为的一种能力. java中反射是一种强大的工具,它能够创建灵活的代码,这些代码可以在运行时装载,无须在组件之间进行链接.反射允许在编写与执行时,使程序能够接入到jvm中的类的内部信息,而不是源代码中选定的类协作的代码.这使反射成为构建灵活应用代码的主要工具.需要注意的是,如果使用不当,反射的成本会很高. package

Java中反射机制(Reflection)研究及源码演示

如下内容内容是关于 Java中反射机制(Reflection)研究及演示的内容. package com.jiangqq.reflection; import java.lang.reflect.Method; public class Reflection1 { public static void main(String[] args) throws Exception { Class<?> tClass = Class.forName("java.lang.Class"

Java中JIN机制及System.loadLibrary() 的执行过程

Android平台Native开发与JNI机制详解 http://mysuperbaby.iteye.com/blog/915425 个人认为下面这篇转载的文章写的很清晰很不错. 注意Android平台上的JNI机制使用包括Java代码中调用Native模块以及Native代码中调用Java模块. http://www.ophonesdn.com/article/show/263(misybing:很遗憾该站已经挂掉) 众所周知,OPhone平台上的应用开发主要基于Java语言,但平台完全支持且

java加载机制整理

本文是根据李刚的<疯狂讲义>作的笔记,程序有的地方做了修改,特别是路径,一直在混淆,浪费了好多时间!!希望懂的同学能够指导本人,感激尽............ 1.jvm 和 类的关系 当调用 java命令运行一个java程序时,必会启动一个jvm即java虚拟机.(5.6.处有联系!!)该java程序的所有线程,变量都处于jvm中,都使用该jvm的内存区 jvm终止的情况:1.程序自然运行结束2.遇到System.exit();Runtime.getRuntime.exit();3.遇到未捕

java垃圾回收机制整理

一.垃圾回收器和finalize() java垃圾回收器只负责回收无用对象占据的内存资源.但是如果你的对象不是通过 new 创建的(所有的new 对象都往堆中开辟资源,在一个地方,方便清理/管理资源),它会不知道该如果释放该对象的这块特殊内存.为了应对这个情况,Object自带一个finalize()方法. finalize()这方法的原理是:一旦垃圾回收器准备释放该对象占用的存储空间,将会先调用其继承/重写的fialize(),并且调用方法后不是立即执行回收,而是在下一次(JVM觉得需要更大内

Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别(转)

一.Java的反射机制   每个Java程序执行前都必须经过编译.加载.连接.和初始化这几个阶段,后三个阶段如下图:  其中 i.加载是指将编译后的java类文件(也就是.class文件)中的二进制数据读入内存,并将其放在运行时数据区的方法区内,然后再堆区创建一个Java.lang.Class对象,用来封装类在方法区的数据结构.即加载后最终得到的是Class对象,并且更加值得注意的是:该Java.lang.Class对象是单实例的,无论这个类创建了多少个对象,他的Class对象时唯一的!!!!.

Java 中反射机制的深入研究

昨天学习了java的反射机制,今天继续深入学习一下. 一.通过反射操作数组 反射不光只能用在类中,也可用在任意的引用数据类型上.当然包括数组. 通过java.lang.reflect.Array 类 可操作数组,java.lang.reflect.Array 类 下面提供了很多方法. 例如 public static Object get(Object array,int index)throws IllegalArgumentException,ArrayIndexOutOfBoundsExc

java中的IO整理

写在前面:本文章基本覆盖了java IO的全部内容,java新IO没有涉及,因为我想和这个分开,以突出那个的重要性,新IO哪一篇文章还没有开始写,估计很快就能和大家见面.照旧,文章依旧以例子为主,因为讲解内容的java书很多了,我觉的学以致用才是真.代码是写出来的,不是看出来的. 最后欢迎大家提出意见和建议. [案例1]创建一个新文件 1 2 3 4 5 6 7 8 9 10 11 import java.io.*; class hello{     public static void mai

Java中反射机制详解

序言 在学习java基础时,由于学的不扎实,讲的实用性不强,就觉得没用,很多重要的知识就那样一笔带过了,像这个马上要讲的反射机制一样,当时学的时候就忽略了,到后来学习的知识中,很多东西动不动就用反射,所以回过头来把这个给重新补一下,自己欠下的债,迟早是要还的. ---WH 一.什么是反射? 在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的方法的功能就称为java语言的