------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、流程控制语句
1、选择控制语句(if)
选择结构也被称为分支结构,选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码,Java语言提供了两种选择结构语句if语句和switch语句
if语句有三种格式:
a:格式:
if(条件表达式) {
语句体
}
执行流程:
首先判断条件表达式,看其结果是true还是false
如果是true就执行语句体
如果是false就不执行语句体
b:格式:
if(条件表达式) {
语句体1
}else{
语句体2
}
执行流程:
首判断条件表达式看其结果是true还是false先
如果是true就执行语句体1
如果是false就执行语句体2
c:格式:
if(条件表达式1) {
语句体1;
}else if (条件表达式2) {
语句体2;
}
.......
else {
语句体n+1;
}
执行流程:
首先判断条件表达式1看其结果是true还是false
如果是true就执行语句体1
如果是false就继续判断条件表达式2看其结果是true还是false
如果是true就执行语句体2
如果是false就继续判断条件表达式…看其结果是true还是false
…
如果没有任何条件表达式为true,就执行语句体n+1.
2、选择控制语句(switch)
格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
格式的解释说明:
switch:表示这里使用的是switch语句。
switch:后面的小括号内通常是一个变量,是后面要判断的值。
case:表示这里就是选项的值,它后面的值用来和表达式的值进行匹配。
break:跳出switch语句。
default:它相当于if语句的else.当所有的case和表达式都不匹配的时候,就走default的内容。
执行流程:
1:首先计算表达式的值
2:和每一个case进行匹配,如果有,就执行对应的语句体,看到break就结束.
3:如果没有匹配到,就执行default的语句体n+1.
注意事项:
1:switch(表达式):表达式可以取byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是字符串
2:case后面只能是常量,不能是变量,而且case后面的值是不能够重复的,case没有先后顺序,所有的情况都是并列的
3:default可以省略吗?
可以省略,但是不建议,因为它的作用是对不正确的情况给出提示.
4.:break可以省略吗?
可以省略,但是结果可能不是我们想要的.
会出现一个现象:case穿透.所以不建议省略.
5.default一定要在最后吗?
不是,可以在任意位置.但是建议在最后.
6:switch语句的结束条件
a:遇到break就结束了
b:执行到末尾就结束了
3、循环控制语句(for)
格式:
for(初始化表达式①;条件表达式②;增量表达式④){
循环体③
}
执行顺序: ①②③④>②③④>②③④… ②不满足为止
注意事项:
a:条件表达式结果必须是boolean类型
b:循环体如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略.建议永远不要省略.
c:一般来说:有左大括号就没有分号,有分号就没有左大括号
4、循环控制语句(while)
格式:
a:基本格式:
while(条件表达式){
循环体;
}
b:扩展格式:
初始化表达式;
while(条件表达式){
循环体;
增量表达式;
}
5、循环控制语句(do......while)
基本格式:
do{
循环体;
}while(条件表达式);
扩展格式:
初始化表达式;
do{
循环体;
增量表达式;
}while(条件表达式);
二、方法
定义:方法就是完成特定功能的代码块
格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) {
函数体;
return 返回值;
}
1、方法格式解释
修饰符 如:public static
返回值类型 :用于限定返回值的数据类型
方法名:一个名称,为了方便我们调用方法
参数类型:限定调用方法时传入参数的数据类型
参数名 :是一个变量,接收调用方法时传入的参数
方法体: 完成功能的代码
return :结束方法以及返回方法指定类型的值
返回值: 程序被return带回的结果,返回给调用者
2、特点:
定义方法可以将功能代码进行封装,便于对该功能进行复用。
方法只有被调用才会被执行。
方法与方法是平级关系,不能嵌套定义
方法的出现提高了代码的复用性。
对于方法没有具体返回值的情况,返回值类型用关键字void表示,那么该方法中的return语句如果在最后一行可以省略不写。
3、方法重载:
方法重载概述:
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
方法重载特点:
与返回值类型无关,只看方法名和参数列表
在调用时,虚拟机通过参数列表的不同来区分同名方法
三、方法练习
1、打印99乘法表
/*
需求:打印99乘法表
思路:使用for循环嵌套结构
步骤:
1、先用一个for循环控制打印的行数
2、在嵌套一个for循环的确打印行数
3、在嵌套的循环体中输出结果
*/
class ChengFaTest
{
public static void main(String[] args)
{
chengFa();
}
public static void chengFa()
{
//外循环控制函数
for(int i=1;i<=9;i++)
{
//内循环控制列数
for(int j=1;j<=i;j++)
{
//输出两数的乘积
System.out.print(j+"*"+i+"="+i*j+"\t");
}
//换行
System.out.println();
}
}
}
运行结果:
2、方法重载练习案例
/*
需求:分别求两个整数,小数和
思路:使用方法重载
步骤:
1、写一个方法sum(),然后调用这个方法求和
2、根据参数类型写出对象sum()方法
3、输入结果查看
*/
class ChongZhai
{
public static void main(String[] args)
{
int sum1=sum(10,11);//两个整数
int sum4=sum(1,2,3);//三个整数
float sum2=sum(1.0F,43.0F);//两个float类型
double sum3=sum(234.1,22.1);//两个double类型
System.out.println(sum1);
System.out.println(sum2);
System.out.println(sum3);
System.out.println(sum4);
}
//根据传的参数不同,调用对应的方法
public static int sum(int a,int b)
{
//参数是整数
return a+b;
}
public static int sum(int a,int b,int c)
{
//三个参数
return a+b+c;
}
public static float sum(float a,float b)
{
//两个float
return a+b;
}
public static double sum(double a,double b)
{
//两个double
return a+b;
}
}
运行结果:
四、数组
1、数组的概念及格式
数组的概念:
数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
数组既可以存储基本数据类型,也可以存储引用数据类型。
数组的定义格式:
格式1:数据类型[] 数组名;
int[] arr ;
格式2:数据类型 数组名[];
2、数组初始化概述
Java中的数组必须先初始化,然后才能使用。
所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
数组的初始化方式:
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
3、数组的内存图解
数组初始化的时候是在堆内存里面开辟一片空间,用来存放数组的值,在栈创建对象存放地址指向堆内存。
4、数组操作常见的两个问题
a:数组索引越界
ArrayIndexOutOfBoundsException
访问到了数组中的不存在的索引时发生
b:空指针异常
NullPointerException
数组引用没有指向实体,却在操作实体中的元素时。
5、二维数组
格式1
数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数
n表示每一个一维数组的元素个数
举例:
int[][] arr = new int[3][2];
定义了一个二维数组arr
这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2]
每个一维数组有2个元素,可以通过arr[m][n]来获取
表示获取第m+1个一维数组的第n+1个元素
格式2
数据类型[][] 变量名 = new 数据类型[m][];
m表示这个二维数组有多少个一维数组
这一次没有直接给出一维数组的元素个数,可以动态的给出。
举例:
int[][] arr = new int[3][];
arr[0] = new int[2];
arr[1] = new int[3]
arr[2] = new int[1];
格式3
数据类型[][] 变量名 = new 数据类型[][]{ {元素…},{元素…},{元素…}};
简化版格式:
数据类型[][] 变量名 = { {元素…},{元素…},{元素…}};
举例:
int[][] arr = { {1,2,3},{4,5},{6}};
6、数组常见操作
a:获取一维数组的最值
public class test {
public static void main(String[] args) {
int arr[]={1,2,3,4,5,6,7,8,9,10};
int max=0;
//遍历数组
for(int i=1;i
public static void reverse(int[] arr){
//反转
//定义角标
int start = 0;
int end = arr.length -1;
while ( start < end ){
//对调
int temp = arr[start];
arr[start] = arr[end];
arr[end] =temp;
start++;
end--;
}
return ;
}
public static void printArray(int[] arr){
System.out.print("[");
for ( int x=0; x
/*
数组元素查找(查找指定元素第一次在数组中出现的索引)
*/
class ArrayDemo6{
public static void main(String[] args){
int[] arr = {1,2,3,4,5,2,3,42342,2,3,244,657,763,4,768,92,3,4};
int index = getIndex(arr,2444);
//判断index
if (index < 0 ){
System.out.println("您想查找的元素的并没有");
}else{
System.out.println("您想查找的元素的角标为:" + index);
}
}
/*
两个明确:
返回值类型: int
参数列表: int[] ,int num
*/
public static int getIndex(int[] arr,int num){
//定义索引变量
int index = -1; //-1表示就是没找到
//遍历
for (int x=0; x