基础复习一

一、JDK JRE
1、JDK——Java development kit java开发工具包
java编程语言、javaAPI类库、java虚拟机统称为JDK。(JDK包括JRE,Java基本类库,java开发工具)
2、JRE——Java runtime environment java运行时环境
Java API类库中的Java SE API子集和Java虚拟机统称为JRE。
JDK范围涵盖JRE,JRE是JDK的子集。

二、三个可以总结使用的流对象:system.in标准输入 system.out标准输出 system.err标准错误输出

三、基本类型
传统上一个字母或符号占用1字节,1字节Byte=8比特bit(8个二进制数)=256个编码空间。
对于中文,超过256个,通常使用2字节储存一个字符。

8种基本数据类型
byte 1字节
short 2字节
int 4字节
long 8字节
float 4字节
double 8字节
char 2字节(中文或字母都是)
boolean 1字节(没有明确,1或1/8或4)

为什么int和float同为4字节,存的范围差那么多
float:1位符号 8位指数位(决定大小) 23位尾数位(决定精度)
int:1位符号 31位数位(实际数位,float为指数位)
为什么byte为-128~127
8位:首位为符号位,0为正 则最大为01111111=127 因为0没有正负,为节省 最小为10000000=-128
负数的二进制
-11 —>11的二进制 00001011(原码)—>取反 11110100(反码)—>加一 11110101(补码)
同理 二进制转回十进制。
int.maxvalue== 2^31-1(int 32位 一位符号,减去个0)
int.minvalue== -2^31
int.maxvalue+1==int.minvalue

四、位运算:对操作数以二进制位为单位进行运算
&与 同个位均为1则为1 否则为0
| 或 同个位均为0则为0 否则为1
^异或 同个位不同为1 相同为0*
~取反 1变0 0变1
<<左移 a《b 表示把a转为二进制后在后面补b个0
例:11<<2 00001011左移两位 00101100 ==44 即11*2^2==44
所以a《b == a * 2^b
>>有符号右移
例:-11>>2 11110101右移2位 _ _111101 前面的两个空位负数补1正数补0 所以此时补1为11111101 = -3
所以a>>b=a➗2^b
>>>无符号右移
与上同 但是空位全部补0

用途:这些位运算全部比十进制的运算快
1、x=x*2^n —>x《n (x乘2的n次方 == x左移n位)
2、x=x / 2^n —> x>>n (x除2的n次方 == x右移n位)
3、x=(int) 1.232 数值转整数 x= 1.232>>0 (转int 可以用右移0位,小数舍弃)
小数的二进制 :小数部分依次乘2,整数取出
4、不用第三个变量交换
a=a^b(a记录差异)
b=a^b(由现b和差异得到原a)
a=a^b (由a和差异得到b)
相当于结合律加交换律
a=a+b 记录和
b=a-b 和-b=a
a=a-b 和-a=b
5、正负数交换
i = -i —>i=~i+1 (i变为负i==i取反+1)
6、取余数
x=131%4 —> x=131&(4-1) 必须为2的倍数
7、是否为2的倍数
i%2==0 —>(i&1)==0

五、其他知识点
1、switch的表达式类型:整形int(byte short char也可以因为可以自动转为int,long则不行)+枚举enum(java5)+String(java7)
2、二维数组可以每行的元素不同,即可以声明int[ ][ ] = new int[7][ ](行必须写,可以第一行为int[2],第二行为int[3]等)
例如 int[ ] [ ] num = {
{1,2,3},
{4,5},
{6}
}
3、num.length 数组的length为属性 , String.length() 字符串的为方法
4、乱序的实现

猜你喜欢

转载自blog.csdn.net/cairuojin/article/details/80790703
今日推荐