精华内容
下载资源
问答
  • java自动类型转换

    2021-03-14 12:30:46
    首先自动类型转换都需要满足这个条件:转换后的数据类型的表示范围比转换前的类型大。解释:如下图: 自动类型转换只能顺着箭头的方向转,如果要反着转的话,就需要强制类型转换了。那么在什么情况下会触发自动类型...

    java中,在进行数值运算或赋值时,可能会进行自动类型转换。

    首先自动类型转换都需要满足这个条件:

    转换后的数据类型的表示范围比转换前的类型大。

    解释:

    如下图:

    0818b9ca8b590ca3270a3433284dd417.png

    自动类型转换只能顺着箭头的方向转,如果要反着转的话,就需要强制类型转换了。

    那么在什么情况下会触发自动类型转换呢?

    1.在两个数字相加时或者为一个变量赋值时。

    相加时分两种情况:

    a. int左侧的数值进行计算,会先都转成int,然后进行计算,所以运算结果都是int。

    这是java为了防止溢出做的一个处理。

    如: byte a,b = 1,c = 1;

    char d = 1;

    int result;

    a = b+c;//编译报错

    a = b + d;//编译报错

    a = 1 +2; //不会编译报错. 因为1和2是常量,已经识别他们的结果不会溢出,所以不会被自动转成int.

    a =  1 +127; //编译报错,因为结果128已经超出了

    result = b + c;

    result = b + d;

    b.int以及int右侧在进行计算的时候,会转成计算的两个数中的在上图里更靠右的类型。

    2.赋值的时候

    整数:会根据整数大小来判断。比如如果小于128,就算成byte,如果是赋值给更大的类型的话,就会自动向上转型。

    小数:默认是double,不会再发生向上转型

    如果是123l 则认为是long ,如果是123.1f则认为是float.

    展开全文
  • public class Ch04 {public static void main(String[]args){//自动类型转换//基本数据的自动类型转换只有7种数据类型,除了boolean//基本原则:低级别可以直接转高级别// char//byte->short->int->l...

    自动类型转换规则:

    强制类型转换:

    代码示例:

    package com.jredu.ch02;

    public class Ch04 {

    public static void main(String[]args){

    //自动类型转换

    //基本数据的自动类型转换只有7种数据类型,除了boolean

    //基本原则:低级别可以直接转高级别

    //      char

    //byte->short->int->long->float->double

    //运算时的自动转换条件:1、两种数据类型要兼容,2、目标类型大于原类型

    int a=10;

    double b=1.1;

    b=b+a;

    a=a+(int)b;

    System.out.println(b);//b=11.1

    System.out.println(a);//a=10+11=21

    }

    }

    package com.jredu.ch02;

    public class Ch05 {

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    //强制类型转换

    //高级别转低级别时,必须要进行强转

    //是否强制转换取决于数据类型级别的高低,不取决于数据的实际值。

    int a=330;

    short b=(short)a;

    short c=350;//直接自变量赋值 ,不需要转换类型

    int e=(int)-1.1;

    System.out.print(e); //e=-1

    }

    }

    ---------------------

    作者:xuehyunyu

    来源:CSDN

    原文:https://blog.csdn.net/xuehyunyu/article/details/76216536

    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • 在 Java 程序中,不同的基本数据类型的数据之间经常...自动类型转换要满足以下2个条件:- 两种数据类型彼此兼容。如:double型兼容int型,但是char型不能兼容int型- 目标类型的取值范围大于源数据类型(低级类型数...

    在 Java 程序中,不同的基本数据类型的数据之间经常需要进行相互转换。

    自动类型转换(隐式转换)

    例如:

    f66a978b1cc457a20cd9f309dce56e47.png

    代码中int型变量score1可以直接为double型变量score2完成赋值操作,运行结果为:82.0

    这种转换称为自动类型转换。

    自动类型转换要满足以下2个条件:

    - 两种数据类型彼此兼容。如:double型兼容int型,但是char型不能兼容int型

    - 目标类型的取值范围大于源数据类型(低级类型数据转换成高级类型数据)。如:double类型长度为8字节,int 类型为4字节,因此double类型的变量里直接可以存放int类型的数据,但反过来就不可以了

    b7a0b6d938a03f3fe47534182d5890d5.png 

    4b5894d1e15fcf185bd4b270eeed0482.png

    在运算过程中,由于不同的数据类型会转换成同一种数据类型,所以整型、浮点型以及字符型都可以参与混合运算。自动转换的规则是从低级类型数据转换成高级类型数据。转换规则如下:

    - 数值型数据的转换:byte→short→int→long→float→double。

    - 字符型转换为整型:char→int。

    以上数据类型的转换遵循从左到右的转换顺序,最终转换成表达式中表示范围最大的变量的数据类型。

    71e7e7dd0cc3848896590a140c4b02b1.png运行结果:

    e5ffe7c83605053144e8372b2c022609.png

    从执行结果看出,float、int 和 double 三种数据类型参与运算,最后输出的结果为 double 类型的数据。这种转换一般称为“表达式中类型的自动提升”。

    自动类型提升有好处,但它也会引起令人疑惑的编译错误。例如,下面看起来正确的程序却会引起问题:

    byte b = 50;

    b = b * 2;    // Type mismatch: cannot convert from int to byte

    如上所示,第二行会报“类型不匹配:无法从int转换为byte”错误。

    该程序试图将一个完全合法的byte型的值 50*2 再存储给一个 byte 型的变量。但是当表达式求值的时候,操作数被自动的提升为int型,计算结果也被提升为int型。这样表达式的结果现在是int型,不强制转换它就不能被赋为byte型。

    此时,被赋的值将仍然适合目标类型。所以应该使用一个显式的强制类型转换,例如:

    byte b = 50;

    b = (byte)(b*2);

    这样就能产生正确的值 100。

    注意:char类型比较特殊,char自动转换成int、long、float和 double,但byte和short不能自动转换为 char,char也不能自动转换为byte或short。

    强制类型转换(显式转换)

    尽管自动类型转换是很有帮助的,但并不能满足所有的编程需要。例如:当程序中需要将double型变量的值赋给一个int型变量,该如何实现呢?

    显然,这种转换是不会自动进行的。因为int型的存储范围比double型的小。这种转换为“缩小转换”,因此肯定要将源数据类型的值变小才能适合目标数据类型。

    当两种数据类型不兼容,或目标类型的取值范围小于源类型时,自动转换将无法进行,这时就需要进行强制类型转换。

    语法格式:(type)variableName

    其中,type为variableName要转换成的数据类型,而variableName是指要进行类型转换的变量名称。

    681bbdd9d9d5a1aed404e2a4a5e6a8a7.png运行结果:

    1297efd9c201d502c8d04fbe6860fbd7.png

    上述代码中首先将double类型变量b的值强制转换成int类型,然后将值赋给a,但是变量b本身的值是没有发生变化的。

    在强制类型转换中,如果是将浮点类型的值转换为整数,直接去掉小数点后边的所有数字;而如果是整数类型强制转换为浮点类型时,将在小数点后面补零。

    1c58f87f968fc90e6bad9255e74cfffd.png运行结果:

    bb97ca9b989d6e358320f53ea2aa593d.png

    展开全文
  • 检查了一下sql查询的返回值,居然把所有记录都查出来了,这就更奇怪了 经过各种debug无果,我怀疑mysql和php一样,具有一定的自动类型转换功能 于是我给0加上了单引号,sql语句变为 select * from user where id=...

    我有张表,其主键id字段为varchar(5),内容是5位随机不重复字符串

    表的内容大概是这样的

    idname

    s8bk2

    admin

    9f0ps

    username

    在一个方法中我查询了这张表,代码大概是这样的

    function get($id = 0){

    $q= query(‘select * from user where id=‘.$id);//如果$q内有记录时则显示出来,无记录时显示用户不存在

    }

    我不知道你们有没有看出问题,我当时反正是觉得没问题

    于是代码顺利运行起来。后来发现了一个奇怪的问题,当我不传入id(即$id=0)时,页面总是显示第一位用户的信息,而不是报错说用户不存在

    这就很奇怪了,我的表里既没有id为0的用户,也没有id开头是0的用户,这到底是怎么回事?

    检查了一下sql查询的返回值,居然把所有记录都查出来了,这就更奇怪了

    经过各种debug无果,我怀疑mysql和php一样,具有一定的自动类型转换功能

    于是我给0加上了单引号,sql语句变为

    select * from user where id=‘0‘

    执行之后,bug成功解决

    看来的确如此,我的id字段是字符串型,当我用整数型0作为where条件去与其比对时,字符串id被自动转为整数型,也就成了0。自然就把所有记录都给匹配出来了

    原文:https://www.cnblogs.com/flzs/p/13562129.html

    展开全文
  • c语言中的自动类型转换同一句语句或表达式如果使用了多种类型的变量和常量(类型混用),C 会自动把它们转换成同一种类型。以下是自动类型转换的基本规则:1. 在表达式中,char 和 short 类型的值,无论有符号还是无...
  • 数据类型的转换是在所...隐式转换(自动类型转换)如果以下 2 个条件都满足,那么将一种类型的数据赋给另外一种类型变量的时,将执行自动类型转换(automatic type conversion)。两种数据类型彼此兼容目标类型的取值范...
  • 我刚刚碰到一个有趣的案例,在MySQL中进行数据类型转换.考虑以下查询:SELECT * FROM (SELECT 0 AS col) AS t WHERE t.col=123; #Yields 0 rowsSELECT * FROM (SELECT 0 AS col) AS t WHERE t.col="123"; #Yields 0 ...
  • java类型转换与强制类型转换(转)[@more@]如果你以前有编程经验,那么你已经知道把一种类型的值赋给另外类型的一个变量是相当常见的。如果这2种类型是兼容的,那么Java 将自动地进行转换。例如,把int 类型的值赋给...
  • 数据类型的转换可以分为隐式转换(自动类型转换)和显式转换(强制类型转换)两种。本篇文章由泉州SEOwww.234yp.com 整理发布,Java教程www.234yp.com/Article/198105.html谢谢合作!隐式转换(自动类型转换)如果以下 2 ...
  • (换种说法,就是非基本数据类型都是引用数据类型)二·“基本数据类型”之间的类型转换:(1)自动类型转换**:容量小的类型自动转换为容量大的数据类型。(2)强制类型转换**:容量大的转换为容量小的数据类型三·...
  • Java中,经常可以遇到类型转换的场景,从变量的定义到复制、数值变量的计算到方法的参数传递、基类与派生类间的造型等,随处可见类型转换的身影。Java中的类型转换在Java编码中具有重要的作用。首先,来了解下数据...
  • java基本类型转换规则1、基本数据类型的转换是指由系统根据转换规则自动完成,不需要程序员明确地声明不同数据类型之间的转换。转换在编译器执行,而不是等到运行期再执行。2、基本数据类型的转换在赋值、方法调用和...
  • 一、数据类型1、数据类型分类Java 中数据类型分为两大类:基本数据类型:整数、浮点数、字符型、布尔型引用数据类型(对象类型):类、数组、字符串、接口等。2、基本数据类型四类八种基本数据类型:数据类型关键字...
  • 类型转换

    2021-05-26 05:44:21
    2、当在程序的某处我们使用了一种类型而其实对象应该取另一种类型时,程序会自动进行类型转换,因此它们被称作隐式转换。3、发生隐式转换的情况:1)在大多数表达式中,比int类型小的整型值首先提升为较大的整数类型...
  • 条件1:满足自动类型转换条件 两种类型要兼容: 数值类型(整型和浮点型)互相兼容 目标类型大于源类型: 例如:double 型大于 int 型 条件2:操作数向大操作数类型转换,计算结果也为表达式...
  • Java不需要sizeof()运算符来查看不同类型在不同机器上的大小,因为所有数据类型在所有机器的大小都是相同的。...然而,不是所有的类型都是兼容的,因此,不是所有的类型转换都是可以隐式实现的。例如,...
  • 条件字段函数操作 拿出例子: mysql> CREATE TABLE `tradelog` ( `id` int(11) NOT NULL, `tradeid` varchar(32) DEFAULT NULL, `operator` int(11) DEFAULT NULL, `t_modified` datetime DEFAULT NULL, ...
  • 9.java数据类型转换

    2021-03-09 21:43:09
    java数据类型的转换Java中可以进行不同数据类型的加减乘除运算吗?是可以的。在算术运算符中已经体验过如果两个整数(int)相除会去掉小数部分。...例如5/2.0 其实是5.0/2.01、自动类型转换(也叫隐式类型转换)...
  • 当混合不同类型的变量进行计算时,便可能会发生类型转换相同类型的数据在转换时有规则可循:字符必须先转换为整数(C语言规定字符类型数据和整型数据之间可以通用)short型转换为int型(同属于整型)float型数据在运算时...
  • 数据类型转换目录重要说明:本教程已经搬迁,此处不再维护,请访问新网址:wangdoc.com/javascript。JavaScript 是一种动态类型语言,变量没有类型限制,可以随时赋予任意值。var x = y ? 1 : 'a';上面代码中,变量x...
  • 你已经知道把一种类型的值赋给另外类型的一个变量是相当常见的。如果这2种类型是兼容的,那么Java将自动地进行转换。然而,不是所有的类型都是...让我 们看看自动类型转换和强制类型转换。Java的自动转换如果下列2...
  • C++语言是一种强类型语言,当我们需要用一种类型的对象来替代另一种类型的对象进行相关操作时,必须首先进行类型转换。在C++语言中,类型转换有两种方式,隐式类型转换和显示类型转换。今天我们就来聊一聊这些类型...
  • Java数据类型转换分为两种:1、自动类型提升;2、强制类型转换;先来说说第一种,自动类型提升。发生条件:两种不同的基本数据类型之间进行算术运算,一个操作数的数据类型会自行提升到与另操作数的`数据类型;比如:a ...
  • 隐式类型转换,也称自动类型转换,是指不需要书写代码,由系统自动完成的类型转换。由于实际开发中这样的类型转换很多,所以Java语言在设计时,没有为该操作设计语法,而是由JVM自动完成。 1.2、转换规则 从存储范围...
  • 类型转换_类型提升

    2021-05-22 14:32:17
    如果没有出现强制类型转换,那么简单的自动类型转换规则分为三种: 1)只要两个操作数中出现了char类型或 short 型,首先都将无条件地自动提升为int型。 2)在两个操作数的类型都不是浮点型的情况下,自动进行了第一...
  • JAVA数据类型转换

    2021-02-27 18:20:01
    一、数据的类型转换因程序的需求,数据类型是可以相互转换的,数据类型转换分为两种,第一是隐式转换,第二是显式转换;1、隐式转换转换条件转换场景:在赋值与运算的时候转换条件:右侧的值必须小于声明变量的范围...
  • 匿名用户1级2012-06-21 回答Java 的自动转换如果下列2个条件都能满足,那么将一种类型的数据赋给另外一种类型变量时,将执行自动类型转换(automatic type conversion):1,这2种类型是兼容的。2,目的类型数的范围比...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 213,245
精华内容 85,298
关键字:

发生自动类型转换的条件是什么