您的位置:首页 > 编程语言 > Java开发

特殊字符及分支语句和循环语句

2018-03-11 19:38 225 查看
特殊的控制字符: \表示转义
如:回车、换行、空格,Tab等等  
char c='\n';//换行
       '\r';//回车
       '\t';//Tab
       '\\';// \
       '\'';//'
       '\"';//"
       '\u4e2d';//表示Unicode中十六进制的数

数据类型的转换:
自动类型转换(小到大)
强制类型转换(大到小)

1.Java编译器在编译期间会将所有的字面量运算优化为结果:如'A'+1优化为整数
2.变量的值只能在运行期确定,不能在编译期优化
3.int字面量在不超过char、byte、short的范围时,可以直接给这三种类型的变量赋值

运算符:
数学运算符:+、-、*、/、%、++、--
1、同种类型的数据参与运算,返回同种类型的结果
2、如果类型不同,要类型转换
3、byte、short、char按照int、类型计算
4、运算的时候Java不检查溢出问题
5、整数的除法是整除
++ --自增自减运算(单位是1)
++/--在后就是先赋值后运算
++/--在前,就是先运算后赋值

比较运算符:>、<、>=、<=、==、!=

逻辑运算符:&(与)、|(或)、!(非)
短路逻辑和非短路逻辑
短路逻辑:&&、||、!
非短路逻辑:&、|、!

短路逻辑:&&、||
短路与运算:(如果表达式1)&&(表达式2),如果表达式1的值为false,那么不计算表达式2,整个表达式返回false。
短路或运算:(如果表达式1)||(表达式2),一旦表达式1的值为true,那么不计算表达式2,整个表达式返回true。

非短路逻辑:&、|
与运算:如果(表达式1)&(表达式2),不管表达式1的值是什么,表达式2都要执行
或运算:如果(表达式1)|(表达式2),不管表达式1的值是什么,表达式2都要执行

因为短路逻辑与实际业务更相近,所以实际业务中更常用

条件运算符:也称为三目运算(三元运算)
语法:布尔表达式1?表达式2:表达式3
如果布尔表达式1返回的值为true,则以表达式2的整体作为结果,否则以表达式3的整体作为结果

赋值运算:=
赋值运算的表达式的值就是赋值的结果
int a=4;
System.out.println(a=8);//8

复合赋值运算的符:+=、-=、*=、/=、%=

字符串连接运算:+
“+”是java中唯一的重载运算符。
重载:名字相同,功能不同的运算。
1、如果“+”两端是数值,就是数学加法
2、如果“+”两端有一端是字符串,就是字符串连接运算

分支结构:
1.if else
if(条件语句1){
执行语句1
}else if(条件语句2){
          执行语句2
}else{
其他执行语句
}
switch case
swtich case
语法:
switch(整数表达式){
case 整数字面量/常量1:  //语句块1;break;
case 整数字面量/常量2:  //语句块2;break;
case 整数字面量/常量3:  //语句块3;break;
case 整数字面量/常量4:  //语句块4;break;
default: //其他情况下的语句块; break;
}

switch:开关
case:各种情况下执行的内容
break:跳出分支结构,不再执行下面的语句
1、switch(整数表达式),只能使用int short byte char,在JDK1.7以后还支持String类型。
2、case条件只能是具体的值,不能使用变量和表达式
3、case的条件内容可以为空,如果为空,就继续执行之后的代码
4、default表示如果没有满足case条件的其他任何情况
5、break一定要写,不写会执行下面的代码,不写会执行下面的代码,直到break为止
6、if esle 与 switch case 区别:
if else属于多路分支,可以使用任意条件,包括整数条件
switch case只能更具数据结果进行分支,性能较好

循环控制语句
for 循环
for循环结构:"经典用法"处理与个数,次数有关的循环
语法:
for(初始化表达式1;循环条件2;递增表达式4){
//循环体3
}
执行流程:1-》2-》true-》3-》4-》2-》true-》3-》4-》2-》false-》结束
while 循环
while循环结构:"经典用法"处理与个数,次数无关的循环
在循环开始的时候检查循环条件
语法
while(循环条件1){
//循环体2
}
执行流程:
1-》true-》2-》1-》true-2-》1-》false-》结束
do while 循环
do while 循环结构:"经典用法"处理与个数,次数无关的循环。
在循环体以后检查循环条件。
do{
//循环体1
}while(循环条件2);

执行流程:1-》2-》true-》1-》2-》true-》1-》2-》false-》结束
循环的互相代替
1.for循环替代while循环
while(循环条件){循环体}
等价于for(;循环条件;){循环体}

2.while循环替代for循环
for(初始化表达式;循环条件;递增表达式){循环体}
等价于
初始化表达式;
while(循环条件){
循环体
递增表达式;
}
3.死循环
while(true){循环体}
for(;true;){循环体}
for(;;){循环体}
4.while循环替代dowhile循环
do{循环体}(循环条件);
等价于
while(true){
循环体;
if(!循环条件){
break;
}
}

