数据类型总结(干货)

Java中的数据类型和C++的数据类型基本是一致的,本来以为不需要怎么看,后来发现还是有些地方需要好好总结一下。

基本的就不说了,直接上干货。

我总结了下,数据类型的转换和赋值有以下几点是比较麻烦的:

1、整数直接量可以直接赋值给byte,short,char,但不能超出范围。

1 byte   a1=127;//编译正确
2 byte   a2=128;//会报错 Type mismatch: cannot convert from int to byte        
3 short  a3=32767;//编译正确
4 short  a4=32768;//会报错 Type mismatch: cannot convert from int to short
5 char   a5=65535;//编译正确
6 char   a6=65536;//会报错 Type mismatch: cannot convert from int to char

从上面可以看出,证书直接量只要不超过byte、short、char的范围,是可以直接对其进行赋值的。值得注意的是,char和short虽然都是16位,但是char是无符号,范围为0~65535,而short是有符号,范围为-32768~32767。

2、同种类型的变量互相赋值,即使赋值右侧值是超出其数据类型范围的,编译器同样不会报错,而是会截取低位。

1 byte a1=127;
2 byte a2=(byte)(a1+1);
3 System.out.println(a2);

以上代码运行结果为-128.原因是127+1=128超出了byte的范围-128~127,作为一个闭环,127后面一个数应该是-128。(实际上就是再加1,位数不够了,重新截取后为128,不过是补码)

至于为什么要在a1+1之前用byte,后面会有总结。

3、不同种类的变量互相赋值,小的数据类型会自动转换为大的数据类型,数据类型从小到大依次为:byte<short(char)<int<long<float<double,其中short和char由于都是两个字节,因此其数据类型的大小是相同的。还有一点需要提一点的是,第2点同样适用于第三点,赋值右侧的值超出左侧数据类型的范围,编译器不会报错,而是会截取低位。

1 byte   byteType=100;
2 short  shortType=byteType;
3 int    intType=shortType;
4 long   longType=intType;
5 float  floatType=longType;
6 double doubleType=floatType;

上述代码都是正确的,都是从小类型自动转换为大类型。

但是!!!

1 char  charType=byteType;//报错 Type mismatch: cannot convert from byte to char
2 charType=shortType;//报错 Type mismatch: cannot convert from short to char
3 shortType=charType;//报错 Type mismatch: cannot convert from char to short
4 intType=charType;//编译正确

可以看出,char在自动转换过程是有特殊情况的,byte数据类型虽然没有char数据类型大,但是它不能自动转换,char和short一样大,也不能进行自动转化,char继续往上就可以自动转换了。

4、byte,short,char型数据参与运算时,先一律转换为int再运算

1 byte  a1=100;
2 byte  a2;
3 a2=100*1;//编译正确
4 a2=100*6;//报错 Type mismatch: cannot convert from int to byte
5 a2=a1+1;//报错 Type mismatch: cannot convert from int to byte
6 a2=(byte)(a1+1);//编译正确

从第3行和第4行可以看出,当赋值侧右侧为直接量的运算,那么右侧仍然算直接量,那么规则和1一样,只要不超出赋值左侧范围即可。

当赋值侧右侧有变量参与运算,那么无论是+-*/,都会先将运算符两侧的数据转换为int再进行运算,得到的结果也自然是int,当把int转换为byte、short或者char时,自然需要强制转换。

转载于:https://www.cnblogs.com/haojiejiejie/p/8583598.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机主机信息怎么看,本机电脑硬件配置信息怎么看?Win7/Win10查看详细电脑配置方法...

电脑配置决定了一台电脑的性能好坏&#xff0c;如果电脑配置没有达到游戏或者软件的要求&#xff0c;那么肯定无法流畅运行的。对于一些小白用户不知道如何查看电脑硬件配置&#xff0c;那么本机电脑硬件配置信息怎么看&#xff1f;下面装机之家小编分享一下Win7/Win10查看详细…

软件工程网络15个人阅读作业2(201521123024丁树乐)

提出问题 question1.我看到书P27中写到“100%的代码覆盖率并不等同于100%的正确性”那么怎么样去确保100%的正确性&#xff1f; 写代码注意结构和代码规范&#xff0c;注释要写全&#xff0c;代码尽量精简&#xff0c;不要一坨坨的堆在一起。 在目前行业内的成熟方案有如下几个…

Uva 1025 - A Spy in the Metro(DP)

题目链接 https://vjudge.net/problem/UVA-1025 【题意】 某城市里的地铁是线性的&#xff0c;有n个车站&#xff08;2<n<50&#xff09;&#xff0c;有M1辆列车从第1站从左往右开&#xff0c;有M2辆列车从第n站从右往左开&#xff0c;在0时刻间谍从第一站出发&a…

未来计算机控制器趋势,未来DCS控制系统技术发展4大趋势

DCS系统是继PLC之外的一大自动化控制系统&#xff0c;它在化工、火电等领域的应用极为广泛&#xff0c;但是生产方面的自动化技术需求进一步提高&#xff0c;传统的DCS系统已不能满足需要&#xff0c;需要进行技术升级。DCS系统由多台计算机分别控制生产过程中多个控制回路&…

《Java技术》第一次作业

&#xff08;一&#xff09;、学习总结 1.在java中通过Scanner类完成控制台的输入&#xff0c;查阅JDK帮助文档&#xff0c;Scanner类实现基本数据输入的方法是什么&#xff1f;不能只用文字描述&#xff0c;一定要写代码&#xff0c;通过具体实例加以说明。 文本扫描类Scanner…

计算机主机开机为什么显示器不开,电脑开机后显示器不亮怎么办?电脑开机后显示器没反应的解决办法...

