黑马程序员——语句、函数和数组


------- android培训java培训、期待与您交流! ----------

判断语句——if

if语句 三种格式:

1、if(条件表达式)

{    //如果满足就执行不满足就结束

  执行语句;

 }

2、if(条件表达式)

{   //如果满足条件就执行“执行语句1”,否则的话执行“执行语句2”

  执行语句1;

 }  else{ 

   执行语句2;

 }

这种if语句和三元运算符的区别:

三元运算符可以称之为if语句的简写形式

三元运算符,是一种运算符号,也就是说每次执行后,必须有结果。

if...else是语句,只是控制流程,执行后不一定有结果

if...else可以里面有语句,并输出结果,三元运算符不可以。

 

 

3、if(条件表达式)

{   //代表的是多重条件时满足哪一个条件就执行该条件的执行语句否则执行else下边的执行语句

    执行语句;

 }  

else if (条件表达式)

{

    执行语句;

 }  

……

 else

{

    执行语句;  

}

 

如果if语句后面不加{},只能控制一条语句,加{}是控制整个{}里面的语句。

 

 

 

 

选择结构——switch

 

switch语句 格式:

 

switch(表达式)

{

case 取值1:

 执行语句 ;

  break;

case 取值2:

  执行语句;

  break;

      ......   ......

default:

 执行语句;

 break;

}

 

 

switch语句特点:

  1,switch语句选择的类型只有四种:byte,short,int ,char。

 2,case与default之间没有顺序。先执行第一个case,没有匹配的case最后在执行default。

 3,结束switch语句的两种情况:遇到break,执行到switch语句结束。

 4,如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。

 

 

switch和if的区别:

1,如果判断的具体数值不多,可以使用switch,也可以使用if,但是建议使用switch效率会更高一些。

2,如果对区间进行判断或者boolean结果的判断,只能用if。

 

 

循环结构——while、for

while语句格式:

while(条件表达式)

{

 循环体;   控制循环次数;

}

 

do while语句格式:

do

{

 循环体;

 控制循环次数;

}

while(条件表达式);

 

 

 

 while和do while的区别: dowhile语句会先执行循环体,再去判断条件,也就是说无论条件是否满足他都至少要执行一次循环体,先执行 ,再判断 。

 while 先判断条件,只要条件不满足就不在执行循环体了,先判断,再执行。

 

 

 

for语句格式:

for(初始化表达式;循环条件表达式;循环后的操作表达式)

{

 执行语句;

}

 

 

   1,for里面的每个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复这个个过程,直到条件不满足为止。

    2,for和while可以互换,区别在于for为了循环而定义的变量在for循环结束就是在内存中释放。而while循环使用的变量在循环结束后还可以继续使用

 

   最简单的无限循环格式:while(true),for(;;){},不确定要循环多少次

 

 

 

break(跳出), continue(继续)

break语句: 应用范围: 选择结构和循环结构。

continue语句: 应用于循环结构。

1,这两个语句离开应用范围,存在是没有意义的。

2,这个两个语句单独存在下面都不可以有语句,因为执行不到,无意义语句。

3,continue语句是结束本次循环继续下次循环。

 

 

函数

函数就是定义在类中的具有特定功能的一段独立小程序。也成为方法

函数的格式:

修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2)

{

      执行语句;

      return 返回值;

}

 

返回值类型:函数运行后的结果的数据类型

参数类型:是形式参数的数据类型

形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数

返回值:返回给调用者

 

 

函数的特点:

定义函数可以将功能代码进行封装,便于对该功能进行复用。

函数只有被调用才会执行

函数的出现提高了代码的复用性

函数如果没有具体返回值,返回值类型用void表示,return可以省略不谢

 

 

如何定义函数:

1,明确功能的运算结果(明确返回类型)

2,明确是否需要未知的内在参与运算(明确参数类型)

 

函数的重载

在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可

特点:与返回值类型无关,只看参数列表

方便阅读,优化程序设计

 

 

数组

数组:同一种类型数据的集合.其实数组就是一个容器,它的好处是可以从0开始编号,方便操作这些元素

 

 

定义数组的格式

格式一:

元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
示例:int[] arr = new int[5];    

格式二:

元素类型[] 数组名 = new 元素类型[]{元素,元素,……};
int[] arr = new int[]{3,5,1,7};
int[] arr = {3,5,1,7};

 

