java 详细介绍short,byte,char三种类型,我分不清
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 详细介绍short,byte,char三种类型,我分不清相关的知识,希望对你有一定的参考价值。
介绍的简单通俗的
byte:byte在java中占据一个字节即用8位bit表示,因为是有符号数,所以它的表示范围是-128-127.如果在运算过程中超出了范围限制就出现溢出。char:char在java中占据两个字节,即用16位表示一个char类型的数据。由于char是无符号的所以其表示范围是0-65536.当计算超过其表示范围时,系统会自动将结果转换为int类型。
short:short在java中占据两个字节也是由16位表示,因为short是有符号数据故其表示范围是-32768-32767
根据需要可用来节省内存的使用。追问
-128-127,32768-32767数字代表什么意思。我对java中字节无概念
追答取值范围,比如byte,你定义128就会报错
参考技术A short 最小 占一个字节 8位 -128~127byte 占两个字节 16位
int 占四个字节 32位
Long 占八个字节 64位
char 65535位 无符号整数 就是0-65535 没有负数的追问
-128-127数字代表什么意思。我对java中字节无概念
追答-128-127 就是负128正的127 也就是short能表示的范围
本回答被提问者采纳java运算注意事项
/* 对于byte、short、char。插入三种类型来说,如果右侧固执的数值没有超过范围,那么java编译器就会自动隐含地位我们 补上一个(byte) ,(short),(char) 1、如果没有超过左侧的范围,编译器补上强转 2、如果超过了左侧范围,那么直接编译报错 */ public class Demo02Notice{ public static void main(String[] args){ //右侧确实是一个int数字,但是没有超过左侧的范围,就是正确的 // int————> byte 不是自动转换类型 byte num1 = 30; // (byte)30; 右侧没有超过范围 System.out.println(num1); //30 //byte num2 = 128 右侧超过范围 // int ————> char 没有超过范围 //编译器将自动补上一个隐含的(char) char zifu = 65; System.out.println(zifu);//A } } /* 在变量进行赋值的时候,如果右侧的表达式当中的全部是常量,没有任何变量‘ 那么编译器java将会直接将若干个常量表达式计算得到结果; short result = 5 + 8; // 等号右边的全是常量,没有任何边变量参与运算 编译之后。得到的.class字节码文件当中相当于【直接就是】:short result = 13; 右侧的常量结果数值没有超过左侧范围,所以正确————这成为“编译器的常量优化” 但是,一旦表达式当中有变量参与,那么就不能进行这种优化了。 */ public class Demo02Notice2{ public static void main(String[] args){ short num1 = 10; // 正确写法,右侧没有超过左侧的范围 short a = 5; short b = 6; // short + short ----> int + int ----> int //short result = a+b; // 错误写法!左侧主要是int类型 // 右侧不用变量,而是采用常量,而且只有两个常量 short result = 5 + 8; System.out.println(result); } }
以上是关于java 详细介绍short,byte,char三种类型,我分不清的主要内容,如果未能解决你的问题,请参考以下文章