1变量
概念:
内存中一个存储区域,该区域拥有自己的名称和数据类型,该区域的数据可以在同一数据类型的范围内不断变化。
定义
数据类型 变量名=初始化值。
通过变量名来访问所指向内存区域的值。
注意
需要初始化才能使用变量
变量作用域在一对{ }内
2数据类型
基本数据类型 8个
byte : 8位,最小数据单位,-128-127
short : 16位 -32768 ~ 32767
int : 32位 -2^31 -1 ~ 2^31 ,默认
long :64位 在定义后面加l ,小于32位的变量按int结果算
char :16位 用单引号括起来的 1 个字符 不能为 0个字符
boolean
float: 32位 1 位符号位,8 位指数,23 位有效尾数 如果要是float, 数字后面要加f
double : 64位 1 位符号位,11 位指数,52 位有效尾 默认
级别:byte,char,short(这三个平级)–>int–>float–>long–>double
string是引用数据类型
3运算符
1算数运算符
“ + -*/ %” %:任何整数模2不是0就是1,所以只要改变被模数就可以实现开关运算。
+:连接符。
++,- -
2比较运算符
3赋值运算符
= += -= *= /= %=
4逻辑运算符 运算结果为true或false
& | ^ ! && ||
^两边不一样为true
& 和 &&区别:
& :无论左边结果是什么,右边都参与运算。
&&:短路与,如果左边为false,那么右边不参数与运算。
| 和|| 区别:
|:两边都运算。
||:短路或,如果左边为true,那么右边不参与运算。
5位运算符 现将数字转化为二进制,按位计算,运算结果为数字,
& | ^~
<< 左移:向左移几位就是乘以2的几次幂 12<<2=12*4=48
>>右移 :向友移几位就是除以2的几次幂 12>>2=12/4=3
^:相同则0,不同则1 一个数据对另一个数据位异或两次,该数本身不变。
~:按位取反
6三元运算符
(关系表达式) ? 表达式1 : 表达式2;
陷阱题
1
byte b1=3,b2=4,b;
b=b1+b2; //错误,在计算中jvm把b1,b2转换为int类型计算,int类型赋值给byte会抛出损失精度的错误。
2
byte by = 130;
byte的范围为-128 -127,130超出范围,运算会砍掉前面8位,结果变成126
130 转为二进制
00000000 10000010
10000010取补码 11111110 得到-126
3
byte b=1;
b++;
这里会做一个自动转化动作,b=(byte)(b+1) ,不报错
4
赋值运算符 系统会自动转换 ,
byte a=1;
a+=1;
5判断一个值是否为奇数,是返回true,
效率最高:
int i;
return (i&1)==1
return (i>>1<<1!=i)
6 &和&&
int y=1,x=1;
if(1==3 & ++y>0) ;
if(1==3&& ++x>0);
System.out.println("Y:"+y+"...X:"+x);
结果:Y:2…X:1