第二十一篇 Java 数据类型的定义 ,以及基础类型的自动转换和强制转换

大家好,今天呢我吧我所学到的一些知识点共享给大家,希望大家看完之后,要是有什么不懂的,请随时联系我,要是觉得我写的不是很好的 ,还希望你们能够谅解一下,因为小弟我刚学会写博客也没多久,很多格式和方法都不是很完善,希望大家多多包涵,好了 废话就不多说了,来谈一下今天我所学到的一些知识点吧;

今天我主要是学到了一些Java中的数据类型,其中,Java中的数据类型分为俩类------基础数据类和逻辑数据类,下面我所介绍的都是基本数据类的一些分类,至于逻辑类,由于使用次数过少,所以今天就不再这里多做介绍了。

好了,基本数据类里面又包含了8种数据类型,从小到大排列就是,byte / shot / int / long / float / double/   和一些单字符型  char / boolear  总共八种;

至于这八种常用的数据类型的用法,我相信懂一点Java基础的都知道该怎么使用吧,这这里我就不一一向大家介绍了。

回归主题,基础类型的自动转换 和强制转换是什么??? 在一开始接触的时候 我也没弄懂是怎么一回事,但是按照字面上的意思 不就是 简单的 把不同类型 的数值 进行转换一下吗,我是一开始就这样想的,但是到后来我发现我错了,而且错的很离谱,因为这里包含着许多学问,也就是接下来我所说的 自动转换 和强制转换了;

现在来想一下第二个问题,为什么要进行强制转换,可能有很多程序员认为i+=1只是i=i+1的简写方式,其实不然,它们一个使用简单赋值运算,一个使用复合赋值运算,而简单赋值运算和复合赋值运算的最大差别就在于:复合赋值运算符会自动地将运算结果转型为其左操作数的类型。看看以下的两种写法,你就知道它们的差别在哪儿了:

(1) byte i=5;

i+=1;

(2) byte i=5;

i=i+1;

第一种写法编译没问题,而第二种写法却编译通不过。原因就在于,当使用复合赋值运算符进行操作时,即使右边算出的结果是int类型,系统也会将其值转化为左边的byte类型,而使用简单赋值运算时没有这样的优待,系统会认为将i+1的值赋给i是将int类型赋给byte,所以要求强制转换。理解了这一点后,我们再来看一个例子:

byte b=120;

b+=20;

System.out.println("b="+b);

说到这里你应该明白了,上例中输出b的值不是140,而是-116。因为120+20的值已经超出了一个byte表示的范围,而当我们使用复合赋值运算时系统会自动作类型的转化,将140强转成byte,所以得到是-116。由此可见,在使用复合赋值运算符时还得小心,因为这种类型转换是在不知不觉中进行的,所以得到的结果就有可能和你的预想不一样

好了,由于时间关系,今天的知识点到这里又要结束了,而每天的计划和目标又得重新提醒自己一遍了。

1、每天锻炼指法一小时;

2、每天坚持写一篇博客或者日志;

3、每天上课提前十五分钟进教室;

4、每天给自己一句鼓励的话语------学知识只是一块敲门砖,能够让你比别人领先一步进公司,但是当你进去之后就会发现,进来的每个人的知识量都是差不了多少的,所以说在以后的人生路上,还是得看你学会做人的态度。。。。。。。



时间: 2024-08-02 02:50:17

第二十一篇 Java 数据类型的定义 ,以及基础类型的自动转换和强制转换的相关文章

Python开发【第二十一篇】:Web框架之Django【基础】

Python开发[第二十一篇]:Web框架之Django[基础] 猛击这里:http://www.cnblogs.com/wupeiqi/articles/5237704.html Python之路[第十六篇]:Django[基础篇] Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 基本配置 一.创建django程序 终端命令:django-a

第二十一篇 生命的全景

