数据在计算机底层都是采用二进制进行储存
二进制,使用0和1,按照逢二进一的规则来表示数据
列如:6=110 2=10等
计算机中表示数据的单元:字节(byte,简称B,是使用8个二进制位组成的);
字节中的每个二进制位就称为位(bit,简称b),1B=8b;
那么其他数据形式是如何存储的呢?
中文文本,image图片,Sound声音
字符 在计算机中,根据ASCII编码表进行存储的,即美国信息交换标准码,规定了现代英语,数字字符和其他西欧字符对应的数字编码。
图片 图片本质上是由无数个像素点组成的,每个像素点的数据:用0~255 * 0~255表示其颜色
音频 声音数据在计算机内也是由二进制数字表示的,声音本质上是一种波,计算机通过0和1记录波形文件
二进制,八进制,十六进制 相互转换
十进制转换二进制,可以尝试除二取余法(方法自研)
八进制 每3位二进制作为一个单元,最小数是0,最大数是7,共八个数字,这就是八进制
十六进制 每4位二进制作为一个单元,最小数0,最大数是15,共16个数字,依次使用0~9ABCDEF代表就是十六进制
数据类型
Java数据类型可以分为整形byte,short,int(默认),long;浮点型:float,double(默认);
字符型char,布尔型boolean。
数据类型转换
当你需要将存在不同类型的变量赋值给其他类型的变量时,就需要进行类型转换
自动数据类型转换
类型范围小的变量,可以直接赋值给类型范围大的变量
强制数据类型转换
当类型范围大的数据或者变量,直接赋值给类型范围小的变量,就会报错
代码实例
int a = 20;
byte b = a;//报错
强制类型转换:强行将类型范围大的变量或者数据赋值给类型范围小的变量
int a = 20;
byte b = (byte) a;
在表达式中,小范围类型的变量,会自动转换成表达式中较大范围的类型,再参与运算。
byte,short,char->int->long->float->double
值得注意的是,在表达式中的最终结果类型是由表达式中的最高类型决定的
在表达式中,byte,short,char是直接转换成int类型参与运算的
运算符
"+" 加
"-" 减
"*" 乘
"/" 除
"%" 取余 获取的是两个数据做除法的余数
注意
"+"在与字符串运算时是用作连接符的,并且注意字符串之后的数据统一按照字符串进行连接,但之前的按照正常运算
代码实例
int a = 10 ;
int b = 20 ;
System.out.println("abc"+a); //abca
System.out.println(a + b + "abc"+ a +b); //30abc1020
速练
一个三位数,将其拆分成个位,十位,百位,并将其打印
代码
int num = 123;
// 将数字拆分成个位、十位、百位
int ones = num % 10;
int tens = (num / 10) % 10;
int hundreds = (num / 100) % 10;
// 打印结果
System.out.println("个位:" + ones);
System.out.println("十位:" + tens);
System.out.println("百位:" + hundreds);
自增自减
自增++ 自减--
放在某个变量前面或者后面,对变量自身+1或者-1;
注意
自增自减在变量前后时,要特别注意
放在变量前面,先对变量进行+1,-1.然后再拿变量的值进行运算
点击查看代码
int a = 1 ;
int rs = ++a; //先加后用 rs = 2 , a = 2
放在变量的后面,先拿变量的值进行运算,再对变量的值进行+1,-1
点击查看代码
int b = 10;
int rs = b++; //先用后加 rs =10,b=11;
赋值运算符
+= 加后赋值
-= 减后赋值
*= 乘后赋值
/= 除后赋值
%= 取余后赋值
注意 赋值运算符会将结果强制类型转换
列如
a+=b
底层代码形式为
a=(a的类型)(a+b);
会将a后的结果强制转换为a的数据类型
关系运算符
">"大于
= 大于等于
< 小于
<= 小于等于
== 判断两者是否相等
!= 不等于
逻辑运算符
& 逻辑与 多个条件必须都为true,结果才能是true
| 逻辑或 多个条件只要有一个true,结果就是true
!逻辑非 取反
&& 短路与 判断结果与&一样,过程不一样。左边为false,右边不执行。
|| 短路或 判断结果与|一样,过程不一样。左边为true,右边不执行。
三元运算符
条件表达式?值1:值2;
首先计算关系表达式的值,结果值为true,返回值1,如果为false,返回值2.
点击查看代码
int a=1;
int b=2;
int c= a>b?1:2; //c=2 a比b大为假,则返回值2