标签:
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
主要内容:《进制、原码反码补码、变量、数据类型、类型转换、运算符》
A.将每三位取出,转换为十进制:
10011100101
每三位取出:
010 011 100 101
转成十进制:
2 3 4 5
组成一个新的数字:2345,它是一个八进制数
八进制在源码中可以表示为:
在内存中存储的仍然是二进制:
B.将每四位取出,转换为十进制:
10011100101
每四位取出:
0100 1110 0101
转成十进制:
4 14 5
组成一个新的数字:十以上使用字母:A,B,C,D,E,F
4E5。它是一个十六进制数;
十六进制数在源码中表示为:
在内存中仍然存储是二进制;
二进制
由0,1组成。以0b开头
八进制
由0,1,…7组成。以0开头
十进制
由0,1,…9组成。整数默认是十进制的
十六进制
由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头
十进制与其它进制的转换:
十进制的表示方法:
32652
=3 * 10000 + 2 * 1000 + 6 * 100 + 5 * 10 + 2
=3 * 10^4 + 2 * 10^3 + 6 * 10^2 + 5 * 10^1 + 2 * 10^0
系数:每一位上的数据;
基数:10(进制数,我们这里是十进制)
权:多少次幂;
整个表达式:系数 * 基数(的权次幂),的累加和
二进制转换为十进制的表示方式:
11111110:使用十进制的公式表示一下:
= 1 * 2^7 + 1 * 2^6 + 1 * 2^5 + 1 * 2^4 + 1 * 2^3 + 1 * 2^2 + 1 * 2^1 + 0 * 2^0
= 128 + 64 + 32 + 16 + 8 + 4 + 2 + 0
= 254
八进制转换为十进制:
(0)376:使用十进制的公式:
= 3 * 8^2 + 7 * 8^1 + 6 * 8^0
= 192 + 56 + 6
= 254
十六进制转换为十进制:
(0x)FE:使用十进制的公式:
= F * 16^1 + E * 16^0
= 15 * 16^1 + 14 * 16^0
= 240 + 14
= 254
十进制到二进制:用除法
十进制到其它进制:用除法;
其它进制到十进制:用乘法;
有符号数据表示法
在计算机内,有符号数有3种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的。
原码
就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码
正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码
正数的补码与其原码相同;负数的补码是在其反码的末位加1。
为什么需要变量:
1.当我们反复的想使用一个数据,例如:公司使用3.14159作为计算圆面积的π值:
如果直接使用字面量,容易发生写错的情况。如果这个值需要更改,所有的位置都需要改;
2.我们可以给这个值起个名字,以后使用这个名字即可;
3.给某个值起个名字,这个就是"变量名":
4.变量的定义格式:
数据类型 变量名 [ = 初始化值];
说明:
数据类型:后边说;
变量名:自定义的标识符。遵循标识符的命名规则和命名规范;
初始化值:在声明时,可以不指定初始化值,但不能访问这个变量的值;
所以,建议在声明变量时,都要初始化值;
Java中的数据类型:
1.基本数据类型:四类八种:
四类:
整数:byte,short,int,long
浮点:float,double
字符:char
布尔:boolean
2.引用数据类型:
注意:在Java中,所有的"整数字面量"全部使用int类型存储;
在Java中,所有的"浮点字面量"全部使用double类型存储;
boolean的空间大小:有效的位是1位。在内存中,使用int空间对一个boolean类型的值进行运算。
整数默认:int 小数默认:double
使用变量注意事项:
作用域
变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。
初始化值
没有初始化值不能直接使用
在一行上建议只定义一个变量
可以定义多个,但是不建议
定义字符串类型:
1.在Java中"字符串"不是"基本数据类型";它是一个"引用数据类型";
2.目前只需要学会"定义字符串"就可以;
3.定义格式:
String 变量名 = 值;
byte,short,char—int—long—float—double
byte,short,char相互之间补转换,他们参与运算首先转换为int类型
1.将一个"宽类型"转换为一个"窄类型"时,叫:"强制类型转换";
2.强制类型转换:截掉高位,保留低位。其结果可能不可预知;
3.任何的"数值类型"都可以强制转换;
4.boolean类型不能转换为其它类型;
byte b1 = 10;
byte b2 = 20;
byte b3 = b1 + b2;//编译错误
byte b4 = b1 + 20;//编译错误
byte b5 = 10 + b2;//编译错误
byte b6 = 10 + 20;//OK的
字符串的相加:
+符号:如果左右两边是"数值类型",做加法运算;
如果左右两边,有一边是"字符串"类型,将做"字符串连接"。返回一个"字符串"
整数除0:运行时异常;
整数模0:运行时异常;
浮点除0:出现Infinity
浮点模0:出现NaN
1.= 2.+= 3.-= 4.*= 5./= 6.%=
基本赋值运算符:顺序:从右至左。整个复制表达式最后会返回这个变量
1.&& : 逻辑与(并且):左右两边都为true,结果为:true。有一个为false,结果就为false;
2.|| :逻辑或(或者):左右两边有一边为true,结果为:true。
3.! : 非(不是....):!true等于false,!false等于true.
位运算符:可用作布尔的判断;它们的结果跟"逻辑与"和"逻辑或"一样的。
1.& : 与:
2.| : 或
3.^ : 异或:两位相同,结果为:false;两位不同,结果为:true
按位&与逻辑&&和按位|与逻辑||的区别:
1.逻辑&&和逻辑||"具有短路行为";一旦确定整个表达式的结果,将不再继续判断后续表达式;
2.按位&和按位|"不具有"短路行为";每个表达式都会执行到。但结果与使用逻辑运算符是一样的。
1.==:判断是否相等:相等返回true,否则返回false;
2.!: 判断是否不等。不等,返回true,否则返回false;
3.<: 判断左操作数是否小于右操作数。是:返回true,否则返回false;
4.>: 判断左操作数是否大于右操作数。是:返回true,否则返回false;
5.<= :判断左操作数是否小于或等于右操作数。是:返回true,否则返回false;
6.>= :判断左操作数是否大于或等于右操作数。是:返回true,否则返回false;
7.instanceof:在面向对象那里说;
标签:
原文地址:http://www.cnblogs.com/linmusen/p/4709219.html