第二十一篇  生命的全景 生命对于我们来讲非常的熟悉,我们身边就有形形色色的生命,我们所生活的这个空间就是生命的空间.然而,就是我们习以为常的生命,却蕴含着极其广泛的意义和无穷的奥秘.就目前我们在宇宙中的能力而言,还无法做到站在生命空间之上的高度去总览全局,还无法对生命进行全面地概括与剖析. 如今,凭我们小宇宙家族现阶段的能力,还没有办法了解生命全部的奥秘,但是,随着我们对生命的不断探索,会有越来越多的生命奥秘被我们认知. 虽说我们对生命的了解还很有局限,但是我们目前的认知水平已经可以探知到:生

第二十一篇:基?于?W?D?M?模?型?的?A?V?S?t?r?e?a?m?驱?动?架?构?研?究

基?于?W?D?M?模?型?的?A?V?S?t?r?e?a?m?驱?动?架?构?研? 这篇论文2006年早就发表, 与当时开发这个驱动正好差不多的时间. 最近实际项目需要, 又回过头来将AVStream中的主要框架列举一下. 整个框架由: KSDevice KSFilter KSPin所构成 KSDevice负责了PNP相关的DISPATCH, 如START, STOP, ADD, REMOVE KSFilter构成软件AVSTREAM设备的DISPATCH, 这就是所谓的FILTER CENT

Java基础——隐式转换vs强制转换

在定义变量时,有许多要注意的问题,一不小心就会出现损失精度或者不兼容类型等问题. 例如: 1.定义长整型数据时,必须加后缀l或L long l =123456789012345L 2.定义单精度类型时(7-8位有效数字),必须加后缀 f 或 F float f = 12.5F 3. boolean类型不可以转换为其它的数据类型. 这其中,我们常常会遇到数据类型的转换问题,最为常见的要属隐式转换和强制转换了,我们来分析一下. 隐式转换 特征: 从小到大,可以隐式转换,数据类型将自动提升. byte

9.Java数据类型转换(自动转换和强制转换)

数据类型的转换,分为自动转换和强制转换.自动转换是程序在执行过程中“悄然”进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换:强制类型转换则必须在代码中声明,转换顺序不受限制. 自动数据类型转换 自动转换按从低到高的顺序转换.不同类型数据间的优先关系如下:     低--------------------------------------------->高     byte,short,char-> int -> long -> float -> do

Java数据类型转换(自动转换和强制转换)

数据类型的转换,分为自动转换和强制转换.自动转换是程序在执行过程中"悄然"进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换;强制类型转换则必须在代码中声明,转换顺序不受限制. 自动数据类型转换 自动转换按从低到高的顺序转换.不同类型数据间的优先关系如下: 低--------------------------------------------->高 byte,short,char-> int -> long -> float ->

Python之路【第二十一篇】Django ORM详解

ORM回顾 关系对象映射(Object Relational Mapping,简称ORM). django中遵循 Code Frist 的原则,即:根据代码中定义的类来自动生成数据库表. 对于ORM框架里: 我们写的类表示数据库的表 如果根据这个类创建的对象是数据库表里的一行数据 对象.id 对象.value 是每一行里的数据 http://www.cnblogs.com/luotianshuai/p/5301343.html 梳理 首先在理解ORM的时候,我们可以把一对多.多对多 分为正向和反

Java数据类型的转换:隐式(自动)转换与强制转换

原文链接:http://java.chinaitlab.com/base/725590.html 简单数据类型之间的转换 简单数据类型由低到高(byte.short.char)< int < long < float< double 简单数据类型转换分为:低级到高级的自动转换:高级到低级的强制转换:包装类过渡类型能够转换: 自动类型转换:直接将低级类型只赋值给高级类型:如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值, 强制类型转换:高级类型赋值给低级

JAVA 类型转换:隐式转换与强制转换

  这篇随笔是对java类型转换的回顾,方便忘记的时候查询,同时希望帮助有这方面需要的朋友 一. 数据类型分类: 简单数据类型:整型.实型.字符型((byte-short-char)-int-long-float-double) 二.简单类型转换 (1)低级向高级转换---自动转换:隐式转换 byte i = 0;        int a =i;        long b = i;        float c =b;        double d =c;        short j =