for(;;){
循环体;
if(!循环条件){
break;
}
}

for(;true;){
循环体;
if(!循环条件){
break;
}
}

双层for循环
for(初始化表达式;循环条件;递增表达式){
for(初始化表达式;循环条件;递增表达式){
循环体
}
}

1.如果与次数或者个数有关的循环使用for
2.业务条件中循环条件在循环开始的时候检查,使用while
3.业务条件中循环条件在循环之后检查,使用 do while
4.业务条件中循环条件在循环体中部检查,使用 死循环配合break
5.如果不确定使用哪种循环,就使用死循环+break

字符(char):单个字符,本质上是一个整数,使用单引号定义
字符串(String):一排字符,本质上是字符数组。使用双引号定义
"中"=='中'//编译错误
Java是强类型语言,类型不兼容,不能进行比较
字符串的比较,必须使用.equals()方法。
"中".equals('中');//返回false,类型不一致
"中".equals('中'+"");//返回true

==比较的是地址值
equals()比较的是内容

数组:
java数组就使"对象"
"对象"在java中就是存在的一个东西,唯物主义
object == 对象 == 东西  == 一切皆对象(一切存在的事物都是object)

java数组:"对象",数组就是一个东西(数据的组合)<
4000
br />这个东西包含多个类型一致的元素(按照特定)
数组:一系列类型相同的元素按特定顺序排列的组合。
如:键盘、玉米棒,共享单车(按顺序排放)

1.数组变量,是数组的代名词
如何声明数组变量,如何初始化变量,如何改变变量的值
语法:
数据类型[] 变量名;
如:int[] ary;声明了一个int类型的数组变量ary
   int a;声明了一个int类型的变量a
//注意int类型和int数组类型不是同种类型

数组的变量可以引用数组的对象
数组变量是引用类型变量,值是地址值!是数组的内存位置。
数组变量可以赋值为null(空),表示不引用任何对象
null是一个字面量,表示没有!
如:"小苹果"  没有引用任何东西。
当变量是null时,如果访问属性、方法、元素时,会发生异常:空指针异常!不是编译错误!
当一个引用变量的值为null时,有变量,但是变量不引用任何东西,变量的值是"空",变量有值,是null

引用对象的值是对象的地址值,可以通过地址间接地引用对象

2.数组对象(数组)
创建数组对象:创建一组数据
有三种方式:
A、new 数据类型[]{元素0,元素1....元素n};直接初始化元素的方式,在[]中不能定义长度
如 new int[]{1,2,3};
B、使用长度创建数组:new 数据类型[长度];
创建数组,并且初始化每个元素为“零”值
如:new int[3];//等价于new int[0,0,0];
C、静态初始化,相当于A方式的简写,只用于声明数组的同时初始化元素
如int[] ary={4,5,6};等价于int[] ary = new int[]{4,5,6};

3.数组元素(数组中每一个个体)
如何访问数组元素
A.使用[数组下标(序号)]读取,或改写数组元素
ary[3]=6;将下标为3的元素改为6
int n = ary[3];将ary引用的数组中下标为3的元素的值获取,赋值给int类型的n
如果arry的值为null,会出现空指针异常
如果数组中没有下标为3的元素,会出现下标越界异常
B.使用.length属性获取数组长度(元素的个数)
注意:
1.数组的长度不可以改变。length是只读属性
2.如果没有数组(ary=null),访问长度属性,会发生空指针异常
3.数组中,最后元素的位置length-1 不是length

方法(Method)
1.在业务功能方面:方法是软件的功能,是软件业务中的动词
如:飞机可以被子弹打掉。检查飞机是否被击中就是方法
2.方法在代码层面就是利用数据进行计算的算法。
如:检查飞机是否被击中,就是一个算法:判断一个点是否在矩形之内

方法的语法:3个要素
返回值类型  方法名  参数列表
语法:
public static 返回值类型 方法名 (参数列表){
//方法体,算法的过程
}

public static boolean hit(int x1,int y1,int x,int y,int w,int h){
//计算飞机被打中的算法过程
}

方法的业务目的:检查飞机是否被子弹击中
返回值类型:boolean 返回值类型代表方法处理的结果
返回的结果是true,表示飞机被击中
        fales,飞机没有被击中
        
方法名:hit是java中的标识符(自己命名的)
一般情况下要求见名知意        
如:hit 撞击,检查是否被撞击
参数列表:是算法的前提条件
如:int x1.int y1表示子弹的参数
   int x,int y,int w,int h 代表飞机的参数
方法的参数是局部变量,作用域为方法体的范围,离开方法体,会被GC回收

方法体:{//实现方法体} 方法体中的计算过程就是算法

使用方法名调用方法,执行方法的功能,得到方法的执行结果,执行结果就是返回值。这个过程称之为方法的调用
注意:方法在类中声明   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java
相关文章推荐