java语言的组成:关键字,标示符,注释,常量和变量,运算符,语句,函数,数组。
每个计算机语言虽然表达方式不一样,但是思想都是想通的。
关键字
标识符
标识符就是自定义的一些名称。
规则:数字:0-9,符号_$组成
定义合法标识符规则:
1. 数字不可以开头
2. 不可以使用关键字(如果一定使用第一个字母要大写)
Main不是关键字,但是却是被虚拟机特殊识别的一个词
JAVA中严格注意大小写
注意:在起名字的时候,为了提高阅读性,尽量要使每个名字有意义。
其他规则
变量名和函数名:getName
常量:JAVA_HOME
注释
/**/ 和 //
初学者一定要养成一个好习惯,先写注释再写代码
常量与变量
常量表示不能改变的数值
整数常量:所有整数
小数常量:所有小数
布尔型常量:比较特有,只有两个数值,true和false。
字符常量:将一个数字字母或者符号用单引号‘’ 标识。字符常量只能封装一个元素
字符串常量:将一个或者多个字符用双引号标识。“”
Null常量,只有个一个值就是null。
整数,java有三种表现形式:
十进制
八进制 0-7,满8进1,0开头,
十六进制 0-9,A-F,满16进1,用0x开头表示。A代表11,B代表12
二进制:
每个字节由8个二进制位组成。N个字节表示数据。硬盘中存放的都是2进制数据
通过二级制来表现字母和数字的表就是编码表。老美表示生活中的文字就是ASCII表
二进制8个数字组成太长,所以用8进制表示3个3位数,这样演变以后就可以变短
如果再短一些,用4个二进制位代表一位,就是16进制。
进制的基本转换
十进制转换二进制
原理:对十进制数进行除2运算。
二进制转换十进制
原理,二进制(倒着)乘以2的过程。
规律:倒着1加2加4加8……
二进制转换十六进制
原理:分成4位转换,然后变成十六进制书写
二进制转换八进制
原理:三个二进制代表一位。前面加个0,再转换
负数的二进制表现形式
-6的二进制,其实就是6的二进制取反,再加1.
取反就是将二进制的1变成0,0变成1.
负数的二级制位最高位是1,而整数的最高位是0.
变量
变量:就是将不确定的数据进行存储。
也就是需要在内存中开辟一个空间,这个空间名称就是变量名。
不同数据存放在不同数据类型。空间类型有栈内存和堆内存。
整数类型:byte,short,int,long。
4个类型在内存中开辟的空间不同。一个byte只有8个二进制(-128~127,就是-2的7次方和2的7次方减一),short有16个(-2的15次方到2的15次方减一-32768~32767),int有32个二进制(-2的31次方到2的31次方减一),long更多。
一般情况,默认写整数都是int
Byte就是一两的碗,short是二两的碗,int是三两的,long是四两的。
浮点型float和double,单精度和双精度。前者小数点后面的位数少点。后者精度更高
Float占了4个八位,double占了8个八位。写小数默认double
Char(0~6535)
布尔型只有true和false
定义变量格式:数据类型 变量名 = 初始化值
Int x = 4;
什么时候定义变量?
当数据不确定的时候,需要对数据进行存储时,就定义一个变量来完成存储动作。
类型转换
byte b =3;
b= b + 2;
sop(b);
编译错误。原因:b是byte型,b+2运算时,java会自动类型提升(将两个数值的类型转变为一个类型才能进行运算,而这时提升的原则是向大的类型提示),2默认是int型,b也自动提升至int型,得到的新数值也是int型,再赋值给b,int型数值不能赋值给b,可能造成精度损失。
b=3,3能赋值给b是因为java会自动判断3会不会在byte范围内。而b+2是个变化的值,当值变化时,可能造成精度损失。
如果非要将结果赋值给b,那么可以进行强制精度转换。
b=(byte)(b+2);//将b+2运算完成后,转换为byte类型,再赋值给b。这里有个风险是转换byte类型后有可能造成精度损失,只不过不会报错。
强制转换一般在取想要的结果时才使用。如double转int型,这样只保留了整数部分。
System.out.println(‘a’+1);//结果是98
老美把每个字母用二进制表示,组成一个ASCII表,二进制转换成十进制,a的表示数字就是97,’a’+1时java进行自动类型提升,因为字符a站2个八位,1站4个八位,提升类型向int型的数字1提升,所以转换后数字为98。
System.out.println(char(‘a’+1));//结果是b,强制将结果98转换为字符,根据ASCII表98为b
运算符
算术运算符
Int x=4270;
X = x/1000 *1000;//结果是4000,因为x除以1000后是int型,为4,然后再相乘
%取模,就是取余数的运算。
取模运算,左边小于右边,取左边。左边等于右边,为零。右边是1,结果是0。
1%-5结果还是1.
-1%5结果还是-1,结论,取模如果出现负数,看左边的的正负,右边正负不管
++--自加自减
注意:变量只有在赋值后才能使用。
Int a=3,b;
a+b;//不正确,没有给b赋值
Int a=3,b;
b=a++;
sop(b);//3
sop(a);//结果是4,++在后面的时候,先赋值然后自加。
如果b=++a;
sop(b);//4
sop(a);//4,++在左边那么a会先自加再赋值
--自减和自加的运算规律相同
字符串相加需要用双引号。
注意:字符串数据和任意数据使用+相连接,最终都会变成字符串。
“5+5=”+5+5;//结果是(字符串类型)“5+5=55“。因为后面的5都会转换成字符串类型与前面的字符串相连接。
转义字符
通过反斜线 \ 来转变后面字母或者符号的含义。
\n 转变n,作用为换行
\b退格 相当于backspace
\r按下回车键。注意:windows中,回车符是有两个字符表示\r\n
\t 制表符,相当于按下tab键
“\”hello\””;通过反斜杠来将双引号转义,输出为 “hello“,带双引号的hello
\\hello\\;输出为:\hello\
赋值和比较运算符
Int x = 4;//把右边赋值给左边
x+=4;//把左右两边的和赋值给左边。相当于x=x+4;
short s =4;
//s = s +5;//编译错误,因为类型不一样
S+=5;//可以,因为这个指令只有一次运算,与上面的最大不同是+=运算不会做类型转换动作。
比较运算符
逻辑运算符:
X>3&&x<6;java中两个关系必须用逻辑运算符联系起来。
逻辑运算符用于连接boolean类型的表达式。
&规律:真与真,为真。真与假,为假。假与假为假。假与真为假。
只有两边都为true,才为true。
|规律:两边都为假才是假,有一边是真就是真
^异或,就是和|或有点不一样。
规律:两边一样为假,不一样为真
!非,相反的,!true为假
位运算符
左移<<,就是将4个八位二进制向左移动,别的用0填充
左移和右移的规律是:
左移n位就是乘上2的n次幂
右移n位就是除以2的n次幂(取整数)
注意:右移最高位的填充按照之前最高位的数字决定。6右移的最高位默认填充0,而-6最高位的右移默认填充1
无符号右移>>>,无论正数负数的最高位填充都是0。
&运算。010十进制对应的是2,所以6&3=2
|运算,
^异或运算
有个规律:一个数字异或同一数字两次,得到的结果仍然是原数字
~反码运算,取反操作,~6=-7。负数取反减去1就是所得正数
练习:
最有效率的2乘8的运算?
计算机中最有效率的运算是位运算,而不是2*8。
所以结果是2<<3,2*2的3次幂,就是2*8
将整数型的两个变量值互换,不适用第三个变量值,怎么做?
练习2:
如何取一个数的最低4位?
&15。
最低八位呢?
先用最低4位&15,然后右移4位,再&15,得到的两个数值用八进制表示就最好了
三元运算符:
三元运算的特点是3个元素参与运算。加减乘除是二元运算。非真非假是一元运算。