1.关键字--被赋予特殊含义的单词
学习Java的过程中去记忆。
2.标识符---就是指名称(类名、对象名、变量名、函数名、对象名等)
1.26 个英文字母的大小写、0~9数字、_和$(不允许有空格)
2.数字不能开头,关键字不能用来命名
3.类名-首字母大写(XxxYyyZzz);函数名-(xxxYyyZzz);变量名对象名(xxxyyyzzz)
(1)和(2)是强制规则,(3)是潜规则
3.注释
1.单行注释——//注释内容
2.多行注释——/*注释内容*/
3.文档注释——/**注释内容*/
4.常量与变量
5.运算符
6.语句
7.函数
8.数组
二.常量(常量是一个确定的值,不需要名字)
常量类型:整数常量,小数常量,boolean常量(值只有true,false),字符常量,字符串常量,
null常量(值只有null--意为空,用于作为引用型变量的值)
定义常量的格式:
final 常量类型 常量名=值;
例如:final int yuanzhoulv=3.1415926
注意:常量的值是固定的,只要被定义出来值就再也不能改变,也就是说一个常量的标识符只能对以一个值不能修改。
三.进制
-------进制只不过是个数的表现形式
1.八进制
逢8进1,比如0234(开头是0,表示这是一个八进制数,其表示数字156,算法:从最低位数起0 1 2, 4*8^0+3*8^1+2*8^2=156)
2.十六进制
逢十六进1,10~15由A~F表示,比如0x9C(开头0x表示这是一个十六进制数字,其表示数字156,算法:从最低位数起0 1 2, C*16^0+9*16^1=156)
3.十进制
逢十进一,比如156(表示数字156,算法:从最低位数起0 1 2, 6*10^0+5*10^1+1*10^2=156)
4.二进制
逢二进一,比如0000-0000-1001-1100,(表示数字156,算法:从最低位数起0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15,由于0*2^n=0,所以为0的位置略去, 2^2+2^3+2^4+2^7=156)
8位取值范围【-2^7——2^7-1】;16位取值范围【-2^15——2^15-1】;
32位取值范围【-2^31——2^31-1】;64位取值范围【-2^63——2^63-1】
总结:
1.在计算机中,所有的数据都是先转化为二进制再进行二进制间的变化,一切的基础都是二进制
2.计算机的基础算法就是二进制,生活中多用十进制,十进制转八和十六先转成二进制再算比较好
3.二进制的负数:(其开头肯定是1)
-156如何用16位的二进制表示?(正的取反加1)
先是156的表示:0000-0000-1001-1100,取反(1变0,0变1),
得到:1111-1111-0110-0011,加1,得到1111-1111-0110-0100------这就是-156
1111-1111-0110-0100又表示十进制的哪个负数?(减1取反)
减1得:1111-1111-0110-0011取反得:0000-0000-1001-1100,对应正数156,所以应该是-156
---------这一节应该记住标识符的命名规则,二进制 正的负要取反加1,负的正要减1取反
四.数据类型
整数型——byte(8位)/short(16位)/int(32位)/long(64位)【默认int】
数值型
浮点型——float(32位)/double(64位)【默认double】
基础数据类型 字符型——char(16位) 包含单个字母、单个数字、单个符号、单个汉字;格式' 字符型'
布尔型——Boolean 只有两个值false和true
对象——
引用数据类型 接口——interface
数组—— []
注意:除char的值的算法是0~2*2^(n-1)【不包括最大值】,其他的值的算法是-2^(n-1)~ 2^(n-1)【不包括最大值】
五.变量
1. 同一区间内不能定义同名的变量(函数的{}就是一个区间)
2.定义变量: 变量类型变量名=初始化值;例:int x=9;
什么时候定义变量呢?
数据不确定且需要存储时,就要定义一个变量来完成存储动作
3.类型转换:
自动类型提升 例:byte b=3;b=b+2;(会编译失败,因为2默认是int,左边b被自动提升为int,得出的5是int,无法赋值给左边的byte的b) 左右类型不一样就只能强制转换 自动类型提升会发生在整数型、浮点型、字符型之间,同类型相遇都是自动提升为默认类型,不同类型间是整数提升为浮点数,字符型提升为整数,字符型提升为浮点数。 例如:'t'+5+'\n'+8.0的值为139.0;由于字符易被提升,所以做好用""(字符串)标注字符
强制类型转换 例:byte b=3;b=(byte)(b+2);【byte必须有()】
double d=314321412.14142414513;
int i=(int)d;//强制转换,只会取d的整数部分
补充:float保留7位有效数字,double保留16位有效数字 float f=1341.56464f(必须加f)
六、运算符
- 算术运算符 + - * / %(模,即取余数) ++(递增) --(递减) (例如:int a=4;a++;其运行时,是先使用此时内存中a的值4,然后进行a+1操作并将值赋予a【先用后算】; int a=4;++a; 其运行时,是先进行a+1操作并将值赋予a,然后使用此时内存中a的值【先算后用】) %模即取余数 例如:5%3=2 1%5=1 -3%3=0 -3%4= -3 3%-4=3 -3%-4=-3 (都遵循着数学规律) 记忆;取模时有负数参与,正负看左边 + 字符串连接符
- 转义字符(仍旧是char类型的字符)通过\(右斜)来转变后面字母或字符的含义 \n----换行 \r-----回车键 \b----退格键 \t------制表符,相当于tab键 "\\hello\\"显示\hello\ "\"hello\""显示"hello"
- 赋值运算符6个 = += -= *= /= %= 后面五个的算法相当于++a,都是先算后用,例如:x+=5,即x=x+5;其还可左右自动转化,例如:byte b=5;b+=9;就可以直接编译通过
- 比较运算符六个----【比较表达式就是一个布尔型的变量】
== != < > <= >=
比较的目的就是为了获得true或者false这个结果
- 逻辑运算符6个---用来连接两个布尔型的变量,最终获取true或者false的结果【构成的表达式也是一个布尔型变量】 & && | || ^ !
假设A和B都是布尔型变量
&(且) | A&B | 有一个false则结果是false【一假则假,全真则真】 |
&&(且) | A&&B | 第一个是false则直接判断为false |
|(或) | A|B | 有一个true则结果是true【一真则真,全假则假】 |
||(或) | A||B | 第一个是true则直接判断为true |
!(非) | !A | A若是true,则!A是false;A若是false,则!A是true |
^(异或) | A^B | 同则false,异则true |
6. 位运算符7----<< >> >>> & | ^ ~【针对二进制的特有算法】
由于所有数据的基础都是二进制,所以任何数据都可以进行位运算
<< | 9<<3 | 得到72 | 9的二进制左移三位 | 相当于十进制9*(2^3) | 不论正负,空位0补 |
>> | 9>>3 | 得到1 | 9的二进制右移三位 | 相当于十进制9/(2^3) | 余数忽略不计,正数空位0补 |
-9>>3 | 得到-2 | -9的二进制右移三位 | 相当于十进制-9/(2^3) | 有余数则商加-1,负数空位1补 |
>>> 无符号右移,空位都是0补,所以负数的结果与>>不同
<< >> >>>的运算效率比 * /要高
0为false,1为true
& 0110&0101=0100也可写成6&5=4
| 0110|0101=0111也可写成6|5=7
^ 0110^0101=0011也可写成6^5=3
~(反码,即取反) ~0000-0000-0000-0110=1111-1111-1111-1001即~6=-7,
同理~-7=6;【~正=-正-1 ~负=-负-1】
^的特性:m^n^n=m m^n^m=n(可用于设置密钥,m,n不仅可以是数字,也可以是字符,字符串,符号等)
位运算符的经典应用:
1. 将365转化为八进制
365&7,365>>(3*1)&7, 365>>(3*2)&7, 365>>(3*3)&7,365>>(3*4)&7
2.互换变量m,n的数值
第一种方法最易想到;第二种方法节省空间但数值大时,易发生类型转换的问题;第三种既节约空间又无转换问题
记忆:包含比较运算符的表达式就是boolean型的变量;逻辑运算符连接的是boolean变量,其结果是boolean变量;
原标题:黑马程序员——01.Java编程基础(一) ——常量、变量、运算符
关键词:JAVA