标签:个数 lis 9.png 布尔 blog 技术分享 关系 字符串 判断
/* 需求:(即代码所要解决的问题是什么——干什么) 思路:(编写代码的核心,找出问题的着手点——怎么干) 步骤:(主要的编程步骤,包括需要用到的变量和方法等) */
class Demo
{
......
}
如int类型的6在内存中的表示: 0000-0000 0000-0000 0000-0000 0000-0110 -6的表示(正数6先去反,再加1) 取反 1111-1111 1111-1111 1111-1111 1111-1001 + 0000-0000 0000-0000 0000-0000 0000-0001 _____________________________________________________________________ 1111-1111 1111-1111 1111-1111 1111-1010 (注意:负数的二进制最高位是1)
class VarDemo2
{
public static void main(String[] args)
{
int x = 3;
x = x + 5; //把内存空间中的3取出来,在运算区二进制运算3+5 即 011+101 = 1000 ,然后将运算结果赋予给x,此时x内存空间中的数据为8
System.out.printn(x);
}
}
上述代码在内存中的具体运算过程是这样的
PS:运算两端必须是相同类型才能运算(类型不一致,内存空间就不一致)。但是数值类型之间的数可以运算。
class VarDemo2 { public static void main(String[] args) { int x = 3; byte b = 5; x = x + b; //自动类型提升 System.out.printn(x); } }
/*
int 类型的整数在内存中占用了4个字节,也就是32个bit位,而byte类型的整数在内存中只占用1个字节,即8个bit位。
在 x = x+ b 运算时,类型为byte的数据 b 会在内存中自动补齐高位的剩下24个bit位,也就是3个字节,然后在进行运算。
*/
class VarDemo2 { public static void main(String[] args) { byte b = 5; b = (byte)(b + 3); //强制类型转换:将一个int型强制转换成byte型(除去高位的二进制数据,只留下8个bit位参与运算),再复制给byte型变量 System.out.println(b); } }
/*
思路和上面自动类型提升一样,只不过这里是讲等式右边内存较大的int类型的 3 强制去除了其二进制中的高位(前3位字节),然后再进行运算。
*/
class VarDemo2 { public static void main(String[] args) { System.out.println(‘a’ + 1); //char在内存中是2位,int在内存中是4位,在没有强制转换的情况下,java会自动的把位数较小的自动转换成位数大的类型 ,然后再进行运算, 1 对应的二进制进行了自动类型转换 System.out.print((char)(‘a‘ + 1)); //再指定了输出类型后,对结果 98 进行了强制类型转换 成位数更小的char类型 } } // 运行得到 >>> 98 >>> b
PS:二进制与生活中的文字如字母之间对应关系---->编码表
class VarDemo { public static void main(String[] args) { byte b = 4; byte b1 = 3; byte b2 = 7; b = b1 + b2; //此处会报错,原因是以为等式右边为变量,变量是不确定的,java编译器无法检查等号右边的值得范围是否超出byte(-128~127),如定义b1之后,又将127赋予b1,会丢失精度。即右边不确定,是无法判断赋值的 //b = 3 + 7; //3 7 为常量,不会报错 } }
class VarDemo { public static void main(String[] args) { int x; int x1 = 898; int x2 = 810; x = b1 + b2; //因为计算结果在java中默认为int,但是当x1 + x2的值超出了int范围的时候,java就会进行强制转换,强制保存int的二进制4个8位,导致截掉了最高位的1 ,得到的会是一个负数 } }
标签:个数 lis 9.png 布尔 blog 技术分享 关系 字符串 判断
原文地址:http://www.cnblogs.com/ZiaWang/p/6964664.html