精华内容
下载资源
问答
  • java基本数据类型自动转换规则

    千次阅读 2017-08-03 09:38:02
    一、java基本数据类型 Java提供了八种基本类型,其中包括六种数字类型(四个整数型,两个浮点型),一种字符类型和一种布尔型。  整型: short, int, long, byte;  浮点型:float, double;  字符型:char;  ...

    一、java基本数据类型

    Java提供了八种基本类型,其中包括六种数字类型(四个整数型,两个浮点型),一种字符类型和一种布尔型。 
    整型: short, int, long, byte; 
    浮点型:float, double; 
    字符型:char; 
    布尔型:boolean. 
    Java中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或操作系统的改变而改变。



    二、非赋值运算,自动转换规则

    1)布尔型不参与转换

    2)规则: byte/char/short -> int ->  long -> float -> double

    2.1)例子:

    public class Test {
    	public static void main(String[] args) {
    		short a = 1;
    		byte b = 2;
    		char c = 3;
    		
    		//三个输出都是 class java.lang.Integer
    		System.out.println(getType(b+a));
    		
    		System.out.println(getType(b+c));
    		
    		System.out.println(getType(a+c));
    		
    	}
    	
    	public static String getType(Object o){
    		return o.getClass().toString();
    		}
    }
    2.2)规则具体讲解

    (2.2.1)如操作数之一为double,则另一个操作数先被转化为double,再参与算术运算。 
    (2.2.2)如两操作数均不为double,当操作数之一为float,则另一操作数先被转换为float,再参与运算。 
    (2.2.3)如两操作数均不为double或float,当操作数之一为long,、则另一操作数先被转换为long,再参与算术运算。 
    (2.2.4)如两操作数均不为double、float或long,则两操作数先被转换为int,再参与运算。 


    3)对比一下C语言



    三、赋值运算,自动转换规则

    将小范围类型变量转换成大范围类型的变量。Java会自动扩宽类型

    看上面那张图,各个基本数据类型的取值范围都有了,如果一个取值范围包括了另一个的,那么赋值时,小的可以自动转换成大的

    例子:     long d = 333;   float e = d; //可以

    short a = 1; char b = a; //不行,因为取值范围不是包含,而是交叉

    int a = 1; byte b = a; //不行,大的转成小的,要强制类型转换,byte b = (byte) a;


    四、一些值得注意的地方

    当运算符为取正运算符(+)。取负运算符(-)或按位取反运算符(~)时,如果操作数为byte、char或short,则先被转换为int,再参与运算



    展开全文
  • 容量小的数据类型可以自动转换为容量大的数据类型; 容量指的是表数范围而不是字节数; 特例: 可以将整型常量直接赋值给byte、short、char等类型变量,而不需要进行强制类型转换,只要不超过其表数范围。 2....

    1.自动类型转换

    容量小的数据类型可以自动转换为容量大的数据类型;
    容量指的是表数范围而不是字节数;

    这里写图片描述

    图中,黑色实线箭头表示无数据丢失的自动类型转换,而红色虚线在转换时可能存在数据丢失。

    特例:

    可以将整型常量直接赋值给byte、short、char等类型变量,而不需要进行强制类型转换,只要不超过其表数范围。

    2.强制类型转换

    用于显式的转换一个数值的类型

    当将一种类型强制转换为另一种类型而又超出了目标类型的表数范围,就会被截断成为一个完全不同的值,无意义的值!

    强制类型转换:(转换类型)转换的变量 例:(char)(a+2)

    3.表达式中类型提升问题

    在混合多种数据类型的表达式中,类型会向容量大的值的数据类型提升

    4.自动类型转换中的值溢出问题

        int money=100000000;
        int years=20;
        long total=money*years;
        //返回的是负数,因为money和years都是int类型,相乘也为int,但其值超过了int的表数范围,所以溢出。
    
        //错误修改
        long total=(long)(money*years);
        //正确修改
        long total=(long)money*years;
    
        //算一个人70年心跳多少次
        long times=70*60*24*356*70;//溢出
    
        //一般我们优先对第一个数进行类型转换(可能前面就已经溢出)
        long times=70L*60*24*365*70;
    
    展开全文
  • java基本数据类型转换

    万次阅读 2020-07-03 10:39:12
    java基本数据类型转换自动类型转换强制类型转换 自动类型转换 举例:多种不同的数据类型的一起运算 解释:有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那个数据类型,然后再进行计算。 ...

    java基本数据类型的转换

    自动类型转换

    在这里插入图片描述
    举例:多种不同的数据类型的一起运算
    在这里插入图片描述
    解释:有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那个数据类型,然后再进行计算。

    举例:单个字符类型与数据类型的一起运算
    在这里插入图片描述
    解释:ASCII码(上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一的规定。这被称为ASCII码。ASCII码一共规定了128个字符的编码,比如空格"space"是32(二进制00100000)),大写的字母A是65(二进制01000001)
    char类型的数据在数字进行数学运算的时候,它是转换为对应的ASCII码的值然后再进行的计算
    所以也不难理解字符与数值相加的结果是一个数值了。

    举例:字符串类型与数据类型的一起运算
    在这里插入图片描述
    解释:当把任何基本类型的值和字符串进行连接运算的时候(+),基本类型的值将自动转化为字符串类型。
    为了大家加深理解,再看一个例子
    在这里插入图片描述
    解释:前面是纯数字,所以可以相加,但是后又遇见了"hello"字符串,再由加号就是字符串拼接

    在这里插入图片描述

    强制类型转换

    在这里插入图片描述在这里插入图片描述
    数字类型的运算规则:
    ①有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型。然后再进行计算。数字类型的从小到大分别是byte,int,long,float,double.
    ②数字类型的运算中,多个相同类型变量参与的运算,变量要先转换为相对应的数据类型的默认类型(比如两个byte类型的变量相加,会先把两个byte类型的变量转换默认的int类型之后再计算,得到的结果是int类型)。这种情况适用于变量的数据类型的容量比默认类型的容量小,(比如byte,short,都比int小)
    ③byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。

    记录自己最近学习到的东西,做一个总结,希望大家喜欢,一起加油!

    展开全文
  • 小范围类型-->-->大范围类型自动类型转换。 2.大范围类型-->-->小范围类型: 1.若大范围类型的数超出小范围类型的值的范围: 报错,精度会有损失。 2.若大范围类型的数没有超出小范围类型值范围: 1. 若小范围类型...

    首先放出结论:

    1.小范围类型-->-->大范围类型:自动类型转换。

    2.大范围类型-->-->小范围类型:

             1.若大范围类型的数超出小范围类型的值的范围: 报错,精度会有损失。

              2.若大范围类型的数没有超出小范围类型值范围:

                       1. 若小范围类型为byte short char,大范围为int:编译器自动补充强制类型转换。

                       2.其他情况:报错,精度会有损失,需按情况手动补上强制类型转换。

     

    自动类型转换:

    
    当数据类型不一样时,将会发生数据类型转换。
    自动类型转换(隐式)
        1.特点:代码不需要进行特殊处理,自动完成。
        2.规则:数据范围从小到大。
    强制类型转换(显式)
    
    public class Demo01DataType {
        public static void main(String[] args) {
            System.out.println(1024); //这就是一一个整数,默认就是int类型
            System.out.println(3.14); //这就是一个浮点数,默认就是double类型
            //左边是long类型,右边是默认的int类型,左右不一样
            //一个等号代表赋值,将右侧的int常量,交给左侧的long变量进行存储
            // int --> long,符合了数据范围从小到大的要求
            //这一行代码发生了自动类型转换。
            long num1 = 100;    
            System.out.println(num1); // 100
            //左边是double类型,右边是float类型,左右不-样
            // float --> double, 符合从小到大的规则
            //也发生了自动类型转换
            double num2 = 2.5F;
            System.out.println(num2); // 2.5
            //左边是float类型,右边是long类型,左右不一样
            // long --> float, 范围是float更大-一些, 符合从小到大的规则
            //也发生了自动类型转换
    

    强制类型转换:

    强制类型转换
    1.特点:代码需要进行特殊的格式处理,不能自动完成。
    2.格式:范围小的类型  范围小的变量名= (范围小的类型)原本范围大的数据;
    public class Demo02DataType {
        public static void main(String[] args) {
            //左边是int类型,右边是long类型,不一样
            // long --> int, 不是从小到大
            //不能发生自动类型转换!
            //格式:范围小的类型范围小的变量名= (范围小的类型)原本范围大的数据;
            int num = (int) 100L ;
            System.out.println(num) ;
        }
    }
    

     

    1. 强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出。
    2. byte/short/char这三种类型都可以发生数学运算,例如加法“+”.
    3. byte/short/char这三种类型在运算的时候,都会被首先提升成为int类型,然后再计算。
    
    public class Demo02DataType {
        public static void main(String[] args) {
            //左边是int类型,右边是long类型,不一样
            // long --> int, 不是从小到大
            //不能发生自动类型转换!
            //格式:范围小的类型范围小的变量名= (范围小的类型)原本范围大的数据;
            int num = (int) 100L ; .
            System.out.println(num);
            // long强制转换成为int类型
            int num2 = (int) 6000000000L ;
            System.out.println(num2); // 1705032704
            // double --> int, 强制类型转换
            int num3 = (int) 3.99; .
            System.out.println(num3); // 3,这并不是四舍五入,所有的小数位都会被舍弃掉
            char zifu1 = 'A'; //这是一个字符型变量,里面是大写字母A
            System.out.println(zifu1 + 1); // 66,也就是大写字母A被当做65进行处理
            //计算机的底层会用一个数字(二进制)来代表字符A,就是65
            //一旦char类型进行了数学运算,那么字符就会按照一定的规则翻译成为一个数字
            byte num4 = 40; //注意!右侧的数值大小不能超过左侧的类型范围
            byte num5 = 50;
            // byte + byte --> int + int --> int
            int result1 = num4 + num5;
    
    

     

    补充:

    
    对于byte/short/char三种类型来说,如果右侧赋值的数值没有超过范围,那么javac编译器将会自动隐含地补上一个(byte)( short)(char).
    1. 如果没有超过左侧的范围,编译器补上强转。
    2. 如果右侧超过了左侧范围,那么直接编译器报错。
    public class Demo12Notice {
        public static void main(String[] args) {
            //右侧确实是一个int数字,但是没有超过左侧的范围,就是正确的。
            // int --> byte, 不是自动类型转换
            byte num1 = /*(byte)*/ 30; //右侧没有超过左侧的范围
            System.out.println(num1); // 30
            // byte num2 = 128; //右侧超过了左侧的范围
            // int --> char, 没有超过范围
            //编译器将会自动补上一个隐含的(char)
            char zifu = /*(char)*/ 65;
            System.out.println(zifu); // A
    }
    
    

     

    
    在给变量进行赋值的时候,如果右侧的表达式当中全都是常量,没有任何变量,那么编译器javac将会直接将若干个常量表达式计算得到结果。
    short result = 5 + 8; //等号右边全都是常量,没有任何变量参与运算编译之后,得到的.class字节码文件当中相当于[直接就是] :short result = 13;右侧的常量结果数值,没有超过左侧范围,所以正确。
    这称为“编译器的常量优化”。
    但是注意:一旦表达式当中有变量参与,那么就不能进行这种优化了。
    
    public class Demo13Notice {
        public static void main(String[] args) {
            short num1 = 10; //正确写法,右侧没有超过左侧的范围,
            short a = 5;
            short b = 8;
            // short + short --> int + int --> int
            // short result = a + b; //错误写法!左侧需要是int类型
            //右侧不用变量,而是采用常量,而且只有两个常量,没有别人
            short result = 5 + 8;
            System.out.println(result);
            short result2=5+a+8;//18 错误写法,左侧应为int类型
    }
    
    

     

    总结:

    1.小范围类型-->-->大范围类型:自动类型转换。

    2.大范围类型-->-->小范围类型:

                          1.若大范围类型的数超出小范围类型的值的范围: 报错,精度会有损失。

                          2.若大范围类型的数没有超出小范围类型值范围:

                                        1. 若小范围类型为byte short char:编译器自动补充强制类型转换。

                                        2.若小范围类型为 int:报错,精度会有损失。

    展开全文
  • char自动类型转换为int后的值等于65 int强制类型转换为byte后的值等于123 如下图所示
  • 1、Java的8种基本数据类型及其所占空间大小: 基本数据类型 所占空间 boolean 8bit/1byte byte 8bit/1byte char 16bit/2byte short 16bit/2byte float 32bit/4byte int 32bit/4byte long 64bit/...
  • 自动类型转换(默认转换) 把一个范围小的数值或变量直接赋值给另一个数据范围大的变量时,系统可以进行自动类型...自动转换顺序:byte->short->int->long->float->double-> char 这里byte,shor...
  • java的基本数据类型 java的基本数据类型:数值型(又分整数型和浮点型)、字符型、布尔型; 整型:byte(1字节=8bit) \ short(2字节) \ int(4字节) \ long(8字节) ① byte范围:-128 ~ 127 ② 声明long型变量,必须...
  • 我们都知道基本数据类型之间的自动转换遵循“小范围到大范围”,那么大范围的就一定不能自动转向小范围吗?答案是:在一定情况下是可以的。而且在实验中还意外地发现,java在处理算术表达式时,将算术表达式的数据...
  • 1、8种基本数据类型:int long short byte double float boolean char  3种引用数据类型:类,接口,数组 2、boolean类型不能转换成其他的数据类型 ... 容量小的数据类型自动向容量大的数据类型转换,此处的
  • Java基本数据类型与类型转换

    千次阅读 多人点赞 2019-12-10 23:39:00
    本文关键字:8种、基本数据类型、整数类型、浮点类型、字符类型、布尔类型。
  • Java基础-基本数据类型及其转换总结 基本数据类型的大小与范围 如果整型数据在计算的时候结果出现了小数,结果类型默认是double 基本数据类型作为类的属性时的初始值 基本数据类型 初始值 byte 0 short ...
  • 1基本数据类型与对象包装类对应关系 基本数据类型 对象包装类 byte Byte short Short int Integer long Long boolean Boolean float Float double Double char ...
  • java基本数据类型及类型转换

    千次阅读 2017-12-25 21:42:36
    这篇博文中则主要针对基本数据类型进行介绍和了解每种数据类型的特别范围以及针对各个数据类型之间的类型转换。数据类型的分类结构: 基本数据类型 数值型 整数类型(byte, short, int, long) 浮点类型(float...
  • 转载自 Java中的基本数据类型转换自动、强制、提升)   说基本数据类型转换之前,先了解下 Java 中的 8 种基本数据类型,以及它们的占内存的容量大小和表示的范围,如下图所示。 重新温故了下原始数据类型...
  • Java基本数据类型转换与java基本类型转换优先级转换类型1. 自动类型转换: 编译器自动完成类型转换,不需要再程序中编写代码转换规则: 从存储范围小的类型到存储范围大的类型具体规则 : byteàcharàshortàintàlong...
  • package com.jredu.ch02; public class Ch08 { public static void main(String[] args) { // TODO Auto-generated method ...//基本数据类型 ...//包装类型就是把基本数据类型转变成了引用数据类型 //有了
  • Java基本数据类型转换

    2021-03-12 19:59:25
    掌握Java的基本数据类型转换 学习内容: 1、转化规则 在8大基本数据类型中,boolean不属于数值类型,所以不参与转换,其他类型的转换规则如下。一般的来说(byte、short、char)是平级的,这三种类型相互之间不参与...
  • 基本数据的自动类型转换只有7种数据类型,除了Boolean类型 // 基本原则:低级别可以直接转高级别 // byte -> short/char -> int -> long -> float -> double //运算时的自动转换条件: //1.两种数据...
  • Java的基本数据类型转换

    千次阅读 2015-06-17 06:59:48
    基本数据类型对大多数业务相关或网络应用程序没有太大的用处,这些应用一般是采用客户端/服务器模式,后端有数据库。但是,基本数据类型对以数值计算为主的应用程序来说是必不可少的。 自从1996年Java发布以来,...
  • 8种基本数据类型转换

    千次阅读 2019-07-25 08:18:29
    8种基本数据类型
  • java 基本数据类型自动类型提升

    千次阅读 2016-04-30 17:49:43
    1.Java的8种基本数据类型及其所占空间大小: boolean 8bit/1byte byte 8bit/1byte char 16bit/2byte short 16bit/2byte float 32bit/4byte int 32bit/4byte long 64bit/8...
  • 当容量小的数据类型变量与容量大的数据类型变量做运算时,结果自动提升为容量大的数据类型 即 容量小的数据类型变量+容量大的数据类型变量=容量大的数据类型变量 byte→short→int→long→float→double 说明:此时...
  • 所以我们今天就来复习一下java基本数据类型之间的转换。 首先我们可以先来看这么一张图: 基本数据类型之间的转换 隐式转换:从表示范围小的类型转换为表示范围大的类型,可以直接转换,称为隐式转换。 隐式...
  • 关于基本数据类型转换规则

    千次阅读 2013-07-19 16:34:48
    关于基本数据类型转换规则: 1. 8种基本数据类型除boolean类型之外都可以相互转换. 2. 小容量向大容量转换叫做自动类型转换: byte  char 3. byte,short,char做混合运算的时候,各自都先转换成int在做运算 ...
  • 在Java中,boolean类型与所有其他7种类型都不能进行转换,这一点很明确。...java中8种基本数据类型看这里:java有哪8种基本数据类型 转换分为自动转换和强制转换。对于自动转换(隐式),无需任何
  • 字符串与其他数据类型之间的转换
  • 基本数据类型转换与引用类型转换

    千次阅读 2018-08-03 00:02:22
    java中的数据类型分为基本数据类型和引用数据类型。 基本数据类型分为四类八种,分别是: 整数类型:btyte ,short,int,long 浮点型:float,double 字符型:char ...基本数据类型转换 隐...
  • JS数据类型之基本数据类型

    万次阅读 多人点赞 2019-06-28 16:46:43
    1.JavaScript(以下简称js)的数据类型分为两种:原始类型(即基本数据类型)和对象类型(即引用数据类型); 2.js常用的基本数据类型包括undefined、null、number、boolean、string; 3.js的引用数据类型也就是...
  • 一、自动类型转换(隐式类型转换) 整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。...1.小类型自动转换为大类型 byte byteValue1=110; int intValue1=byt...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 526,117
精华内容 210,446
关键字:

基本数据类型自动转换