一、运算符
1、不同类型之间的数据:数据类型的默认提示
byte,short,char 三个之间相互不转换的,但是一旦参与运算,都默认转换转换成int类型强制类型转换:(不建议使用,损失精度)
目标数据类型 变量名 = (目标数据类型)(变量值);
2、字符串拼接符:
字符串+(字符串拼接符)任何数据=字符串
+:不仅指的是运算符,还可以去当做字符串拼接符号去使用!
3、变量的三要素及其分类:
变量的三要素:数据类型、变量名、初始化值
数据类型的分类:
(1)基本数据类型
a.整数类型:(整数默认类型为int类型)
byte:字节类型 1字节 -128~127
short:短整型 2字节
int: 整数类型 4字节
long:长整型 8字节
b:浮点类型(默认类型为double类型)
float:单精度 4字节
double:双精度 8字节
c:字符型 char 2字节
d:布尔类型 boolean(true/false) 1字节
4、运算符:
(1)算术运算符
基本算术运算符: +, -, *, /(取整), %(取余)
扩展的算术运算符:++或者--
单独使用: 无论++或者--再数据前还是数据后,都是自增1或者自减1
参与运算使用: 如果++或者--再数据的前面,先自增或者自减,再参与运算
如果++或者--再数据的后面,先运算,再进行自增或者自减
(2)比较运算符
比较运算符: >, >=, <, <=, ==(区分赋值=)
(3)赋值运算符
基本的赋值运算符:=
扩展的赋值运算符: +=, -=, *=, /=, %=
(4)逻辑运算符
基本逻辑运算符:&:逻辑与 |:逻辑或 ^(逻辑异或) !(逻辑非)
结论:
逻辑&: 有false,则false
逻辑或|:有true,则true
逻辑异或:^:相同则为false,不同则为true
简单记:(男女关系) 男男 男女 女男 女女
逻辑非!:非true则false,非false,则true,偶数个是他本身
扩展的逻辑运算符:
逻辑双与:&&
逻辑双或:||
面试题: 逻辑双与&& 和逻辑单与&的区别?
* a:共同点:效果是一样的
* b:逻辑双与&& ,如果左边的表达式如果是false,那么右边不执行(具有短路效果)
* 逻辑双|| :如果左边的表达式是true,那么右边不执行(具有短路效果)
* 实际开发中:
* 逻辑双与&& 用的是最多的!
5.三目运算符( ? : )
执行流程:
首先判断表达式是否成立,如果比表达式成立,就执行true的结果,否则,false的结果;
6、键盘录入
键盘录入的步骤:
(1)创建一个键盘录入对象
Scanner scanner = new Scanner(System.in) ;
(2)由于java.lang.* 包不是不用导包的,但是Scanner它是java.util.Scanner
导包: import java.util.Scanner;
(3)接收键盘录入的数据(以int类型为例)
int number = sc.nextInt() ; nextXXX() ;
(4)输出数据
二、流程控制语句
1、switch
switch(表达式){
case 值1:
语句1;
break ;
case 值2:
语句2;
break;
case 值3:
语句3;
break;
....
default:
语句n+1;
break;
}
执行流程:
case语句中的值1和表达式中的值比较,如果一致,执行语句1
如果不一致,走case 值2,再进行比较,如果一致,执行语句2
....
如果上述都不一致,执行default中的语句
格式的解释:
switch:当前是一个选择结构语句,它的作用和if语句是一样
case语句:它后面的值是和表达式进行比较
break:表示结束当前switch语句
default:是和if语句中的else意识时候一样的,如果条件都不成立,执行default中的语句
switch语句后面的表达式:能跟的类型:byte,short,int,char
jdk5以后,可以跟枚举
jdk7以后,可以String类型
重点:
关于switch语句中的注意事项:
(1)case语句的后面只能跟常量(根据具体的需求),不能跟变量! javascript中的case后面是可以跟变量并且还可以跟表达式
(2)default语句可以在switch语句中的任何位置,不影响代码执行,如果是在语句中,那么break最好带上
(3)建议把break带上,否则会造成一个现象:case穿透!
(4)switch语句的结束条件:
a.语句break语句结束
b.)执行默认执行到末尾语句结束
(5)case语句的后面是冒号,表示和switch语句中的表达式进行比较
(6)跳转控制语句: break,continue,retrun (见6)
2、for
for(初始化语句;条件语句;步长语句){
循环体语句;
}
执行流程:
初始化语句:给当前变量进行赋值,如果满足条件语句,那么执行循环体语句
执行步长语句,对变量进行自增或自减---->在对条件语句进行判断,如果满足条件,再次执行循环体---->步长语句
直到不满足条件为止,循环语句结束...
循环语句的注意事项:
1)条件语句,不管是一个简单的表达式还是复杂的表达式,都是boolean类型
2)初始化语句,和条件表语句后面都要带上分号;
3、while
基本格式:
while(条件表达式){
循环语句体;
}
扩展格式:(优于基本格式)初始化语句 ;
while(条件表达式){
循环体语句;
步长语句;
}
执行流程:
初始化语句对变量进行赋值,如果满足条件表达式,那么执行循环体语句,执行步长语句---->继续判断是否满足条件
--->满足条件,继续执行循环体语句,步长语句---->当满足不足条件为止结束
while循环和for循环的区别?
(1)如果从内存角度考虑,for循环要优于while循环,for循环语句执行完毕之后,变量会及时被GC垃圾回收期回收掉
while循环,它可以去访问循环语句中的变量
(2)根据具体需求具体分析,
如果循环次数明确的情况下,应用for循环
如果不知道要循环多少次,应该去使用while循环
4、do-while
基本格式
do{
循环体语句
}whiel(判断条件语句) ;
扩展格式:初始化语句;
do{
循环体语句;
控制体语句;(步长语句)
}while(条件判断语句) ;
for循环,while循环,do-while循环,他们之间的区别?
do-while和前两者之间最大的区别:
循环体语句至少执行一次
实际开发:优先考虑 for循环,其次while循环,最后,do-while
5、for-for(for循环嵌套):常用于输出行列的,例如乘法表
for( ){
for( ){
}
}
正则表达表达式
转义字符:
*字符,*代表任意字符
'\t' 制表符
'r' 回车符
'\n' 换行
6、break、continue、return的区别
(1)break:表示中断,结束的意思,结束语句;
break:不能单独使用,一般在switch语句,或者循环语句中使用
(2)continue:继续的意思,跳出当前循环,直接进入一次循环
continue:单独是不能使用的,在循环语句中使用多
(3)retrun :方法的返回值 ,会带回一个结果7,、方法(function)
方法:完成特定功能的代码块
方法的格式: 形式参数
public static 返回值 方法名(参数类型1 变量1,参数类型2 变量名){
return ...
}
方法格式的解释:
public static:方法是静态的,并且是公共的方法
返回值(数据类型): 根据具体的需求,返回什么类型,用什么样的数据类型结束
方法名:给当前代码块起名字
命名规则:单个单词:字母全小写 多个单词:第一个单词全部小写,第二个单词开始每个单词首字母大写
return: 将当前代码的计算的结果,返回给调用者
方法调用:1)单独调用
单独调用,没有意义,没有输出结果
2)输出调用
直接输出了结果,写死了,不能对结果进行操作
3)赋值调用 : 有返回值类型的方法,推荐使用赋值调用,它可以结果进一步操作
int result = sum(a,b) ;
无明确返回类型的用void:用单独调用
定义一个方法的注意事项:
1)方法和方法是平级关系,一个方法中不能再定义个方法
2)定义一个方法 时候,形式参数必须有数据类型,否则有问题
3)在主main( )中,调用方法的时候,实际参数中不需要带数据类型的
4)有大括号的地方,不能有分号,有分号的地方不能有大括号
8、重载
Java就给提供一个专业名词:给多个方法起同一个名字,还不报错---->方法重载 (面向对象:继承中讲方法重写)
方法重载:指的是方法名相同,参数不同,返回值没有关系
参数不同:
1)参数个数不同
2)参数类型不同