电脑开机后显示器不亮怎么办&#xff1f;电脑开机故障屡见不鲜&#xff0c;最近又有用户反馈开机问题了&#xff0c;一用户反馈说&#xff0c;电脑主机是可以正常开机的&#xff0c;但就是显示器不亮&#xff0c;这是怎么回事呢&#xff1f;出现这种情况可能是显示器或主机故障…

斯坦福-随机图模型-week4.0_

title: 斯坦福-随机图模型-week4.0 tags: note notebook: 6- 英文课程-9-Probabilistic Graphical Models 1: Representation --- 斯坦福-随机图模型-week4.0 最大期望收入模型 简答的决策 我们使用随机图模型进行决策需要的原料是什么ne ? 我们需要决策的情景一些列的可能的行…

西北农林科技大学计算机老师 癌症,西北农林科大攻克苹果树“癌症”

由西北农林科技大学主持完成的“苹果树腐烂病等重大病害生物学及防治技术研究”项目&#xff0c;12月12日在陕西杨凌农科城通过鉴定。鉴定委员认为该成果在苹果树腐烂病菌、轮纹病菌的生物学基础研究方面达到了国际领先水平。我国苹果栽培面积和产量分别占世界总量的2/5和1/3&a…

计算机行业哪个会议论文最好,《第三次全国电子计算机专业学术会议论文选集》...

1964年12月&#xff0c;国防工业出版社出版了《第三次全国电子计算机专业学术会议论文选集》(以下简称《选集》)&#xff0c;由中国电子学会计算机专业委员会编辑&#xff0c;《选集》内容覆盖之广令人震惊。《选集》的内容表达了1961年以来国内计算技术在理论与实际方面的工作…

maven运行tomcat6出现错误Exception starting filter encodingFilter怎么解决

严重: Exception starting filter encodingFilterjava.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filterat org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.j…

windows系统OLLVM + NDK 混淆编译环境搭建

一、环境搭建&#xff1a; 系统&#xff1a;win10_X64 ndk版本&#xff1a;ndk-r12b&#xff08;ndk-r12b后续版本也适用&#xff09; cmake-3.9.1-win64-x64.msi 用于针对不同编译器生成源代码构建文件&#xff0c;如使用VS则生成(.sln)等VS配置文件&#xff0c;如果使用gcc则…

计算机组成实验微程序控制器实验,计算机组成原理实验报告3++微程序控制器实验.doc...

文档介绍&#xff1a;计算机组成原理实验报告3微程序控制器实验计算机组成原理实验报告实验三微程序控制器实验一.实验目的与要求:实验目的:1.理解时序产生器的原理,了解时钟和时序信号的波形;2.掌握微程序控制器的功能,组成知识;3.掌握微指令格式和各字段功能;4.掌握微程序的编…

展开符和解构赋值

一、展开符展开符(剩余操作符)&#xff1a;...1.展开符号use strict; let arr_one [1,3]; let arr_two [4,5,...arr_one]; console.log(arr_one);//[ 1, 3 ] console.log(...arr_one);//1 3 console.log(arr_two);//[ 4, 5, 1, 3 ]2.剩余操作符&#xff08;类似arguments&…

a开头的计算机语言,我们刚开始接触计算机语言大多从Hello world 开始

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼char szClassName[] "MainWnd";HINSTANCE hInstance;int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){HWND hwnd;MSG msg;WNDCLASSEX wincl;hInstance hInst;wincl.cbS…

2.1 linux C 进程与多线程入门--(1)进程和程序的区别

进程和程序的区别: j进程是活动的程序&#xff0c;而程序是一个代码的集合。进程是加载到内存中的程序&#xff0c;而程序没有加载到内存中&#xff0c;只是在磁盘上存储着。 1234567891011121314151617181920212223242526272829303132#include<sys/types.h>#include<…

计算机一级表格样式在哪儿,word表格样式在哪 word表格样式在哪里

word2007中设置好正文样式怎样设置表格样式1. 打开word(以2007为例)【开始】--> 【样式】&#xff0c;打开样式右下角的小箭头&#xff0c;或者alt shift ctrl S&#xff0c;打开全部式样 2. 在全部式样里&#xff0c;选择你要改的类型&#xff0c;点击该类型右边的下拉箭…

day11_用例执行顺序、跳过用例skip用法

用例执行顺序是按照test后面的字母排序进行的&#xff0c;字母靠前先执行&#xff0c;靠后后执行 import unittestclass My(unittest.TestCase): def test_a(self): print(haha) def test_z(self): print(哈哈哈哈)unittest.main() unittest提供了一些跳过…

计算机一级13点,2013年计算机一级考试MsOffice备考题及答案(13)

(11) 在操作系统中&#xff0c;文件管理的主要功能是A、实现文件的虚拟存取B、实现文件的高速存取C、实现文件的按内容存取D、实现文件的按名存取参考答案&#xff1a; D(12) 下列WINDOW 95桌面上图标的叙述中&#xff0c;错误的是A、所有的图标都可以重命名”B、图标可以重新排…

#和##在宏替换中的作用

#include <stdio.h>#define f(a,b) a##b#define g(a) #a#define h(a) g(a)int main(){ printf("%s/n",h(f(1,2))); printf("%s/n",g(f(1,2))); return 0;} 首先需要了解#和##的意义。 # 将右边的参数做整体的字符串替换。 #define g(a) #a 则g…

计算机辅助设计b实验目的,上海电力学院电路计算机辅助设计1--含有受控源电路辅助分析...

上海电力学院电路计算机辅助设计1--含有受控源电路辅助分析实验三&#xff1a;含有受控源电路辅助分析一、实验目的1. 用回路电流法和节点电压法求解电路中的电流和电压。 2. 掌握线性电路参数的测量的方法。3. 了解四种受控源元件(电流控制的电压源、电流控制的电流源、电压控…