变量
定义:在程序执行的过程中,在某个范围内其值可以发生改变的量。本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用必须事先声明,然后必须进行初始化。
格式:数据类型 变量名=变量值;
数据类型
数据类型分为基本数据类型和引用数据类型。引用数据类型分为类(class)、接口(interface)、数组([]),而基础数据类型则分为数值型、字符型(char)、布尔型(boolean),其中数值型又分为整数类型(byte、short、int、long)以及浮点类型(float、double)。
整数类型
byte 1(占用字节位数) -128~127
short 2 -2^15~2^15-1
int 4 -2^31~2^31-1
long 8 -2^63~2^63-1
浮点类型
float 4
double 8
字符型
char 2
布尔型
boolean 1
注意事项:
1、整数默认int,小数默认double
2、同一作用范围内,变量名不可重复
3、长整形数据后面用L或者l标记
4、小数后面用F或者f来标记为float类型
5、建议一行只定义一个变量
数据类型转换
一般默认计算中都是采取相同数据类型计算
默认数据类型转换
byte,short,char-->int-->long-->float-->double
byte,short,char相互之间不转换,他们在运算的时候自动转换成int类型
强制数据类型转换
目标类型 变量名=(目标类型)(被转换的数据)
注意:
1、数据参与运算在计算机中都是以补码的形式参与运算的
2、(float)1.2和1.2f的区别在于1.2f本身就是个float类型,不存在截取长度损失精度这一说法
3、变量相加,会首先看类型问题(有提升就提升),最终把结果赋值也会考虑类型的问题
4、常量相加,会首先进行运算,然后看运算结果是否超出接收的数据类型的范围内,如果有就赋值,如果没有就报错
5、当字符串与其他数据做加法的时候,这里的加法起到的连接符的作用;当+号两边是数值或者是数值变量或者是字符的时候,做的是加法运算
6、ASCll码需要记得的有三个,‘a’ 97、‘A’ 65、‘0’ 48,其余查表
运算符
算数运算符
+,-,*,/,%,++,--
注意:
1、整数相除只能得到整数,如果想要得到小数,除数可以*1.0
2、++和--放在后面时,先运算再自增或者自减;放在前面时,先自增或者自减再运算。注,只针对变量,常量无法自增或者自减
赋值运算符
=,+=,-=,*=,/+,%=
注意:
1、a=a+1与a+=1的区别在于a+=1存在一个强制转换,相当于a=(a的数据类型)(a+1)
比较运算符
==,!=,>,<,<=,>=,instanceof(检查是否是类的对象)
关系运算符的结果都是boolean类型的值
逻辑运算符
&(与),|(或),^(异或),!(非),&&(短路与),||(短路或)
注意:
1、逻辑运算符用于连接布尔型表达式,在java中不可以写3<a<6,而是写成3<a&a<6
2、异或(^)是相同false,不同为true
3、&与&&的区别:&的左右两边都要进行判断,而&&只要左边判断为false,那右边就不参与运算;|和||同理
位运算符
<<(左移),>>(右移),>>>(无符号右移),&(与运算),|(或运算),^(异或运算),~(反码)
位运算是直接对二进制进行运算
1、<<:就是讲左边的操作数在内存中的二进制数据左移右边操作数指定的位数,右边移空的地方补0,相当于乘以2的倍数(3<<2=12-->3乘以2乘以2等于12)
2、>>>:无论最高位是1还是0,左边被移空的位都填入0
3、>>:右移稍微复杂一点,如果最高位是0,左边被移空的位就填入0,;如果最高位是1,左边被移空的位就填入1,相当于除以2的倍数(3>>1=1-->3/2=1)
小练习:
//用位异或实现两个变量值的交换 a=a^b; b=a^b; a=a^b;
最快的方法 a = (a+b) - (b=a),还有两种方法是引入第三个变量以及ab的加减获得
//最有效率的方式写出2*8的结果 2<<3
三目(元)运算符
(判断表达式)?1:2
如果条件为true则返回1;如果条件为false则返回2
注:三目表达式的结果的数据类型以最大的那个数据类型为准