1.十进制到任意进制的转化
用当前十进制数据除以基数直到商为0,余数取反
2.8421码(快速转化法)
成为BCD码,一种二进制和十进制之间的快速转化法
X进制--->Y进制:
方式一:分步完成
X进制--->十进制
十进制--->Y进制
二进制--->八进制(0b1011001)
二进制--->十进制64+0+16+8+0+0+1=89
十进制--->八进制89/8=11余1
11/8=1 余3
1/8=0 余1
0131
方式二:使用进制的概念去完成 (0b1001101)
八进制:从右边开始每三位一组,左边不够的补0,计算出每个位上的十进制
0b 001 001 101--->0115
十六进制:从右边开始每四位一组,左边不顾的补0,计算出每个位上的十进制
0b 0100 1101--->0x4d
3.有符号位的数据表示法(计算机底层进行运算:使用数据的补码进行计算)
正整数:最高符号位为0
负整数:最高符号位为1
正整数原码,反码,补码都相同
负整数反码:在原码的基础上,最高符号位不变,数值按位取反(0变1,1变0)
负整数补码:在反码的基础上,末尾加1,最高符号位不变
原码:10011101
反码:11100010
补码:11100011
4.变量的三要素
变量:在程序运行中,气质不断发生改变的量
1)变量的限定(数据类型)
2)给当前变量所在空间的地址值起名字(标识符规则)
3)需要给变量一个初始化值
5.数据类型划分
A)基本数据类型:四类八种
整数类型:byte 字节类型 1字节
short 短整型 2字节
int 整型 4字节
long 长整型 8字节
小数类型:默认是double
float 单精度 4字节
double 双精度 8字节
字符类型:char 2字节
布尔类型:boolean 1字节
B)引用数据类型:数组,接口,类(具体类,抽象类)
定义long类型的注意事项:需要在当前变量值的后面加上标记L/l
double类型数据转换成float类型数据可能会有损失,需要在单精度的值后边加上:F/f float f = 12.56F;
6.定义变量的注意事项
1)给变量命名的时候见名知意
2)变量尽量给一个初始化值,或者在使用之前给定一个初始化值
3)java是一种强类型语言,规定了同一个变量名不能定义多次(语法规则和书写)
7.运算注意事项
boolean类型不参与运算,只做判断
隐式类型提升:byte,char,short三者之间不转换,一旦参与运算,数据类型将提升到int类型
Java中强制类型转换的书写格式:
目标数据类型 变量名 = (目标数据类型)初始化值;
强制类型转化不能随意使用,会损失精度,除非有需求(在引用类型中用的比较多)
面试问题:以下代码存在的问题?
byte b , b1 = 3 , b2 = 4;
A.b = b1 + b2;
B.b = 3 + 4;
存在问题?如何解决?
A.变量相加要考虑隐式类型提升问题,两个byte类型相加最后结果成为int类型
解决方案:b = (byte)(b1 + b2);
B.常量相加,将常量进行运算,运算之后看起结果是否在接收数据类型的取值范围内
8.+号
1)表示数据是一个正整数
2)表示算数运算符中的加法运算
3)字符串拼接符
例:"hello"+'a'+1--->"helloa1"
"5+5="+5+5--->"5+5=55"
字符串后边的加号都是拼接符,不做运算
'a'+1+"hello"--->"98hello"
5+5+"=5+5"--->"10=5+5"
9.运算符
算术运算符:+,-,*,/(默认取整数),%(取模:求余数)
扩展:++,--
分两种情况:
1)单独使用:无论++/--在变量前面还是在后面,都是对当前该变量值进行自增1或者自减1
2)参与运算使用:
a.++/--在变量前面,先自增1或者自减1,再将然后运算
b.++/--在变量后面,先运算(赋值),然后自增11或者自减1
赋值运算法:
1)基本赋值运算符:将等号右边数据赋值给等号左边数据
2)扩展赋值运算符:+=,*=,-=,/=,%=
将等号左边的数据和右边的数据相加/相乘/相减/相除/求余,将结果赋值给左边数据
隐藏了强制类型转换!!!
面试题:以下代码哪一句会编译失败,如何解决?
short s = 1;
A.s = s +1;
B.s += 1;
A.参与运算,数据类型被提升为int类型(隐式类型提升)
解决方法:s = (short)(s + 1);
B.等价于s = (short)(s + 1);
比较(关系)运算符(使用居多):
逻辑运算符:
位运算符:
三元(三目)运算法 (使用居多):