2 Java语言的基础组成
明确变量名和数据来完成的。
byte:一个八位,八个二进制位。(-128-127)
short:2个八位。16个二进制。
int :四个八位。 long l = 4l:
数据类型 变量名 = 初始化值;int x = 4;
float f = 2.3f;(四个八位)
char ch = '4'; char ch3 = ' ';可以。
char ch = "你";可以的
当数据不确定的时候,需要对数据进行存储时,
就定义一个变量来完成存储。
自动类型转换(也叫隐式类型转换)
强制类型转换(也叫显式类型转换)
//类型转换的原理
什么时候要用强制类型转换?
表达式的数据类型自动提升
所有的byte,short,char的值将被提升为int型。
字符1和数字1不同。'1':49
char为什么能进行运算?因为在ascii码中都有对应的数字。
2.5 算术运算符+-*/,++,--,
赋值运算符
比较运算符
逻辑运算符
位运算符
三元运算符
取模就是取余数。10%4=2
5%1=0;左边小于右边,取模为左边。
取模的正负看左边。
b=a++;++叫给a变量的值加1,并赋给b,是先赋值再自加。
b=++a;a先自加,再赋值。
+:可作字符串连接符。字符串数据和任何数据使用+号都是连接,
都会变成字符串。
转义字符。通过\反斜线来转变后面字母或者符号的含义。
\n:换行。\b:退格 \r:回车键 \t:相当于tab.制表符
赋值运算符=
x+=4;相当于x=x+4;
short s = 4;s=s+5;不行的。二次运算,不会自动转换。
short s = 4;s+=5;可行的。一次运算,在范围内会自动转换。
比较运算符,>,<,==:结果为真或假。
逻辑运算符
&,|,^,!,&&,||,
x>3 & x<6
&特点:只要两边的boolean,只要二边一个false,结果就是false,
只有二边都为true,才为true;
^:异或:就是和|不一样,当true^true = false;
两边相同,结果为false,两边不同,结果为true;
false ^false = false;
&&:短路与:当前面的表达式不成立时,后面不再运算.
||当左边为true,右边不参与。
3<<2:3左2位。
3 << 2:为12
0000-0011-〉0000-1100;12.后面补0。
6>>2:6右移2位:为1
0000-0110 >>0000-0001。前面补0
3<<2:3*4;3*2的二次方。
<<向左移,移多少位,就是乘二的几次幂。
>>向右移,移多少位,就是除以二的几次幂。
6>>2:6/4=1转换成int,小数舍去。
>>右移,最高位为1,前面补1。
>>>:无符号右移。无论最高位是什么,都用0补。
6 & 3 = 2;
110&011 =010; (0不假,1为真)
6 | 5 = 7;
110 | 101 = 111;
异或:
6 ^ 5 =3
110 ^ 101 = 011
~:反码,就是取反。
7^4^4=7;一个数异或一个数二次,结果还是那个数。
练习题:最有效率的方式算出2乘以8等于几?
最有效率的方式是二进制的左移右移,乘以8就相当于向
左移动3位,2的三次方等于8,所以为 2<<3 ;(位运算)
对二个整数变量的值进行互换,不要第三方变量。
需要第三方变量的互换我们都会,那不需要第三方的变量呢?
关键就是借助一个数异或同一个数二次,会变回原来的值。
int x =3; int y = 8;
//第一种。
x = x + y;
y = x - y;
x = x - y;
x = x ^ y;
y = x ^ y;
x = x ^ y;
三元运算符。
(条件表达式)?表达一:表达表二。
条件表达式为真,就计算表达式一,条件为假就计算二。
好处:可以简化if else代码。
弊端:因为是一个运算符,所以运算完成必须要有一个结果。
拿最低四位,
那就是拿最低四位的1,那就拿四个1去与一下。拿15去与。
拿第二个最低四位。先右移四位,再拿四个1去与。
12-10=2+'A';(char)67;(char)(12-10+'A');
2.6程序流程控制
判断结构,选择结构,循环结构
判断结构if()
1。 if(条件表达式)
{
执行语句;
}
2. if(条件表达式)
{
执行语句;
}else
{
执行语句;
}
3. if(条件表达式)
{
执行语句;
}else if(条件表达式)
{
执行语句;
}
...
else
{
执行语句;
}
注意,一个if是一个语句。
需求,根据用户指定月份,打印相对应的季节。
选择结构:
switch (表达式)
{
case 取值一 :
执行语句;
break;
case 取值二 :
执行语句;
break;
...
default:
执行语句;
break;//(最后的break可以省略)
}
//表达式的值只接受四种,byte,short,int ,char,1.5版本。
//default,可以随便放哪,都在最后执行。
//二种结束方式,一为break;一为最后的大括号。
//传说 switch 比 if 语句的效率高。
if和switch语句很像
具体什么场景下,应用哪个语句?
如果判断的具体数值不多,而是符合 byte short int char 这四种类型
虽然两个语句都可以使用,建议使用switch,因为效率稍高。
其他情况:对区间的判断,对结果是boolean类型的,使用if,范围更广。
另:switch 在jdk5.0版本增加对枚举选择,7.0增加对 String 选择。