黑马程序员---java基础语法---关键字,常量,变量,运算符
第一讲:java语言基础
1、关键字的定义和特点
- 定义:被Java语言赋予了特殊含义的单词
- 特点:关键字中所有字母都为小写
用于定义数据类型的关键字 class interface byte short int long float double char boolean void
用于定义数据类型值的关键字 true false null
用于定义流程控制的关键字 if else switch case default while do for break continue return
用于定义访问权限修饰符的关键字 private protected public
用于定义类,函数,变量修饰符的关键字 abstract final static synchronized
用于定义类与类之间关系的关键字 extends implements
用于定义建立实例及引用实例,判断实例的关键字 new this super instanceof
用于异常处理的关键 try catch finally throw throws
用于包的关键字 package import
其他修饰符关键字 native strictfp transient volatile assert
2、标识符:字母,数字,下划线,美元符号。注意:数字不可以开头,不可以使用关键字
java中的名称规范:
包名:多单词组成时所有字母都小写。xxxyyyzzz
类名接口名:多单词组成时,所有单词的首字母大写。XxxYyyZzz
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接。XXX_YYY_ZZZ
3、类名单词首字母大写(规范)
4、注释:作用1:对程序进行说明。2:调试程序 。
/*多行注释*/ //单行注释 /** 文档注释 */
注意:多行注释不要嵌套多行注释
5、常量:不能改变的数值。字符常量:单引号‘’标识只能有单个字符。布尔常量:true,false。字符串常量:双引号“”标识多个或一个字符。
6、进制:01010101 8个bit为一个单位byte(字节)
对于整数:有四种表现形式。
二进制:0,1 ,满2进1.
八进制:0-7 ,满8进1. 用0开头表示。
十进制:0-9 ,满10进1.
十六进制:0-9,A-F,满16进1. 用0x开头表示。
进制的基本转换
十进制转换为——>二进制:如9的二进制,算法
结果就为:1001,注意:结果要从下往上写。
二进制转化为——>十进制:如1100的十进制等于:23*1+22*1+21*0+20*0=12。
简而言之:十进制转二进,除2取余数;二进制转换为十进制,乘以2的幂数。
十进制与八进制和十六进制的互转,跟转换二进制的方法一样。有简便的算法就是,可以先将十进制转换为二进制,再转换为八进制和十六进制。这就利用了一个八进制位相当于三个二进制位,而一个十六进制位相当于四个二进制位。如:
负数的二进制表现形式:只要将对应的正数取反加1就行了。如:-6的二进制
注:负数的最高位都为1。
四、变量
概念:内存中的一个存储空间。有自己的名称(变量名)和类型(数据类型)。
作用:用来不断的存放同一类型的数据,并可以重复使用。
定义变量的格式:数据类型 变量名 =初始化值;
数据类型:
Java中有两种数据类型:1、基本数据类型;2、引用数据类型。这里主要讲解基本数据类型。
说明:Java程序中,整数默认:int 小数默认:double
类型的自动提升:
在运算中,当低类型数据与高类型数据进行计算时,系统会自动将表达式中的低类型数据提升到高类型。如:
byte b = 3 ; int c;
c= b + 2; //b会自动提升为int类型进行运算。
强制类型转换:
当程序中,数据类型需要变换时,可以进行强制转换。如:
byte b = 3;
b = b + 4;//报错
b = (byte)b+4;//强制类型转换,强制将b+4的结果转换为byte类型,再赋值给b。
五、运算符
1、算术运算符
注:进行取模运算时,如果有负数,运算结果取决于运算左边有没有负数。
字符串数据和任何数据使用 +都是相连接,最终都会变成字符串。
“+”除字符串相加功能外,还能把非字符串转换成字符串 ,
例如:System.out.println("5+5="+5+5);//打印结果是?
5+5=55
2、赋值运算符
符号:= += -= *= /= %=
例: int a,b,c; a=b=c =3;
int a = 3; a+=5;//等同运算a=a+5;
思考:
short s = 3;
s=s+2;//编译不通过
s+=2; //编译通过,会做自动转换
有什么区别?
3、比较运算符
注:1、比较运算符的结果都是boolean型,也就是要么是true,要么是false。2、比较运算符“==”不能误写成“=”。
4、逻辑运算符
逻辑运算符用于连接boolean类型的表达式。
&:只要两边的boolean表达式结果,有一个为false,那么结果就是false。只有两边都为true,结果为true。
|:两边只要有一个为true,结果为true;只有两边都为false,结果为false。
^:两边相同结果是false,两边不同结果是true。
&和&&的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
5、位运算符
左移:<<;空位补0,被移除的高位丢弃,空缺位补0。3<<2即3*2*2=12;3左移2位,移几位就是2的几次幂
右移:>>;被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。就是除以2的次幂运算,移几位就是几次幂
无符号右移:>>>;被移位二进制最高位无论是0或者是1,空缺位都用0补。
与: &;二进制位进行&运算,只有1&1时结果是1,否则是0。
或:|;二进制位进行 |运算,只有0 | 0时结果是0,否则是1。
异或: ^;任何相同二进制位进行 ^运算,结果是0;1^1=0 , 0^0=0。一个数异或另一个数两次,结果还是原来的属:
不相同二进制位 ^运算结果是1。1^0=1 , 0^1=1。
反码:~;对二进制进行取反。
首先要明确,取反是二进制操作
下面以5为例:
二进制原码:0000 0000 0000 0000 0000 0000 0000 0101
取反操作后:1111 1111 1111 1111 1111 1111 1111 1010
而在Java中,有符号整数都是用补码来表示,而补码=反码+1
1.先求反码:1000 0000 0000 0000 0000 0000 0000 0101
2.再求补码:1000 0000 0000 0000 0000 0000 0000 0110
最高位代表符号位 1 表示负数,0 表示正数 所以结果是-6
6、 三元运算符
格式:
(条件表达式)?表达式1:表达式2;
a)如果条件为true,运算后的结果是表达式1;
b)如果条件为false,运算后的结果是表达式2;
示例:
获取两个数中大数。
int x=3,y=4,z;
z = (x>y)?x:y;//z变量存储的就是两个数的大数。
获取三个数中大数。
int a=9,b=5,c=7,max;
max=((max=(a>b?a:b))>c?max:c);
运算符的优先级:
运算符优先级表
优先级 |
运算符 |
结合性 |
1 |
() [] . |
从左到右 |
2 |
! +(正) -(负) ~ ++ -- |
从右向左 |
3 |
* / % |
从左向右 |
4 |
+(加) -(减) |
从左向右 |
5 |
<< >> >>> |
从左向右 |
6 |
< <= > >= instanceof |
从左向右 |
7 |
== != |
从左向右 |
8 |
&(按位与) |
从左向右 |
9 |
^ |
从左向右 |
10 |
| |
从左向右 |
11 |
&& |
从左向右 |
12 |
|| |
从左向右 |
13 |
?: |
从右向左 |
14 |
= += -= *= /= %= &= |= ^= ~= <<= >>= >>>= |
从右向左 |
六、转义字符
概念:通过 \ 来转变后面字母或符号的含义。
常用转义字符:
\b:退格
\n:换行
\t:制表符,相当于tab键
\r:回车
\\:表示反斜杠
\':表示单引号
\":表示双引号
最后、编个小程序练习下: