一、类名的使用规范
(1)类名需要与源文件名称相同
(2)类名首字母大写
(3)类名在命名时不能使用特殊字符、空格以及中文
(4)同一个源文件中最多只能有一个由public修饰的类(主类),并且类名要与源文件的名称相同
二、主方法
(1)代码:public static void main(String [] args){ }
(2)代码解释:公共、静态、无返回值的方法(同一个源文件可以有多个主方法,但是一个类中只能有一个)方法的参数是字符串类型的数组
三、标识符
1.概念:
Java中,用来表示类名、方法名、接口名、变量名、常量名、包名等的有效字符序列叫做标识符
2.规则:
(1)只能由数字、字母、下划线以及$符号组成
(2)不能以数字开头
(3)不能是Java当中的关键字或保留字
(4)严格区分大小写
常用关键字:
a:和数据类型相关的 四类八种
b:访问权限相关的 public protected private
c: 和类相关的 class extends
d:和接口相关的 interface implements
e: void static final
3.标识符规范
(1)类名,接口名每个单词的首字母都要大写 HelloWorld 驼峰式命名法
(2)方法名和变量名:从第二个单词首字母大写 helloWorld
(3)常量 全部大写 AA
(4)包 全部小写,包与包之间使用.连接
(5)见其名知其意。
四、基本数据类型(四类八种)
1)浮点型:
双精度 double 64位 8个字节(一个字节8位)。
单精度 float 32位 4个字节。
在定义double类型的变量的时候,可以在值后面加D,也可以不加。
double d1=1.20; double d2=1.30D;
在定义float类型的变量的时候,必须在值后面加F或者f
float f1=1.1F; float f2=1.1f;
2)整型:
long 长整型 64位 8个字节 最大值:2的63次方 -1 最小值: 负的2的63次方。
int 整型 32位 4个字节 最大值:2的31次方 -1 最小值: 负的2的31次方。
short 短整型 16位 2个字节 最大值:2的15次方 -1 最小值: 负的2的15次方。
byte 比特类型 8位 1个字节 最大值:2的7次方 -1 最小值: 负的2的7次方。
在定义long类型的变量的时候,最好在后面加L,不写也不会报错
long l=1L; long k=1;
3)布尔类型:
boolean 只占1位 true false
4)字符类型:
char: 占两个字节、16位
char类型可以存中文汉字。
char类型:定义一个单个的字符用单引号引起来。
当存汉字的时候,一个汉字占2个字节,
当存英文字母的时候,一个字母,占1个字节。
不管存中文还是英文都会分配两个字节。
数据类型的转换
(1)自动转换/向上转型/隐形转换:由小类型转换到大类型。小类型遇到运算符会自动向上转换
byte----> short-----> int-----> long ----->float-----> double
|
char
eg:byte b=1; int a=b+1;//b自动转换为int类型
(2)强制转换/向下转型: 由大类型到小类型
eg:char c=‘a’; int d=c+1;//98
如果存的值不在数据类型的范围之内,则存负数
eg:int m=129; byte n=(byte)m;//符合语法规范,不会报错,会存为负数
五、变量与常量
1.概念
变量:在计算机内存存储中可以被改变的值,在使用之前要进行赋值。
局部变量:值在某个区域范围内可以被访问到
全局变量:值在整个类中都能被访问到,在声明时必须赋值
常量:是一个被final修饰的变量 。一旦被赋值,值就不允许改变。
final 数据类型 常量名= 值;
2.定义方式
(1) 边声明,边赋值。int a=1;
(2)先声明,后赋值。 int a; a=1;
(3)同时声明多个变量,并且赋值。 int a=1,b=2;
(4)同时先声明多个变量,后赋值。int a,b; a=1; b=2;
六、math类
1.概念:
提供了和数学相关方法的类,其中所有方法都是静态的,通过 类名.方法名称();使用
2.常用math类:
abs(参数); 返回一个参数的绝对值。
max(参数1,参数2);求两个数的最大值。
min(参数1, 参数2); 求两个数的最小值。
pow(参数1,参数2); 参数1的参数2次方。返回的是一个double类型的数。
sqrt(参数1);参数1 进行开方 返回一个double类型的数。
ceil(参数); 返回大于该数的最小整数 ceiling 天花板 double类型
floor(参数); 返回小于该数的最大整数 floor地板方法 double类型
round(参数);四舍五入
random(); 返回一个double类型的值,生成随机数 [0.0,1.0)
七、运算符
1.算术运算符
加+ 减- 乘 除/ 取余% 自增++ 自减–*
除(a/b)详解:a、b均为整数,b不为0时,结果取整
a、b有一个为浮点型,b不为0时,结果取精确值
a是整型,b是0的时候,报算术异常 ArithmeticException /byzero
a是浮点型,b是0的时候,结果infinity
取余(a/b)详解:a、b都为整型,b不为0时,结果取余数
a、b有一个为浮点型,b不为0时,结果取精确值
a是整型,b是0的时候,报算术异常 ArithmeticException /byzero
a是浮点型,b是0的时候,结果NAN
自增(++)详解:前置 ++a:先自增,后运算
后置 a++:先运算,后自增
自减(–)详解:前置 --a:先自增,后运算
后置 a–:先运算,后自增
2.关系运算符
** > >= < <= == !=**
== 在比较引用类型的时候,比较的是地址值;
在比较基本数据类型的时候,比较的是具体的值
3.逻辑运算符
&& || ! 位运算符 : & | ~ ^ << >> >>>
(1)逻辑与(&&)详解:必须有两个Boolean类型(true/false)的操作数,只要有一个操作数为false,结果就为false。&&具有短路法,当第一个操作数值为false时,结果已经确定,第二个操作数就不再参与运算了。
(2)逻辑或( || )详解:必须有两个Boolean类型(true/false)的操作数,只要有一个操作数为true,结果就为true。|| 具有短路法,当第一个操作数值为true时,结果已经确定,第二个操作数就不再参与运算了。
(3)按位与(&)详解:两个操作数可以是Boolean类型(用法与&&基本相同,但没有短路法),也可以是非long整型(用法:有0就得0 6&5=4-----二进制的100)
(4)按位与( | )详解:两个操作数可以是Boolean类型(用法与&&基本相同,但没有短路法),也可以是非long整型(用法:有1就得1 6|5=7-----二进制的111)
(5)异或( ^ )详解:必须有两个非long整型类型的操作数,计算时,对应位相同时,取0,不同时,取1(6^5=3----二进制011)
(6)按位取反(~)只有一个非long整型的操作数 ( ~1=-2)
源码–> 反码:符号位不变,先取反,再加1。
反码–> 源码:符号位不变 ,先-1,再取反。
(7)左移运算符(<<)详解:有两个操作数,高位舍弃,低位补0 (2<<2 ------8相当于2*2的平方)
(8)右移运算符(>>)详解:有两个操作数,正数:高位补0,低位舍弃;负数:高位补1,低位舍弃。(100>>4-----6相当于100/2的四次方,这种方法仅限正数)
(9)无符号右移(>>>)详解:有两个操作数,高位补0,低位舍弃
4、条件运算符 /三目运算符
语法:表达式?a:b;当表达式值为true时,整个式子返回a,否则,返回b
5、赋值运算符
i+=1; 等价于 i=i+1;等价于 i++;
6、运算符的优先级
算术运算符(++a;–a最后算)>关系运算符>逻辑运算符> 条件运算符>赋值运算符
八、进制之间的转换
常用进制
二进制:由0和1组成,逢二进一
十进制:由0到9组成,逢十进一
八进制: o开头,由0到7组成 逢八进一
十六进制:ox开头,由0-9 /A-F/a-f 组成,逢16进一 A =10 F=15
(1)十进制转换为二进制
短除法,余数倒着读。10---->1010
二进制转换为十进制
1010----> 02的0次方+12的1次方+02的2次方+12的3次方=10
(2)八进制与二进制
八进制转换为二进制 一位对应三位。
o654 ---->110 101 100
二进制转换为八进制 3位对应一位 不够的高位补0
101 010 000 101 o5205
(3) 十六进制转换为二进制 一位对应4位
ox1545 1 0101 0100 0101
二进制转换为十六进制 4位对应一位 不够的高位补0
0001 0101 1100 0101 ox15C5
(4) 十进制转换为十六进制
短除法,余数倒着读。258----->ox102
九、语句
1、顺序结构
从上到下按照顺序执行
2、条件结构
(1)if else语句
满足条件,就会执行相应的语句,且只会执行一个语句块 ,不再向下进行判断,如果if块中只有一句话,可以省略{ }
if(表达式为Boolean类型的值){ }else if(){ }else{}
if else与三目运算符的区别:
三目运算符效率高。
三目运算符必须要返回一个值。if else 结构不需要返回一个值,并且在if else 语句当中,可以加入一些逻辑判断语句。
(2)switch -case 语句
语法:
switch(表达式){
case 常量标号 : 语句 ; break;(可加可不加)
case 常量标号 : 语句 ; break;(可加可不加)
case 常量标号 : 语句 ; break;(可加可不加)
default: 语句;
}
详解:①表达式的值必须是非long整型。字符型‘a’ 字符串类型(String)(Jdk1.7)
②表达式的值与常量标号进行匹配。如果匹配到,执行相应的语句,匹配不到,执行default。
常量标号的类型和表达式的类型要相同,或者相兼容。
③当想要执行完匹配的case语句的时候,可以用break去结束当前的switch-case穿透。
3、循环结构
(1)for循环(确定循环次数最好使用for循环)
语法: for(表达式1;表达式2;表达式3){ 循环体 }
解释:
表达式1 :初始化一个变量。
表达式2:控制循环次数。
表达式3:使表达式2趋于false的作用。
for(int i=1;i<=10;i++){
i=i+1;
}
system.out.println(i);//11
执行顺序: 先执行表达式1 。然后执行表达式2 成立,执行循环体。执行完循环体,执行表达式3。再判断表达式2 的值,成立 ,执行循环体,再执行表达式3。
注意:如果for循环的循环体里面只有一条语句的时候,可以省略{}
eg:for(;?{// 无限循环}
for循环的嵌套:
规则:
图形的尖端朝上:改变for循环当中表达式2的值。
图形的尖端朝下:改变for循环当中表达式1的值。
(2)while循环(不确定循环次数最好使用while循环)
语法:
while(表达式){ 循环体 }
解释:表达式的值是boolean类型,值为true时执行循环体,值为false时,跳出循环。
循环结束方式:
结束方式一:通过控制表达式里面的变量,自增,自减。
结束方式二: break关键字,跳出循环。
eg:while(3>2){//无限循环
int a=2;
if(a==2){braeak;//结束}
}
(3)do-while循环
语法:
do{ 循环体 }while(表达式);
解释:从上到下,先执行一次循环体,然后进行表达式的判断。表达式的值是一个boolean类型的值,值为true,就执行循环体,值为false不执行循环体。
while循环与do-while循环的区别:
do-while循环无论是否满足表达式的条件,都会去执行一次循环体。