------- android培训、java培训、期待与您交流! ----------
Day02 java基础语法1
1.Java语言基础组成:
关键字:被java语言赋予了特殊含义的单词,所有字母都小写。标识符:在程序中自定义的一些名称。由26个英文字母大小写组成,数字:0-9 符号:_$组成。另外还有注释,常量和变量,运算符,语句,函数,数组。
2.进制的转换
一个整数有四种表现形式,即二、八、十、十六进制。二进制的表现形式,用1010的排列组合表现不同的数据。1个字节=8个二进制位组成,最大是255,一个汉字=2个字节。
a.十进制转成二进制
原理:对十进制数进行除2运算。
二进制转十进制
原理:二进制乘以2的过程。
注意:二进制的加法运算和十进制的一样。
b.八进制转成十六进制
以90为例子,先将十进制转成二进制,然后将二进制转成十六进制,或其他进制。
c.负数的二进制表现形式
6=110
-6:其实就是6的二进制取反加1.
取反:将二进制的1变成0,0变成1.
0000-0000 0000-0000 0000-0000 0000-0110
1111-1111 1111-1111 1111-1111 1111-1001
+0000 0000 0000 0000 0000 0000 0000 0001
=1111 1111 1111 1111 1111 1111 1111 1010
规律:负数的最高位都是1。
3.变量
通过明确数据类型、变量名称、数据来完成将不确定的数据进行存储。
概念:内存中的一个存储区域
目的:用来不断的存放同一类型的常量,并可以重复使用。
什么时候定义变量?
当数据不确定,需要对该数据进行存储时,就定义一个变量来完成存储动作。
4.类型转换
java强类型特点容易导致类型在转换时候发生”可能损失精度的问题“。
思考:为什么byte b = 3可以,而b = b+2就不行了呢?
因为前者的3是常量,等式会做一个判断3是否属于byte类型的区间,而后者的b是不确定的数,它加2之后的值是不确定的,有可能会超出byte类型的值,故后者不行。
a.自动类型提升(隐式类型转换)参考老毕PPT(Page14):
思考1:System.out.println('a')与System.out.println('a'+1);
思考2:byte b1=3,b2=4,b;b=b1+b2;b=3+4;哪句是编译失败的呢?为什么?
b1+b2的值是不确定的,有可能会超出byte类型的b的取值范围。
可以改成b=(byte)(b1+b2):
b.强制类型转换(显式类型转换)
5运算符
a.取模运算,如下图:
b.赋值运算符
思考题:short s = 3;s = s+2;s+=2 两者有什么区别?
分析如下图:
s=s+1这句先执行s+1然后把结果赋给s,由于1为int类型,所以s+1的返回值是int,编译器自动进行了隐式类型转换所以将一个int类型赋给short就会出错,而s+=1不同由于是+=操作符,在解析时候s+=1就等价于s =(short)(s+1),简单来讲就是 s+=1 <=> s = (s的类型)(s+1)。
c.位运算符
左移<<:如3<<2?
右移>>:6>>2?
规律:右移变小,左移变小。其实左移其实就是乘以2的移动的位数次幂,右移动就是除以2的移动的位数次幂:即左移=3*2(位数),右移=6/2(位数)
注意:右移带符号,最高位补什么以最高位为准!而>>>右移无论最高位是什么,都补0;
注意异或的妙用!加法运算可能损失精度,而异或则补存在这个问题,而且可以简化转换赋值的操作。
d.三元运算符
格式:(条件表达式)?表达式1:表达式2;
如果条件为true,则运算结果为表达式1,否则为表达式2.
6.程序流程控制
它包括三种结构:判断,选择,循环结构。
a.if判断结构.if语句常见三种格式,它的特点:
a1.每一中格式都是单条语句。
a2.条件表达式无论写成什么样子,只看最终的结果是true或者false.
a3.它与三元运算符的区别:后者必须要有结果。
b.switch语句
特点:
b1.switch语句选择的类型只有四种:byte,short,int,char,java5开始多了个枚举,java7多了个String。
b2.case之间与default没有顺序。先执行第一个case,没有匹配的case执行default。
b3.结束switch语句的两种情况:遇到break,执行到switch语句结束。
b4.如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。
注意:当default放在第一个位置时候,语句执行顺序依然是先读第一个case!如果所有的case都不符合再读default!!!
c.循环语句
有三种:while,do while,for
c1.格式: while(条件表达式){执行语句};do while:do{执行语句}while();for(初始化表达式;循环条件表达式;循环后的操作表达式){执行语句}
注意:do while特点是条件不论是否满足,循环体至少被执行一次。
c2.for和while可以互换,区别在于for为了循环而定义的变量再for循环结束时在内存中释放,而后者的变量再循环结束后还可以继续使用。
c3.最简单无限循环格式:while(true),for(;;),原理是没有循环的结束条件。
总结:什么时候使用循环结构?
当需要对某些语句执行很多次的时候,就用循环结构
d.break与continue
break:应用范围为选择结构和循环结构。
continue:应用与循环结构;
注意:这个两个语句离不开应用范围,并且在该语句下面的语句是执行不到的。