美文网首页
Java类型转换

Java类型转换

作者: 夜阑w | 来源:发表于2019-02-18 12:29 被阅读0次

一、值类型与引用类型

值类型:

在Java中,值类型表示的是这种数据类型的值代表数据本身。八种基本数据类型就是值类型,基本数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面。

引用类型:

引用类型是通过class来定义的类型,除了八种数据类型之外的所有类型都是引用类型。引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值是存储在内存堆上的。

传递

  • 值传递:基本数据类型的赋值都属于值传递,值传递传递的是实实在在的变量值,是传递原参数的备份,值传递后,实参传递给形参的值,形参发生改变不影响实参。
  • 引用传递:引用传递传递的是地址,形参改变会改变实参变量的值。

二、自动类型转换

1、基本数据类型

从低位类型到高位类型可以自动转换,从高位类型到低位类型需要强制类型转换,另外,目标类型需能与源类型兼容。

  • 布尔型和其它基本数据类型之间不能相互转换;
  • char可转换为int、long、float和double,其他类型不能转换为char;
  • 其他六种类型从低到高的排序为:byte、short、int、long、float、double;
  • 算术运算中,基本会先转换为高位数据类型,再参加运算,结果也是最高位的数据类型。
public class Test {
    public static void main(String[] args) {
        int price = 3;
        double finalPrice = price;
        System.out.println(finalPrice);
        System.out.println(price+finalPrice);
        /*输出结果:
        3.0
        6.0*/
    }
}

特殊情况:

  • 如采用+=、*=等缩略形式的运算符,系统会自动强制将运算结果转换为目标变量的类型。
  • 当运算符为自动递增运算符(++)或自动递减运算符(--)时,如果操作数为byte,short或char,类型不发生改变;

2、引用类型

  • 基本类型与对应包装类可自动转换,这是自动装箱和拆箱的原理。
  • 子类能直接转换为父类或接口类型: 子类就是父类。
Animal cat = new Cat();
  • 父类转换为子类要强制类型转换;且在运行时若实际不是对应的对象,会抛出ClassCastException运行时异常。

三、强制类型转换

1、基本数据类型

语法:( 数据类型 ) 数值

public class Test {
    public static void main(String[] args) {
        double finalPrice = 3.25;
        int price = (int)finalPrice;
        System.out.println(price);
        //输出结果:3
        //损失了部分数据
    }
}

2、引用类型

语法与上述相同,需要注意若转换后在运行时实际不是对应的对象,会抛出ClassCastException运行时异常。

Animal animal = new Cat();
Cat cat = (Cat)animal;

相关文章

  • JAVA基础第四天

    JAVA数据类型---布尔类型; 数据类型转换自动数据类型转换 强制数据类型转换

  • Java强制类型转换

    Java强制类型转换 语法:“(”+“目标类型”+“)”+“想要转换的值”; 例如: 结果 9 Java中如果将...

  • 8、MyBatis自定义TypeHandler

    TypeHandler是MyBatis的类型转换器,用于java类型和数据库类型的转换,如java类型是jva.u...

  • 2018-07-17

    JAVa的变量类型和类型转换

  • Java中必须了解的常用类

    学习了解# Java中的包装类 Java中基本类型和包装类型之间的转换 Java中基本类型和字符串之间的转换 使用...

  • Java基础知识2

    Java基础知识2 类型转换 由Java是强类型语言 所以要进行有些运算的时候 需要用到类型转换 低 ------...

  • 类型转换

    由于java是强类型语言,所以要进行有些运算的时候,需要类型转换 从左到右是自动类型转换,从右到左是强制类型转换。...

  • java数据类型

    1、整型拓展 2、浮点数 3、类型转换 java强制类型转换和自动类型转换。自动类型转换是程序执行过程中自动进行转...

  • Java数据类型转换

    Java的类型转换可分为基本类型和引用类型的数据转换。 基本类型的转换 类型转换主要在赋值、方法调用、算术运算三种...

  • 第二章 java基础(类型转换符一)

    —— 本文参照 Learn Java for Android Development (第三版)类型转换符类型转换...

网友评论

      本文标题:Java类型转换

      本文链接:https://www.haomeiwen.com/subject/qnxaeqtx.html