Java中字节和短原始类型的用途

时间:2012-12-11 10:52:39

标签: java

我想知道一个与Java中的原始类型相关的问题。当VM将 short byte 类型编译为 int 基元类型时,那么使用这些类型的目的是什么?

4 个答案:

答案 0 :(得分:4)

它们表现为字节或短路,并被验证为字节或短路。

示例1:

    byte b = 122;
    System.out.println((byte)(b*5)); // outputs 98

示例2:

    byte b = 1422; // doesn't compile

来自the specification

  

整数类型的值是以下范围内的整数:

     

对于字节,从-128到127,包括

     

简而言之,从-32768到32767,包括

     

对于int,从-2147483648到2147483647,包括

     

很长一段时间,从-9223372036854775808到9223372036854775807,包括在内

     

对于char,从'\ u0000'到'\ uffff'包含,即从0到   65535

您可能会因为numerical operations on integers always result in an int or a longa*b的结果为ab属于byte类型的结果而感到困惑int)。或者记忆可以对齐并浪费一些地方。但byteshort实际上并没有像int那样溢出。

答案 1 :(得分:1)

JVM确实将byte和short提升为int,但只有当它们在字节码中用作局部变量时才是方法。但是作为领域

private byte field1;
private short field2;

它们将相应占用1和2个字节。

字节在Java中非常重要因为它们在字节数组中使用,首先用于输入/输出操作,例如java.io.InputStream.read(byte [] bytes)

简而言之,它很少使用,虽然它可能对存储大量相对较小的数字有用,但对于记忆经济性

答案 2 :(得分:0)

对于网络通信图像处理,您需要字节。他们被视为bytes。如果他们不是那么那就毫无意义。

答案 3 :(得分:0)

byte和short不编译为int,它们只适合int。即,你可以将一个字节值分配给一个int变量。

byte b=5;
int i = b;

但不是相反,除非你明确地施展它

int i=4;
    byte b = i; //compiler error 

int i=4;
    byte b = (byte)i;