int 不能转换为short

原创 2013年12月02日 20:32:36

short s=3;

s=s+2;

s+=2

有什么区别?

s=s+2编译错误,s+2转换为int类型 再赋给short会丢失精度,所以不能赋值给short类型的s

s+=2直接将2以short类型计算和;

在项目中我不常用以下逻辑运算符,小记一下

^为异或:true^true=false ;false^false=false;false^true=true;

&和&&的区别

&无论左边是true还是false,右边都运算

&&如果左边是false,右边不用运算

|:两边都参与运算

||:左边为true右边不运算;

位运算符:(二进制运算)

3<<2=12;

3的二进制向左移动两位后面补0:3*2*2往左移移动几就是几的几次幂

6>>2=1

6的二进制向右移,超出两位舍弃,前面多出两位补0;6/4 舍弃小数部分取整为1

<<:乘以2的移动位数次幂

<<:除以2的移动位数次幂取整

>>最高位补什么由原有数据的最高位值决定 如果最高位为0,右移后,用0补空位 如果最高位为1,右移后,用1补齐

>>>:无论最高位是什么,右移后,都补0

&运算(转换成二进制运算)

6&3=2

6的二进制:   110

3的二进制: &011    0为false 1为true

----------------------------------------------------------

   010的值为2

道理相同:6|5=7 ;6^5=3

~波浪线为取反码:~6+1=-6;

6^7^7=6(异或两次同一个数最后得自己)

第一次异或相当于加密,然后再异或一次就可恢复(加密算法相当复杂|、^、等各种复杂加密)

2*8怎样运算效率最高?

2*8可以把两位转换成二进制然后和乘法一样得到的二进制数据再转换成十进制=16

位运算 2*8相当于2乘以2的3次幂,2<<3 2的二进制数据向左边移动三位就可得出二进制转换成十进制=16(位运算效率最高)

小技巧:将60转换成16进制数 先将16转换成2进制 取最后四位 通过&15 的结果 再(>>>)右移4位


switch case

switch(x)

{

default:

System.out.println("AA");

//break;


case :3

System.out.println("AA");

break;

case :4

System.out.println("abc");

break;


}

x=1;

default写在前面,首先case3、case4 再执行default(没有break)但没遇到break和结尾{号 ,然后继续执行default后面的所有代码,不再考虑case直到遇到break;

Double 取两位小数

Double a = 2.1234567; 
Math.Round(a,2);

Double保留小数点位数(带四舍五入)

程序代码 Double salary1 = 10000.0; Double salary2 = 10000.12345; Double salary3 = 10000.1289; Int salary4 = 10000; string salary5 = "10000"; string salary6 = "10000.12345"; string salary7 = "10000.1289"

Convert.ToDouble(salary1).ToString("0.00");//保留小数点后两位,结果为10000.00 Convert.ToDouble(salary2).ToString("0.00");//保留小数点后两位,结果为10000.12 Convert.ToDouble(salary3).ToString("0.00");//保留小数点后两位,结果为10000.13 Convert.ToDouble(salary4).ToString("0.00");//保留小数点后两位,结果为10000.00 Convert.ToDouble(salary5).ToString("0.00");//保留小数点后两位,结果为10000.00 Convert.ToDouble(salary6).ToString("0.00");//保留小数点后两位,结果为10000.12 Convert.ToDouble(salary7).ToString("0.00");//保留小数点后两位,结果为10000.13  


w:for(int x=0;x<3;i++)

{

   p: for(int y=0;y<3;y++)

{

 break w;

}

}

给for循环起名字,break直接跳出w




java中long,int,short与byte数组之间的转换

转的两篇文章的实现都很全面里面有些细节不同,现在项目进度紧张.先保留以后整理. 文章一:http://hi.baidu.com/menglinxi_a/item/35a43d5d50e79212abf...
  • thanklife
  • thanklife
  • 2013年11月28日 11:05
  • 15383

char类型和short,int类型之类的转换

分析:直到尝试无符号字符型,才想起来数据的范围,char的范围是-128~127,而unsigned char的范围是0~255. 所以在做 char & short(int) 操作或者直接使用...
  • zcyzsy
  • zcyzsy
  • 2017年04月28日 10:38
  • 1284

Android学习心得(19) --- short、byte、Hex、int、ULeb128类型转化Java源码

我在博客上发表一些我的Android学习心得,希望对大家能有帮助。 这一篇我们讲述一下在分析dex时候遇到类型转换,并附上java源码1、介绍由于读取dex文件放入的是一个byte数组,当我们对这...
  • qiyu93422
  • qiyu93422
  • 2016年07月04日 12:29
  • 1208

Java中int和Integer相互转换

Java是一种面向对象语言,为了能将基本类型视为对象来处理,并能连接相关的方法,Java为每个基本数据类型都提供了包装类,这样便可以把这些基本类型转化为对象来处理。                  ...
  • Lixuanshengchao
  • Lixuanshengchao
  • 2015年01月09日 23:49
  • 1716

int与unsigned等转换深入理解(二)

1、隐式转换     C在以下四种情况下会进行隐式转换:        1、算术运算式中,低类型能够转换为高类型。        2、赋值表达式中,右边表达式的值自动隐式转换为左边变量的类型,并...
  • qq_24373811
  • qq_24373811
  • 2016年10月25日 14:50
  • 2341

java基础-各种类型及转换(int,string,char,short,date)

java数据类型和c/c++相似,但java是面向对象
  • chzayi
  • chzayi
  • 2014年11月07日 13:20
  • 2318

short类型与int类型转换,float类型与double类型转换

1.问题背景        在问题类型转换中,short a = 1;把int类型转为short类型推翻了转换类型中的,大转小的理论,其实不然。与float f = 3.4 中double floa...
  • weixin_38699282
  • weixin_38699282
  • 2017年05月18日 09:15
  • 1375

【Java】short、int、float、boolean与byte之间的转换工具类

import java.nio.ByteBuffer; /** * 各基础类型与byte之间的转换 **/ public class Utility { /** * 将bo...
  • u010983881
  • u010983881
  • 2017年03月08日 13:01
  • 927

Python模块学习 ---- struct 数据格式转换

Python是一门非常简洁的语言,对于数据类型的表示,不像其他语言预定义了许多类型(如:在C#中,光整型就定义了8种),它只定义了六种基本类型:字符串,整数,浮点数,元组,列表,字典。通过这六种数据类...
  • chunlovenan
  • chunlovenan
  • 2015年03月31日 15:51
  • 1148

为什么操作int 类型的指令要快于操作short 的,却可能慢于操作char 的

唔,写这篇博客的原因是给人解释了半天,觉得不复制出来整理下做成一篇blog 可惜了。。。。...
  • iSpeller
  • iSpeller
  • 2013年12月30日 22:35
  • 2032
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:int 不能转换为short
举报原因:
原因补充:

(最多只允许输入30个字)