java基础知识
1.注释
单行注释
多行注释
文档注释
注:注释可以提高代码的阅读能力
2.标识符
1.标识符的组成规则:
1)数字字符
2)英文大小写字母
3)_和$符号
注意事项:1)数字不能开头
2)Java严格区分大小写
3)起名字:给类,变量等,不能是Java中的关键字
2.命名规则
1)包: 目录/文件夹(面向对象中讲):字母全部小写
2)类(接口)的命名规则:
1)一个单词:第一个字母大写,其余小写
2)多个单词:每一个单词的首字母大小写,其余小写 (大驼峰命名法)
3)给变量,(方法)的命名规则:
a.一个单词:单词全部小写
b.多个单词:第一个单词全部小写,从第二个单词开始,首字母大写,其余小写 (小驼峰命名法)
4)给常量的命名规则:
a.一个单词: 字母全部大写
b.多个单词:每个单词字母全部大写,单词和单词之间使用下划线隔开
3.常量
1.常量:在程序的执行过程中,其值不发生改变的量!
分为两大类:
1)字面值常量:
字符串常量:使用双引号括起来的内容
字符常量:使用单引号括起来的单个内容
整数常量:整数:默认十进制数据
小数常量
布尔常量:true/false
空常量:null
2)自定义常量.关键字:final有关
2.有符号位的数据表示法:
正数/负数的表示:最高符号位0/1,数值位
正数:原,反,补都相同
负数:原码:二进制有符号位表示法表示.
原码---->反码:最高符号为不变,数值位按位取反,0变1,1变0
反码---->补码:最高符合位不变,数值位末尾+1
4.变量
1.变量的三要素:
1)数据类型
2)变量名(遵循标识符的规则)
3)初始化值
2.变量的数据类型的划分
A)基本数据类型:四类8种
整数类型:(默认int):
byte:字节类型 占1个字节 取值范围;-128~127(考点)
short:短整型 占2个字节
int:整数 占4个字节
long:长整型 占8个字节
浮点类型:(默认是double):
单精度:float: 占4个字节
双精度:double: 占8个字节
字符类型
char: 占2个字节
布尔类型(判断时用)
boolean: 占1个字节
B)引用数据类型:数组,接口,类(具体类,抽象类)
注:
定义long类型的注意事项:需要在当前变量值的加上标记:L或者l(建议大写L):
定义float类型的注意事项:在变量值的后面标记当前是一个单精度变量:F/f
boolean不进行数据转换(判断去使用 true/false)
3.显示转换和隐式转换
显示转换:强制类型转换
目标数据类型(目前基本类型)量名 = (目标数据类型)初始化值;
隐式转换:默认类型提升
byte,short,char三者之间不转换,一旦运算,先转换为int类型进行计算!
注:
变量在运算的时候,需要保证变量的类型一致.若类型不一致则需要进行隐式类型提升:byte,short,char,三者之间互相不转换,一旦他们参与运算,数据类型优先提升int类型.
强制转换会损失数据的精度.
5.运算符
1.算数运算符:+ - * / % ++ --
注:对于++或--的用法
1)单独使用:无论++还是--在变量前面还是后面,都是对当前该变量值进行自增1或者自减1
2)参与运算使用:如果++或者--在变量前面,先自增1或者自减1,然后运算
如果++或者--在变量后面,先运算(赋值),然后在自增1或者自减1
2.赋值运算符:= += -= *= /= %=
注:=是赋值运算符;==是比较运算符,连接表达式最终是true/false
3.比较(关系)运算符:> < <= >= == !=
注:比较运算符连接的表达式无论简单还是复杂,最终结果为true/false
4.逻辑运算符:
逻辑单与&(并列关系)结论:有false,则false
逻辑单或|(或关系)结论:有true,则true
逻辑异或^:结论:相同为false,不同则为true
逻辑非!: 结论:非true则false,非false
逻辑双与&&:如果连接的表达式左边为false,右边就不执行了,有false,则false(短路效果)
逻辑双或||:如果连接的表达式左边为true,右边不执行(短路效果!)
注:
逻辑双与&&和逻辑单与&的区别
共同点:有false,则false(有一个不满足条件,就false)
不同点:逻辑双与&&连接的表达式如果左边为false,右边就不执行了(短路效果)
5.位运算符:
位与&:
位或|:
位异或^:
反码~:按位取反,全部1变0,0变1
左移<<:左移动,将最高符合位丢弃掉,在右边补齐0
特点:将<<符号左边的数据乘以2的移动次幂
右移>>:右移动,如果最高符号位为0,左边补0,如果最高符号位为1,左边补齐1
特点:将>>符号左边的数据除以2的移动次幂
无符号右移>>>:向右移动,无论最高符合位为0还是1,左边补0!
注:
位运算符号:连接的是两个具体的数据值
逻辑运算符号:连接的要么数值/要么表达式,结果为true/false
6.三元(三目)运算符:
格式:(表达式) ? 执行true的结果:执行false的结果
执行流程:
1)先判断表达式是否成立,如果成立,执行true的结果
2)如果不成立,执行false的结果
6.键盘录入
使用步骤:
1)导包
格式:import java.util.Scanner;
2)创建键盘录入对象
格式:Scanner 键盘录入对象名 = new Scanner;
3)提示并接收数据
格式:System.out.println("请输入数据");
int 接收的变量名=键盘录入对象名.nextInt();
7.流程控制语句
1.顺序结构
2.选择结构(if结构 switch结构)
3.循环结构(for结构 while结构 do--while结构)
1.顺序结构
在程序主函数中按顺序执行
2.选择结构语句(if.switch)
if语句:
语句格式1:
if(表达式){
语句;
}
执行流程:判断表达式是否成立,如果是true,成立,执行语句;如果不成立,不执行!
语句格式2:
if(表达式){
语句1;
}else{
语句2;
}
执行流程:
1)首先判断表达式是否成立,如果是true,执行语句1
2)如果不成立,执行语句2;
语句格式3:
if(表达式1){
语句1;
}else if(表达式2){
语句2;
...
}else{
语句n ;
}
执行流程:
1)首先判断表达式1是否成立,如果成立,执行语句1,if语句结束!
2)如果表达式1不成立,再次判断表达式2是否成立,如果成立,执行语句2,语句结束!
3)如果上述表达式都不成立,就执行else中的语句,if语句结束!
扩展:if语句格式2的嵌套:
if(表达式){
if(表达式1){
语句11;
}else{
语句12;
}
}else{
if(表达式2){
语句21;
}else{
语句22;
}
}
执行流程:
首先判断外层if中表达式是否成立,
如果成立,执行表达式2是否成立
如果表达式2成立,执行语句1;否则,执行语句2;
外层if中表达式不成立,就执行else中的语句
首先判断表达式11是否成立,如果成立,执行语句11,
否则执行语句22;
注:
if语句注意事项:
1)有if的地方需要有一对{},有{}的地方不能分号;
2)在一个方法中(main() )定义一个{xxxd代码}作用:限定局部变量的生命周期
3)局部变量:在方法定义中的变量---->随着方法的调用完毕而消失!
switch语句:
switch语句的格式:
switch(表达式){
case 值1:
语句1; break ;
case 值2:
语句2; break ;
...
...
default:
语句n; break ;
}
执行流程:
1)先判断表达式的值和case语句值1是否匹配
如果匹配,执行语句1,遇见break ,switch语句结束了!
2)如果值1不匹配,继续判断值2是否匹配,如果匹配,执行语句2遇见break,switch语句结束!
...
3)如果上面的所有case语句都不匹配,执行default语句,执行语句n,直接结束
注意事项:
1)switch语句中的case语句后面跟的常量值,不能跟变量!
2)case语句中的break不能轻易省略,否则就会造成"case穿透",如果没有写break,跟下面case值不进行比较,直接运行语句,直到遇见break结束!
3)switch中的default语句:书写位置默认是在末尾,但是它也可以在switch语句中的任何位置,但是不影响执行流程
都需要先跟case中的值进行比较,如果都没有匹配,都需要执行default...
如果default在语句的末尾,break可以省略,如果在语句中的话,不建议省略break ;
4)关于switch语句的结束问题:
1)遇见break (中断,结束的意思) ,switch语句结束( break:属于跳转控制语句中一种)
2)语句默认执行到末尾!
注:
switch(表达式):
本身可以使用的类型:byte,short,char,int类型
JDK5以后可以枚举enum(引用类型--->定义常量)
JDK7以后:可以使用String类型
3.循环结构(for.while.do…while)
for循环:
格式:
for(初始化语句;条件表达式;步长语句){
循环体语句;
}
执行流程:
1)初始化语句给变量进行赋值,只执行一次
2)判断这个条件表达式是否成立,如果成立,就执行循环体语句,灾区执行步长语句(++,--)
3)在次判断条件表达式是否成立,如果成立执行2)语句
4)一直循环到条件表达式不成立,for循环结束.