1、变量:在程序的执行过程中,其值可以发生改变的量叫变量。
A:定义变量的格式:
1、数据类型 变量名 = 初始化值;
2、数据类型 变量名;
变量名 = 初始化值;
B:作用域:
1、变量在同一个大括号内有效,出了大括号外无效
2、相同的作用域不能定义两个同名变量
2、数据类型:
A:基本数据类型
整数型:
byte 1个字节 -2^7~2^7-1
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
B:引用数据类型
注意事项:
1、整数默认是int类型
2、如果要定义一个long类型的数据,末尾要加上L
3、小数默认是double类型
4、如果要定义一个float类型的数据,末尾要加上F
C: 1、自动类型转换:
byte,short,char在参与运算的时候会自动提升到int类型
由大的数据类型接收小的数据类型,会自动转换,不会报错。
2、强制类型转换
由小的数据类型接收大的数据类型,会报错,接收不了,这时候需要强制类型转换
格式:目标数据类型 目标变量名 = (目标数据类型)要转换的数值/变量
3、例题:
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么呢?
变量相加和常量相加不一样:
1、变量相加首先会提升数据类型,然后再相加赋值,如果接收的数据类型范围小于计算结果后的数据类型范围,报错,不能赋值
2、常量相加,会先进行计算,计算完后看看在不在接收的数据类型范围内,如果在,直接赋值,如果不在,报错。
3、运算符(true为1,0为false):
运算:对常量和变量进行操作的过程称为运算
运算符:对常量和变量进行操作的符号成为运算符
操作数:参与运算的数据成为操作数
表达式:用运算符把常量或者变量连接起来并且符合Java语法的式子称为表达式
A:ASCII码应记住的三个字符对应的值:
'0':48 'A':65 'a':97
B:算术运算符:+,-,*,/,%,++,--
1、+号的用法:
a:当+号两边都是数字或者是数字和字符的时候,这时候的+号是做加法运算的
b:当+号两边其中是字符串的时候,做的是字符串拼接,拼接后是一个新的字符串
c:字符串与任何数值做加法,做的是字符串拼接,拼接后是一个新的字符串
2、++:自加1
当++在前的时候,先自加1,再做赋值操作,当++在后的时候,先做赋值操作,再做自加1
--:自减1
当--在前的时候,先自减1,再做赋值操作,当--在后的时候,先做赋值操作,再做自减1
C:赋值运算符:=,+=,-=,*=,/=,%=
1、= 赋值号
2、+=加赋值
把左边和右边的结果赋值给左边
注意:左边不能是常量
3、例题:
short s=1, s = s+1;
short s=1, s += 1;
上面两个代码有没有问题,如果有,那里有问题
第一个有问题,因为变量参与运算,首先会提升数据类型,然后做运算。所以 s = s+1;s会提升到int类型然后再做加法运算,最终的
结果是int类型,所以拿short类型接收会报错,所以要想成功赋值,就得强制类型转换。
第二个代码没有问题,是因为内部自动包含了强制类型转换,s+=1 ===> s = (s的数据类型)(s+1)
D:比较(关系)运算符:==,>,<,>=,<=,!=
注意事项:
1、关系运算符的表达式的结果是一个boolean类型,即为true或者false
E:逻辑运算符:&,|,^,!,&&,||
1、&:参与运算的时候,两边有false(0),则为false(0),两边都做运算
2、|:参与运算的时候,两边有true(1),则为true(1),两边都参与运算
3、^(异或):参与运算的时候,相同为false,不同为true,两边都参与运算
4、!:将true变为false,false变为true
5、&&(短路与):结果与单个&结果一样,有0为0,但是执行的东西不一样
当&&左边结果为false,则最终结果为false,右边不执行
6、||(短路或):结果与单个|结果一样,有1为1,但是执行的东西不一样
当||左边结果是true的时候,右边不执行,最终结果为true
F:位运算符:&,|,^,~,<<,>>,>>>
1、<<:左移,多出来的丢弃,右边用0补齐
2、>>:右移,多出来的丢弃,最左边最高位是1用1补齐,反之用0补齐
3、>>>:无符号右移,无论左边最高位是1还是0,都用0补齐,多出来的丢弃
4、~:二进制按位取反(反码) 例:~6=-7
G: 三目运算符:(关系表达式)?表达式1:表达式2;
如果关系表达式的结果为true,运算后的结果是表达式1;
如果关系表达式的结果为false,运算后的结果是表达式2;
1、注意事项:
a:三目运算符表达式的结果数据类型由三目运算符表达式1和表达式2中最大的数据类型决定的。
b:关系表达式一定只能是boolean类型。