基本数据变量的声明
- 方式:
- 首先声明变量,再进行变量的赋值
int i ;//变量的声明
i = 10;//变量的复制
-声明变量的同时进行变量的赋值
int i = 10;//变量的声明与赋值
类型转换
应用环境:在某种场合对于一个变量的范围进行限制,因此我们需要对该变量进行类型转换。
注意:发生类型转换的前提是:类型之间相互兼容。
类型
- 自动转换(隐式转换):小范围类型的变量赋值给大范围类型的变量
- 强制转换(显式转换):把大类型的变量赋值给小类型的变量,会损失精度。
- 强转的语法: 目标类型 变量 = (目标类型)大类型变量;
- 实例:
int i = 223;
byte by = (byte)i;
- 注意
在一个运算表达式中,如果存在不同的类型数据运算时,默认将所有的低类型变量或者值向该表达式的最高类型转换,再运算
sh = sh + 1; //系统默认数据类型为int 所以此式中的1为int型。
//在进行运算时,如果数据类型不同,则先将数据类型
//进行转换,在计算。故此表达式错误
sh += 1; //这种表达不会出现类型转换,故此表达式正确。
运算符
- 定义:对数据进行运算的符号
分类:
算术运算符:基本数据类型进行数学运算:
- 类型:+,-,*,/,%,++,–
- 注意
- “+” 是一种特殊的运算符。不但可以基本数据的加法运算,还可以代表正号表示,最特殊还是可以进行字符串的拼接。
- “++”:自增运算符,对本身值加1,但是其处于运算值的位置的左边则是先使用运算值,再进行自加,若位于运算值的右边则是先进行自加运算,再使用自加后的值,“–”也是如此。
位运算:对二进制数据进行运算
- 类型:&(与)、|(或)、~(按位取反)、^(异或)、<<(左移)、>>(有符号右移)、>>>(无符号右移)
- 注意:移位运算符主要使用在对2的次幂进行乘除运算时,为了提高效率。使用时,左移多少位,等同于给原值乘2的多少次幂;有符号右移多少位,等同于给原值除以2的多少次幂,无符号右移,正数时,与有符号右移一致,负数时则会产生错误
关系运算符:是对数据进行关系比较使用。
- 类型:>,<,==,<=,>=,!=
- 注意:关系运算符计算结果是一个boolean值(true/false),==不但可以对基本数据类型的值进行是否相等比较,还可以对引用数据类型的虚地址进行比较,使用在条件表达式中
逻辑表达式:
- 类型:&,|,!,&&,||
- 注意:逻辑运算主要对关系运算符的结果进行运算,产生的结果值是布尔值(true/false)
- &与&&的异同点:两个都是且的意思,&表示不管前面是true还是false都要运行后面;&&表示只有前面是true时才运行后面的条件表达式,工作常用。
- |与||的异同点:两个都是或的意思,| 表示不管前面是true还是false都要运行后面;|| 表示前面是true,后面不运行,工作中常用。
流程控制
- 定义:在编写代码时,需要使用一定的逻辑对执行流进行控制,此时对执行流进行控制的逻辑就叫做流程控制。
分类:
顺序结构:指令按照开始到结束一次执行的流程顺序就是顺序结构
分支结构:在满足条件情况下,去执行某些操作
if条件语句:
特定条件下执行某个操作——-if(条件表达式){//满足条件时执行的代码}
二选一操作——–if(条件表达式){//满足条件时执行的代码}else{//不满足条件时执行的代码}
- 多选一操作——-if(){}else if(){}else if(){}else{}
- 特殊的多选一操作—-if(){}else if(){}else if(){}else if(){}
注意:
- 多选一操作总要执行一个语句,而特殊的多选一操作只有满足条件之一才能执行,否则不执行
- if经常使用在满足一定范围的条件执行语句中
switch语句
- 注意:
- 在特定值一对一的进行分支选择时使用该分支语句
- switch关键字后面括号中的值或者特定类型的变量允许出现的类型:byte、short、int、char、枚举,jdk1.6以后可以有String类型
- 格式:
- 注意:
switch(值、特定类型的变量){
case 值1:
//该分支执行命令
break;
case 值2:
//该分支执行命令
break;
case 值3:
//该分支执行命令
break;
case 值4:
//该分支执行命令
break;
default:
//默认执行语句
}
循环结构:对相同结构的代码进行便捷处理测结构语句
- 分类:
while(条件表达式){ //循环体 }
其执行过程:先判断,在循环
do{ //循环体 }while(条件表达式);
如果现在对于控制循环的变量值,并且变换规律稳定:
for(int i =0;i<10;i++){ //循环体 }
break、continue和return的用法及实例
break:可以用在分支语句中结束当前的分支,还可以用在循环语句中,如果没有标记,那么结束所在循环,如果有标记使用,那么就结束标记的那个循环。通常用在switch和循环中。
- 实例
无标记的单层循环
//nested loop example
for(int i=0; i<3; i++) {
for(int j=0; j<3; j++) {
if(i == 1 && j==2) {
break;
}
System.out.println("i="+i+",j="+j);
}
}
System.out.println("");
嵌套循环中,break只结束内层循环,并不结束外层循环
添加标志后可以结束任意循环(OUT表示标志,一定要写在所要结束循环的前面)。
//nested loop with flag
OUT:
for(int i=0; i<3; i++) {
for(int j=0; j<3; j++) {
if(i == 1 && j==2) {
break OUT;
}
System.out.println("i="+i+",j="+j);
}
}
continue:只能用在循环语句中,没有标记时结束其所在循环的本次循环进入所在循环的下一次循环,有标记时,结束所标记循环的本次循环,进入标记循环的下一次循环。
不带标记的嵌套循环
//nested loop example
for(int i=0; i<3; i++) {
for(int j=0; j<3; j++) {
if(i == 1 && j==1) {
continue;
}
System.out.println("i="+i+",j="+j);
}
}
System.out.println("");
带标记的嵌套循环
//nested loop with flag example
OUT:
for(int i=0; i<3; i++) {
for(int j=0; j<3; j++) {
if(i == 1 && j==1) {
continue OUT;
}
System.out.println("i="+i+",j="+j);
}
}
return :
作用:
(1)返回方法指定类型的值(这个值总是确定的),也可以是对象
(2)方法的结束
方式:
(1)有返回类型 例如:return i;
(2)无返回类型 return;