关于Java中byte,short,char,int 之间相互赋值的问题

首先明确这几种数据类的取值范围:

byte:  -128~127

short: -2^15~2^15-1

char: 0~65536

int: -2^31~2^31-1

请看以下代码:

byte b = 100;

short s = b; //正确,因为byte的取值范围在short取值范围之内。

char c = b; //错误,因为byte的取值范围不完全在char的取值范围内。

c = s;  //错误,因为short的取值范围不完全在char的取值范围内。

int x = b; //正确,因为byte的取值范围在int取值范围之内。

x = s ;  //正确,因为short的取值范围在int取值范围之内。

x = c;  //正确,因为char的取值范围在int取值范围之内。

时间: 2024-12-28 23:31:06

关于Java中byte,short,char,int 之间相互赋值的问题的相关文章

java对byte,short,char,int,long运算时自动类型转化情况说明

大家都知道,在进行运算时,java会隐式的自动进行类型转化,那么有哪些情况会进行转化呢?总结如下: 一.算术运算符 单目运算符:+(取正)-(取负) ++(自增1) --(自减1) 1.1 +(取正)-(取负) 当操作数是byte,short,char时,会自动转化为int类型:返回结果为int. 当操作数是int,long时,不转化,原来是啥类型,还是啥类型. 1.2 ++(自增1) --(自减1) 不管操作数是啥类型,不转化. 双目运算符:+ - * / %(取余) 1.3 + - * /

【转】java中byte数组与int类型的转换(两种方式)----不错

原文网址:http://blog.csdn.net/piaojun_pj/article/details/5903009 java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形int转换成byte数组,同时如何把一个长度为4的byte数组转换为int类型.下面有两种方式. 第一种方法: public static byte[] int2byte(int

java中byte数组与int类型的转换(两种方式)

java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形int转换成byte数组,同时如何把一个长度为4的byte数组转换为int类型.下面有两种方式. 方法一 /** * int到byte[] * @param i * @return */ public static byte[] intToByteArray(int i) { byte[] resu

Java中基本数据类型byte,short,char,int,long,float,double

部分内容转自:java 彻底理解 byte char short int float long double 首先说byte: 这段是摘自jdk中 Byte.java中的源代码: 1 /** 2 * A constant holding the minimum value a <code>byte</code> can 3 * have, -2<sup>7</sup>. 4 */ 5 public static final byte MIN_VALUE =

[分享]Java中Byte与基础类型之间的转换

======================================================== 作者:qiujuer 博客:blog.csdn.net/qiujuer 网站:www.qiujuer.net 开源库:github.com/qiujuer/Genius-Android 开源库:github.com/qiujuer/Blink 转载请注明出处:http://blog.csdn.net/qiujuer/article/details/45152189 --学之开源,用于

Java中byte[]和char[]互相转换

package gj; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.Charset; import java.util.Arrays; /** * Author: areful * Date: 2019/3/28 */ public class CharByteKit { public static byte[] getBytes(char[] chars) { Charset c

Java中byte、short、char、int、long运算时自动类型转化问题

-------------------------------------------------------------------------------------------------- ★★自动(隐式.默认)类型转换与强制(显式)类型转换★★ 1) boolean类型不参与转换 2) 默认转换 A:从小到大 B:byte,short,char --? int --? long --? float --? double C:byte,short,char之间不相互转换,直接转成int类

byte,short,char的类型转换

<java深入解析>中例子:一.隐式类型转换在平时对byte char short这几个范围较小的类型声明并赋值时,往往忽略了一个问题.在Java源文件当中为变量赋值时经常使用字面常量,这些常量在Java中是用int类型表示的.在为long类型赋值时我们会使用: long l = 123123123L;这是因为在赋值时需要一个long类型的值.那么为什么在对byte char short赋值时没有对应的格式,而只是简单的用int类型的字面常量呢?1.这还是因为Java编译器造福人类地提供了隐式

Java中byte与16进制字符串的互相转换

Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果new String(H) + new String(L).即byte用十六进制表示只占2位. 同理,相反的转换也是将两个16进制字符转换成一个byte,原理同上. 根据以上原理,我们就可