Java语言的组成:关键字,标识符,注释,常量和变量,运算符,语句,函数,数组。
Java中常量的分类:
整数常量:所有整数;小数常量:所有小数;布尔型常量:较为特殊,只有两个数值,true和false;字符常量:将一个数字,字母或者符号用单引号标识;字符串常量:将一个或者多个字符用双引号标识;null常量:只有一个值:null。
Java机制的特点:八进制其实是二进制的三位代表一位,十六进制其实是二进制的四位代表一位。
进制转换:
十进制转二进制:除2取余数,逆向取余。
二进制转十进制:乘以2的幂的过程。
二进制转换成十六进制:从右往左,四位一分,把每四位的十进制算出来拼在一起。十六进制里的10,11,12,13,14,15分别用A,B,C,D,E,F代替。因为四个二进制位的最大值是15.
二进制转八进制:从右往左,三位一分,把每三位的十进制算出来拼在一起。
负数二进制:将正数的二进制取反加1,负数的二进制最高位都是1。
Java中的变量:
变量:就是将不确定的数据进行存取,也就是需要在内存中开辟一个空间。
如何开辟内存空间:就是通过明确数据类型,变量名称,数据来完成的。如:类型名变量名=初始值;
java是强类型语言,对每一种数据类型都定义了明确的数据类型,在内存中分配了不同大小的的内存空间。
基本数据类型:
byte:8位(-128到127)。short:16位(-32768到32767)。int:32位(-2的31次方到2的31次方减1),long:(64位)后面要有l标识。
之所以有这么多的数据类型,是为了节约内存,提高内存的利用率。
float:单精度(四个八位)后面要有f标识,double:双精度(八个八位),char:(0-6535)要用单引号(两个八位)。
boolean:bool值,只有两个值,true,false。
Java类型转换:
整数默认为int类型,小数默认为double类型。
小的数据类型和大的数据类型运算时,小的数据类型会向大的数据类型转变(机器内部完成)。所以他俩运算的结果后的数据类型是大的数据类型。
强制数据类型转换时,大的数据类型向小的数据类型转换时可能会出现精度丢失,小的数据类型向大的数据类型转换时没问题。
把double转int会只保留整数部分。
字符a对应的ASCII码是97,字符A对应的ASCII码是65,字符1对应的ASCII码是49.
Java算术运算符:
负数取模时,只看左边的(被模)的符号。
b=a++;先运算后加1(先把a的值赋给b,再把a的值加1)
b=++a;先加1后运算(先把a的值加1,再把加1后的值赋给b)
字符串数据和任何数据使用+都是相连接,最终都会变成字符串。
Java转义字符:
window系统中,回车符是有两个符号表示:\r\n
11.赋值和比较运算符
+=,-=,*=,/=,%=。
short s=4;
s=s+4;编译会失败,没有进行强类型转换。
s+=4;编译会通过,会自动进行类型转换。
比较运算符的结果都是boolean型,也就是要么是true,要么是false。注意“==”不能写成“=”。
Java逻辑运算符:
逻辑运算符用来连接boolean型的表达式。
true & true = true
true & false = false
false & false = false
false & true = false
&:有一个为false结果就为false,只有两边都为true,结果才为true。
|:有一个为true,结果就为true,只有两边都为false,结果才为false。
^:异或,两边相同,则为false,两边不同,结果为true。
&&:比&的运算效率稍微高一些,&的特点:无论左边是true还是false,右边都运算,&&的特点:当左边为false时,右边不运算,结果为false。
||:比|的运算效率稍微高一些,|的特点:无论左边是true还是false,右边都运算,||的特点:当左边为true时,右边不运算,结果为true。
Java位运算符(左移右移):
左移<<:低位补0,数值变大,一个数左移x位,相当于该数乘以2的x次幂。
右移>>:高位补0,数值变小,一个数右移x位,相当于该数除以2的x次幂。如果是小数,则取整。
做运算的时候,最快的运算是位运算。
右移>>:高位补什么,由原来的数据的最高位值而定,如果最高位0,右移后,用0补空位。如果最高位1,右移后,用1补空位。
>>>:无论最高位是什么,右移后,都用0补。
Java位运算符(与-或-异或):
&:可以作为位运算符存在。把数值转换成二进制后按位与。0是假,1是真。
|(或),^(异或),~(取反)等。
一个数异或同一个数两次,结果还是那个数。有点像加密算法。
Java语句:
while(条件表达式)
{
执行语句;
}
while特点:先判断条件,只有条件满足,才执行循环体。(千万不能在while后加分号)
do
{
执行语句;
}
while(条件表达式);
do-while特点:先执行循环体,再判断条件,条件满足,再执行循环体。(无论条件是否满足,循环体至少循环一次)
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;
}
for和while的区别:while的初始化动作在外边,for的初始化动作在外边。
如果初始化表达式只为循环增量存在,建议使用for。
(1)变量有自己的作用域,对于for来讲,如果将用于控制循环的增量定义在for语句中,那么该变量只在for语句内有效,for语句执行完毕,该变量在内存中被释放。
(2)for和while可以进行互换,如果需要定义循环变量,用for更为合适。
总结:
什么时候使用循环结构?当某些语句执行很多次时,就使用循环结构。
循环语句的其它特点:
(1)条件表达式必须有真假
(2)for中,初始化表达式和循环后的操作表达式只要是表达式就行,就会被执行。
(3)for中的初始化表达式和循环后的操作表达式有多个时,可以用逗号隔开,也可以没有。
(4)无限循环的最简单表现形式:for(;;){} while(true){}
Java函数:
定义:定义类中的具有特定功能的一段独立小程序。
修饰符返回值类型函数名(参数类型形式参数1,参数类型形式参数2,...)
{
执行语句;
return 返回值;
}
返回值类型:函数运行后结果的数据类型;
参数类型:是形式参数的数据类型;
形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数;
return:用于结束函数;
返回值:该值会返回给调用者。
函数的特点:
定义函数可以将功能代码进行封装;
便于对该功能进行复用;
函数只有被调用才会被执行;
函数的出现提高了代码的复用性;
对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写,写上也不算错。
注意:函数中只能调用函数,不可以在函数内部定义函数;定义函数时,函数的结果返回给调用者,交由调用者处理。
在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。(参数是有顺序的,重载和返回值类型没关系)