01.标识符
java语言组成:关键字,标识符,注释,常量和变量,运算符,语句,函数,数组。
02.常量和变量
java中常量的分类:整数常量,所有整数。小数常量,所有小数。布尔型常量,较为特殊,只有两个数值,true false。字符常量,将一个数字,字母或者符号用单引号标识。字符串常量,将一个或者多个字符用双引号标识。null常量,只有一个值:null。
对于整数,java有三种表现形式。
03.进制的特点
八进制其实是二进制的三位代表一位,十六进制其实是二进制的四位代表一位。
04.进制转换(十进制和二进制)
十进制转二进制:除2取余数,逆向取余。
二进制转十进制:乘以2的幂的过程。
05.进制转换(八进制和十六进制)
二进制转换成十六进制:从右往左,四位一分,把每四位的十进制算出来拼在一起。十六进制里的10,11,12,13,14,15分别用A,B,C,D,E,F代替。
因为四个二进制位的最大值是15.
二进制转八进制:从右往左,三位一分,把每三位的十进制算出来拼在一起。
06.进制转换(负数二进制)
将正数的二进制取反加1,负数的二进制最高位都是1.
07.变量
变量:就是将不确定的数据进行存取,也就是需要在内存中开辟一个空间。
如何开辟内存空间:就是通过明确数据类型,变量名称,数据来完成的。如:类型名 变量名=初始值;
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。
08.类型转换
整数默认为int类型,小数默认为double类型。
小的数据类型和打得数据类型运算时,小的数据类型会向大的数据类型转变(机器内部完成)。所以他俩运算的结果后的数据类型是大的数据类型。
强制数据类型转换时,大的数据类型向小的数据类型转换时可能会出现精度丢失,小的数据类型向大的数据类型转换时没问题。
把double转int会只保留整数部分。
字符a对应的ASCII码是97,字符A对应的ASCII码是65,字符1对应的ASCII码是49.
09.算术运算符
负数取模时,只看左边的(被模)的符号。
b=a++;先运算后加1(先把a的值赋给b,再把a的值加1)
b=++a;先加1后运算(先把a的值加1,再把加1后的值赋给b)
字符串数据和任何数据使用+都是相连接,最终都会变成字符串。
10.转义字符
window系统中,回车符是有两个符号表示:\r\n
11.赋值和比较运算符
+=,-=,*=,/=,%=。
short s=4;
s=s+4;编译会失败,没有进行强类型转换。
s+=4;编译会通过,会自动进行类型转换。
比较运算符的结果都是boolean型,也就是要么是true,要么是false。注意“==”不能写成“=”。
12.逻辑运算符
逻辑运算符用来连接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。
13.位运算符(左移右移)
左移<<:低位补0,数值变大,一个数左移x位,相当于该数乘以2的x次幂。
右移>>:高位补0,数值变小,一个数右移x位,相当于该数除以2的x次幂。如果是小数,则取整。
做运算的时候,最快的运算是位运算。
右移>>:高位补什么,由原来的数据的最高位值而定,如果最高位0,右移后,用0补空位。如果最高位1,右移后,用1补空位。
>>>:无论最高位是什么,右移后,都用0补。
14.位运算符(与-或-异或)
&:可以作为位运算符存在。把数值转换成二进制后按位与。0是假,1是真。
|(或),^(异或),~(取反)等。
一个数异或同一个数两次,结果还是那个数。有点像加密算法。
15.位运算符(练习)
最有效的方式算出2乘以8的值。
解:高效运算:位运算。将2左移3位。
对两个整数变量的值互换(不使用第三方变量)。使用第三方变量是最常见的一种方式。
解:解法一:n=n+m;m=n-m;n=n-m;解法二:n=n*m;m=n/m;m=n/m;
上面两种解法容易损失精度。
解法三:a=a^b;b=a^b;a=a^b;
16.位运算符(练习2,三元运算符)
要想把10,11,12,13,14,15转换成A,B,C,D,E,F可以用以下方法:
如:12-10+‘A’=‘C’
三元运算符:
(条件表达式)?表达式1:表达式2;
如:int x=3,y;
y=(x>3)?100:200;//如果x的值大于3,则y=100,否则y=200
17.语句(if)
程序流程控制:判断,选择,循环。
if后面如果没有{},那么受if控制的语句就只有离他最近的一条语句。
18.语句(if练习)
//需求一:根据用户定义的数值不同,打印对应的星期英文。
int num=2;
if(num==1)
{
System.out.println("Monday");
}
else if(num==2)
{
System.out.println("Tuesday");
}
else if(num==3)
{
System.out.println("Wednesday");
}
else if(num==4)
{
System.out.println("Thursday");
}
else if(num==5)
{
System.out.println("Friday");
}
else if(num==6)
{
System.out.println("Saturday");
}
else if(num==7)
{
System.out.println("Sunday");
}
else
{
System.out.println("输入的数据不合法!");
}
//需求2:根据用户指定的月份,打印该月份所属的季节。
19.语句(swich)
swich(表达式)//表达式的值只接受四种类型:byte,short,int,char
{
//case是没有顺序的,就好比选择特的A,B,C,D
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
......
default:
执行语句;
break;
//case和default和顺序是可以换的,但执行顺序是先case后default
}
java语言组成:关键字,标识符,注释,常量和变量,运算符,语句,函数,数组。
02.常量和变量
java中常量的分类:整数常量,所有整数。小数常量,所有小数。布尔型常量,较为特殊,只有两个数值,true false。字符常量,将一个数字,字母或者符号用单引号标识。字符串常量,将一个或者多个字符用双引号标识。null常量,只有一个值:null。
对于整数,java有三种表现形式。
03.进制的特点
八进制其实是二进制的三位代表一位,十六进制其实是二进制的四位代表一位。
04.进制转换(十进制和二进制)
十进制转二进制:除2取余数,逆向取余。
二进制转十进制:乘以2的幂的过程。
05.进制转换(八进制和十六进制)
二进制转换成十六进制:从右往左,四位一分,把每四位的十进制算出来拼在一起。十六进制里的10,11,12,13,14,15分别用A,B,C,D,E,F代替。
因为四个二进制位的最大值是15.
二进制转八进制:从右往左,三位一分,把每三位的十进制算出来拼在一起。
06.进制转换(负数二进制)
将正数的二进制取反加1,负数的二进制最高位都是1.
07.变量
变量:就是将不确定的数据进行存取,也就是需要在内存中开辟一个空间。
如何开辟内存空间:就是通过明确数据类型,变量名称,数据来完成的。如:类型名 变量名=初始值;
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。
08.类型转换
整数默认为int类型,小数默认为double类型。
小的数据类型和打得数据类型运算时,小的数据类型会向大的数据类型转变(机器内部完成)。所以他俩运算的结果后的数据类型是大的数据类型。
强制数据类型转换时,大的数据类型向小的数据类型转换时可能会出现精度丢失,小的数据类型向大的数据类型转换时没问题。
把double转int会只保留整数部分。
字符a对应的ASCII码是97,字符A对应的ASCII码是65,字符1对应的ASCII码是49.
09.算术运算符
负数取模时,只看左边的(被模)的符号。
b=a++;先运算后加1(先把a的值赋给b,再把a的值加1)
b=++a;先加1后运算(先把a的值加1,再把加1后的值赋给b)
字符串数据和任何数据使用+都是相连接,最终都会变成字符串。
10.转义字符
window系统中,回车符是有两个符号表示:\r\n
11.赋值和比较运算符
+=,-=,*=,/=,%=。
short s=4;
s=s+4;编译会失败,没有进行强类型转换。
s+=4;编译会通过,会自动进行类型转换。
比较运算符的结果都是boolean型,也就是要么是true,要么是false。注意“==”不能写成“=”。
12.逻辑运算符
逻辑运算符用来连接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。
13.位运算符(左移右移)
左移<<:低位补0,数值变大,一个数左移x位,相当于该数乘以2的x次幂。
右移>>:高位补0,数值变小,一个数右移x位,相当于该数除以2的x次幂。如果是小数,则取整。
做运算的时候,最快的运算是位运算。
右移>>:高位补什么,由原来的数据的最高位值而定,如果最高位0,右移后,用0补空位。如果最高位1,右移后,用1补空位。
>>>:无论最高位是什么,右移后,都用0补。
14.位运算符(与-或-异或)
&:可以作为位运算符存在。把数值转换成二进制后按位与。0是假,1是真。
|(或),^(异或),~(取反)等。
一个数异或同一个数两次,结果还是那个数。有点像加密算法。
15.位运算符(练习)
最有效的方式算出2乘以8的值。
解:高效运算:位运算。将2左移3位。
对两个整数变量的值互换(不使用第三方变量)。使用第三方变量是最常见的一种方式。
解:解法一:n=n+m;m=n-m;n=n-m;解法二:n=n*m;m=n/m;m=n/m;
上面两种解法容易损失精度。
解法三:a=a^b;b=a^b;a=a^b;
16.位运算符(练习2,三元运算符)
要想把10,11,12,13,14,15转换成A,B,C,D,E,F可以用以下方法:
如:12-10+‘A’=‘C’
三元运算符:
(条件表达式)?表达式1:表达式2;
如:int x=3,y;
y=(x>3)?100:200;//如果x的值大于3,则y=100,否则y=200
17.语句(if)
程序流程控制:判断,选择,循环。
if后面如果没有{},那么受if控制的语句就只有离他最近的一条语句。
18.语句(if练习)
//需求一:根据用户定义的数值不同,打印对应的星期英文。
int num=2;
if(num==1)
{
System.out.println("Monday");
}
else if(num==2)
{
System.out.println("Tuesday");
}
else if(num==3)
{
System.out.println("Wednesday");
}
else if(num==4)
{
System.out.println("Thursday");
}
else if(num==5)
{
System.out.println("Friday");
}
else if(num==6)
{
System.out.println("Saturday");
}
else if(num==7)
{
System.out.println("Sunday");
}
else
{
System.out.println("输入的数据不合法!");
}
//需求2:根据用户指定的月份,打印该月份所属的季节。
19.语句(swich)
swich(表达式)//表达式的值只接受四种类型:byte,short,int,char
{
//case是没有顺序的,就好比选择特的A,B,C,D
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
......
default:
执行语句;
break;
//case和default和顺序是可以换的,但执行顺序是先case后default
}