内存机构

java运行时需要在内存中分配空间,为了提高效率,对空间进行了不同区域的划分。

栈内存

用于存储局部变量,当数据使用完,所占空间会自动释放

堆内存

1,数组和对象,通过new建立的实例都存放在堆内存中

2,每一个实体都有内存地址值

3,实体中的变量都有默认初始化值

4,实体不在被使用,会在不确定打的时间被垃圾回收期回收

 

 

数组异常:
 1,操作数组时,访问到数组中不存在的角标,会发生角标越界异常。
   ArrayIndexOutOfBoundsException
   举例 int[] arr = new int[3];
          System.out.println(arr[3]);
,2,当数组不在指向某个实体时,如果继续访问,就会发生空指针异常。
   NullPointerException
   举例 int[] arr = new int[3];
          arr = null;
          System.out.println(arr[0]);

 

数组的操作:

1、遍历

for (int x=0;x < arr.length ;x++ )//length代表长度,元素个数

{    
   System.out.println("arr["+x+"]="+ arr[x]);
}

 

2、获取最值

最小值异同

 

 //获取最大值

public static void main(String[] args) {

    int[] arr = {5,2,1,3,7,8};

    int x = getMax(arr);

    System.out.println(x);

}

public static int getMax(int[] arr){

    int max = arr[0];

     

    //i从1开始,第一个数不用跟自己比

    for(int x=1; x<arr.length; x++) {

        if(arr[x]>max) {

            max = arr[x];

        }

    }

   return max;
}


 

 

 3、排序

选择排序
  原理:如果拿0角标上的元素依次和后面的元素进行比较, 循环结束后,最小值出现在了0角标位置。

arr[x]与arr[y]比较 

for (int x = 0;x < arr.length - 1;x++){//-1:不用遍历到最后一个

    for (int y = x + 1;y < arr.length;y++){

        if (arr[x] > arr[y]){

            int temp = arr[x];

            arr[x] = arr[y];

            arr[y] = temp;

        }

    }

}

冒泡排序
   原理:两个相邻元素进行比较,第一次比较完以后,最大值出现在了最大角标处。

for (int x = 0;x < arr.length - 1; x++){

  //-1防止角标越界

    //-x为了让每一次比较的元素减少   
    for (int y = 0;y < arr.length - 1 - x;y++){

           if (arr[y] > arr[y+1]){

            int temp = arr[y];

            arr[y] = arr[y+1];

            arr[y+1] = temp;

        }

    }

} 

 

 排序开发中使用:Arrays.sort(arr);

 

 查找:

 

 二分查找:必须是有序数组

public static int getIndex(int[] arr,int key) {

    int min = 0;

    int max = arr.length-1;

    int mid = (min + max)/2;

    while (key != arr[mid]){

        if (key > arr[mid]){

            min = mid + 1;

        }else if (key < arr[mid]){

            max = mid - 1;

        }

        if (min > max){

            return -1;

        }

        mid = (min + max)/2;

    }

    return mid;

}


 

 

二维数组[][]:

格式1:

int[][] arr = new int[4][3];
 定义了名称为arr的二维数组
 二维数组中有4个一维数组
 每一个一维数组中有3个元素
 一维数组的名称分别为arr[0], arr[1], arr[2],arr[3]
 给第一个一维数组1脚标位赋值为1写法是:arr[0][1] = 1;
格式2:

int[][] arr = new int[3][];
 二维数组中有3个一维数组
 每个一维数组都是默认初始化值null
 可以对这个三个一维数组分别进行初始化
  arr[0] = new int[3];
  arr[1] = new int[1];
  arr[2] = new int[2];

 格式3:

int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};
 定义一个名称为arr的二维数组
 二维数组中的有三个一维数组
 每一个一维数组中具体元素也都已初始化
 第一个一维数组 arr[0] = {3,8,2};
 第二个一维数组 arr[1] = {2,7};
 第三个一维数组 arr[2] = {9,0,1,6};
 第三个一维数组的长度表示方式:arr[2].length;

 

 

二维数组的遍历:

int[][] arr = new int[2][3];

public static void printArray(int[][] arr){

    for(int i=0; i<arr.length; i++){

        for(int j=0; j<arr[i].length; j++){

            System.out.print(arr[i][j]+" ");

        }

        System.out.println();

    }

}


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值