精华内容
下载资源
问答
  • java 中short类型如何转换为int,string,flort等基础类型
  • 把int类型转为short类型推翻了转换类型中的,大转小的理论,其实不然。与float f = 3.4 中double float转为float 大转小报错,展开深入研究。 2.基本1.Java类型转换 Java类型转换分为自动转换和强制转换两种。 ...

     1.问题背景

           在问题类型转换中,short a = 1;把int类型转为short类型推翻了转换类型中的,大转小的理论,其实不然。与float f = 3.4 中double float转为float 大转小报错,展开深入研究。

    2.基本1.Java类型转换

    Java类型转换分为自动转换和强制转换两种。

    基本类型间的自动类型转换需要满足以下条件:

    (1).转换双方的类型必须兼容,例如int和long类型就是兼容的,而int和boolean就是不兼容的。

    (2).只能是"窄类型"向"宽类型"转换,也就是目标类型的数据表示范围要比源类型的数据表示范围要大。
    byte-->short-->int-->long
    float-->double

    按照箭头可以实现自动类型转换,而如果是相反方向间的类型转换则需要强制类型转换.

    2.数值常量默认类型

    (1).Java中整型常量数值的默认类型是int类型,如果需要声明long类型的常量 ,需要在数值加上'l'或者'L'.
    例如:int i = 3; 
    long l = 3L;

    (2).Java中的浮点型常量数值默认是double类型,如果要声明一个数值为float型,则需要在数值后面加上'f'或者'F'.
    Float = 3.4是错误的 ,高级向低级转换用强转

    Java类型转换分为自动转换和强制转换两种。

    基本类型间的自动类型转换需要满足以下条件:

    (1).转换双方的类型必须兼容,例如int和long类型就是兼容的,而int和boolean就是不兼容的。

    (2).只能是"窄类型"向"宽类型"转换,也就是目标类型的数据表示范围要比源类型的数据表示范围要大。

    byte-->short-->int-->long

    float-->double                                             

    按照箭头可以实现自动类型转换,而如果是相反方向间的类型转换则需要强制类型转换.

    数值常量默认类型

    (1).Java中整型常量数值的默认类型是int类型,如果需要声明long类型的常量 ,需要在数值加上'l'或者'L'.
    例如:int i = 3; 
    long l = 3L;

    (2).Java中的浮点型常量数值默认是double类型,如果要声明一个数值为float型,则需要在数值后面加上'f'或者'F'.

    Float = 3.4是错误的 ,高级向低级转换用强转

    3.深入讨论short(byte) number = 1;中int类型能直接赋值为byte,short类型

    现在才知道,原来是jvm实现的强转类型呀,好吧,这样就符合了 大到小 要用“强转”,jvm自己就进行转换了。

    4.float与double float类型为啥就不可以转换呢

    这就考虑到精度损失的问题,既然是精度损失,那么就要深入了解float二进制存储结构了

    一个float4字节32位,分为三部分:符号位,指数位,尾数位。

    (1)符号位 31位,为1或者0

    (2)指数为23-30,8位表示

    (3)尾数位也就是小数位,则为0-22

    一个double float 8字节,64位,分为三部分:符号位,指数为,尾数位

    (1)符号位63位,为1或者0

    (2)指数为52-62位,11位表示

    (3)尾数位小数位,0-51位表示

    综上可知,在表示二进制小数点时候,会损失精度,造成转换报错。




    
    展开全文
  • Java Short类型比较的坑

    千次阅读 2020-02-22 11:21:44
    Java Short类型比较的坑 前提约定: 精度小于int的数值==运算的时候(定义时不会)==都会被自动转换为int后进行计算 short x = 3; Short s1 = 2; if (s1.equals(x - 1)) { System.out.println("!!!!!"); } // 输出...

    Java Short类型比较的坑

    前提约定:

    精度小于int的数值==运算的时候(定义时不会)==都会被自动转换为int后进行计算


    short x = 3;
    Short s1 = 2;
    
    if (s1.equals(x - 1)) {
      System.out.println("!!!!!");
    }
    // 输出:null
    
    • 其实,上述定义x,s1时,后面的3和2都是int型的,只是编译器在编译时帮我们自动转换为了对应的short类型。

    • 而在运算中编译器不会做上述转换,即: x - 1 变为了int 类型,而Short类型重写的equals方法如下:

      • !!!目标不是Short类型,直接会返回false
      public boolean equals(Object obj) {
          // !!!目标不是Short类型,直接会返回false
          if (obj instanceof Short) {
              return value == ((Short)obj).shortValue();
          }
          return false;
      }
      

      因此不会有任何输出。

    • 将if中的语句改为s1.equals((short)(x-1))即可

    • 因此,在map的使用时,应避免Short为key,若必须要用Short,则要注意这些,否则会出问题

      如HashMap中remove时对传入的key和map中的元素的对比:

      if (p.hash == hash &&
          ((k = p.key) == key || (key != null && key.equals(k))))// 其中key为外部传入的经过运算后的Short,为Integer,而k为Short
      

      此时,第2行的 == 判断直接false了,因为Short和Integer类型不能用==比较,而后面equals也为false,所以remove失效了。

    展开全文
  • int类型范围,short类型范围比较分析

    千次阅读 2018-07-19 12:34:56
    有两个变量a和b,在执行了如下代码后:   a = 32768; b = a; printf("%d %d\n", a, b);...请问a和b分别是以下哪种类型?...A.... short D....其中a为int整型变量,b为short 类型16位,范围...

    有两个变量a和b,在执行了如下代码后:

     

    a = 32768;
    b = a;
    printf("%d %d\n", a, b);
    

     

    输出两个数:32768 -32768

    请问a和b分别是以下哪种类型?

    A. bool   B. char   C. short   D. int   E. float   F. double

    其中a为int整型变量,b为short 类型16位,范围为-32768——32767,

    展开全文
  • a+b是结果是int类型,因为在java虚拟机的指令集中大部分指令都没有支byte,char,short等类型编译器在编译期或者运行期都将byte和short类型的数据扩展为int类型数据. public class zhuanhuan { public static ...

    byte,char,short 类型相加为整形问题

    a+b是结果是int类型,因为在java虚拟机的指令集中大部分指令都没有支byte,char,short等类型编译器在编译期或者运行期都将byte和short类型的数据扩展为int类型数据.

    
    public class zhuanhuan {
    
    	
    	public static void main(String[] args) {
    		short a=1;
    		short b=2;
    		System.out.println("原short类型:"+getType(a+b));
    		char c=2;
    		char d=3;
    		int l=a+d;
    		System.out.println("原char类型:"+getType(a+d)+l);
    		byte e=1;
    		byte f=1;
    		System.out.println("原char类型:"+getType(e+f));
    		short h=9999;
    		System.out.println(Integer.toBinaryString(h));
    		System.out.println((byte)h);//强制转换会遇到转换错误的问题  这是因为byte数据是8  short是32  会出现转换问题  所以强制转换时 要注意
    		
    		
    	}
    	//获取对象类型方法
    	private static String getType(Object a) {
    		// TODO Auto-generated method stub
    		return a.getClass().toString();
    	}
    
    
    
    }
    
    
    展开全文
  • 转自:http://1035054540-qq-com.iteye.com/blog/1458005,讲解的非常清楚,推荐一下short类型问题 short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? short s1 = 1; s1 = s1 + 1; (s1+1运算...
  • 为什么32768用short类型强制转换后变成-32768?3.为什么32768用char类型强制转换后变成0?相关链接 以下内容基于系统为32位,64位也行 1. 代码如下(C语言) #include <stdio.h> int main(){ short a=...
  • 【Socket网络编程】传参时char* 类型转 unsigned short 类型和 const char *类型一、问题二、解决Linux将命令行参数传递给main函数三、typeid().name() 返回值四、运行结果 一、问题 在Linux操作系统下,实现客户端...
  • c#中int类型转换为short类型

    千次阅读 2019-09-30 14:12:03
    short数据类型(C/C++): C语言中,short是定义一种整型变量家族的一种。例如short i;表示定义一个短整型的变量i。长度:依据程序编译器的不同short定义的字节数不同。标准定义short短整型变量不得低于16位,即两个...
  • 为什么将 int 类型的12312341强转为 short 类型后,输出会是 -8427呢,而262199强转后却变成了55。再一顿查找计算机组成原理书后,终于恍然大悟。 解析 首先 int 类型是占32位,而 short 类型是占16位 在计算机中...
  • 两个字节合并成一个16位short类型

    万次阅读 2017-08-21 20:23:20
    1、例如将两个char类型,合并成一个short类型(C++程序) 思路:如下代码所示 如上代码所示,先将temp与st[1]进行或运算,得到temp的低八位就是st[1]; 在将temp左移8位,将低八位移到高八位去,在与st[0]...
  • short 类型强制转换

    千次阅读 2019-04-19 14:44:28
    public class VarDemo { public static void main... short s=3; s+=4; //编译成功,java后台自动转换int类型进行直接计算 s=s+4; //提示有可能有损失精度,类型没有自动转换。需要强制转换类型再计算。 s...
  • 数据库字段short与Short类型区别

    千次阅读 2017-11-01 15:50:42
    采用自动生成的SQL语句,自动生成的数据库model中该字段类型会默认为short。 在插入数据时,该字段没有值时会,默认设置为0. 这时 如果数据库中有两个字段A和B 且都是smallint型。 第一次插入数据 两个字段不...
  • short b; b = a + 1; printf("%d\n",b); // -32768 } 测试环境 VC6.0 解释 整型int占4个字节,数字32767在内存中的存储情况如下: 加 1 操作后,变成 00000000 00000000 10000000 00000000 -32768在内存中的...
  • short类型相关

    2011-10-29 10:18:13
    short 16位 最大是+2^15,最小-32768 short s = 1; s += 1没错,Java的自动类型转换是一个占用空间少的类型可以自动转换成占用空间大的类型, ...s = s + 1 错了,这个表达式因为是short型...short是基本类型不能new
  • Java中byte和short类型初始化时最高位不能为1,如果为1的话编译会出错,提示从int转换到byte会有损失,例如:我这样写 short ashort = 0xFFFF就会编译时出问题
  • java short 类型转byte[],带正负

    千次阅读 2018-05-15 16:58:50
    java short 类型转byte[],带正负,2种方法方法一、这种方法跟正负没与关系public static int swap_16(int date){ int a,b; a = (date&gt;&gt;8)&amp;0x00ff; b = (date&lt;&lt;8)&amp;0...
  • java中short类型的存储顺序为高到低

    千次阅读 2019-01-30 17:10:06
    short 类型存储数据的顺序是先高后低? 原题如下: 分析如下:要解决本题的D选项,我们首先需要了解“字节序”(详见另一条博客)。字节序中包括大小端两种模式。 在操作系统中,x86和一般的OS(如windows,FreeBSD...
  • 近日做了串口发送程序,其中遇到了标识数据长度为short类型,但是需转换为字节形式进行发送,经查资料及整合得出以下方法,以此为记,方面以后查询,更希望与人方便,具体如下。  首先定义两个宏  #define LOW_...
  • Java移位操作符及其对char、byte、short类型数值的处理
  • 场景:将一个char 类型的数值转换为unsigned short类型 char 一个字节 unsigned short 二个字节 对于无符号数,我们直接在高位加零就可以了,也叫零扩展 对于有符号数, 执行符号扩展 。 举例: ...
  • 关于short 类型

    千次阅读 2010-01-09 11:24:00
    short s = 1;为什么s += 1没错,s = s + 1就有错?...Java的自动类型转换是一个占用空间少的类型可以自动转换成占用空间大的类型,反之则必须强制类型转换,否则报错。“s + 1”这个表达式因为是short型和int型相加,因
  • short ShortMax = Short.MAX_VALUE; short a =1; System.out.println("Maximum of Short Is = "+ ShortMax+a); } ``` 输出结果是327671 ``` public static void main(String args[]) { short ...
  • 短整型 short 2个字节 16位 [-32768,32767] 整型 int 4个字节 32位 +-21亿 长整型 long 8个字节 64位 非常大*整数的字面常量值默认类型为int,如果想给long类型的变量赋值,需要在数据的后面添加L/l,推荐使用L如果要.....
  • 今天遇到了一道面试题,当时只知道可能是陷阱,但是却不知道该如何绕...疑问一:s1 + 1 (一个short类型加一个int类型,为什么会隐式转成int类型)?解答:这其实是C#的一个特性。它会把byte、short等类型的数据进行四则
  • public class Text02 {  public static void main(String[] args) { ...short s1 = 2;   short s2 = 3;    s1 = s1 + s2; //编译错误 (右边有变量参加运算需要强转)    s1 += s2; //默认强

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,979
精华内容 15,991
关键字:

short类型