黑马程序员 自学日记(二) java基础 二

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

语法结构:程序的流程控制,分为判断结构、选择结构、循环结构

       If语句:判断结构

             格式1if(条件表达式){执行语句;}

             格式2if(条件表达式)else{执行语句;}

             格式3if(条件表达式)else if{执行语句;}

       特点:每一种格式都是单挑语句。if else 的简写格式就是三元运算符,三元运算符的好处是可以简化if else代码;弊端是结果必须要有一个结果。

       Switch语句:选择结构

             格式:switch(表达式){case取值1:执行语句;breakcase取值2:执行语句 breakdefault:执行语句;break }

       特点:switch语句选择的类型只有四种:byteshortintcharcase之间与default没有顺序。先执行第一行的case没有匹配的执行default。结束switch语句的两种情况是,遇到break或者执行到switch语句结束。

if switch很像具体什么场景下用什么语句?

如果判断的具体数值不多,而且符合byte short int char

虽然两个语句都能使用建议使用switch因为销量稍高

其他的情况例如对于区间的判断对于结果是是boolean型的使用if因为if的使用范围更广

class yuju

{

       public static void main(String[] args)

       {

              int x =2;

              switch(x)        //switch语句的类型只有 byte short int char

              {

case 4:

                            System.out.println("a");

                     break;

                     case 6:

                            System.out.println("b");

                     break;

                     case 2:

                            System.out.println("c");

                     break;

                     default:

                            System.out.println("d");

              }

 

       }

}

whiledo whilefor语句:循环结构。

       格式:whlie(条件表达式){执行语句;}

                do {}while(条件表达式;)特点是无论条件是否满足循环体至少执行一次。

                for (初始化表达式;循环条件;循环后操作){执行语句;}

class jiegou

{

       public static void main(String[] args)

       {

              /*定义一个初始化表达式

              while(条件表达式)

              {

                    循环体

              }*/

              int x=1;

              while(x<=10)

              {

              System.out.println("x="+x);

              x+=2;

              }

              /*

              while:先判断条件在执行循环体

              do whlie先执行循环体再判断条件条件满足再执行循环体

             简单说do whlie:无论条件是否满足循环体至少执行一次

              */

              do

              {

                     System.out.println("do:x="+x);

                     x++;

              }

              while (x<3);{

              }

       }

}

       for while的区别:

             变量有自己的作用域。对于for来讲如果将用于控制循环的的增量定义

             for中,for语句执行完毕,该变量在内存被释放

              forwhile可以进行互换,如果需要定义循环增量,用for更为合适

class fordemo

{

       public static void main(String[] args)

       {

              /*

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

              {

                           执行语句;

              }

              */

              for(int x =0;x<3;x++)

              {

                     System.out.println("x="+x);

              }

              int y = 0;

              while (y<3)

              {

                     System.out.println("y=="+y);

                     y++;

              }

       }

}

class ForTest

{

       /*

             无限循环的最简单表现形式

              for(;;){}

              while(true){}

       */

       public static void main(String[] args)

       {     int x= 1;

              for (System.out.println("a");x<3;System.out.println("c") )

              {System.out.println("d");

              x++;

              }

//要求计算1-10的和

     int he =0,y=1;

        while (y<=10)

        {he=he+y;

        y++;

        }

        System.out.println("he="+he);

       }

}

       break continue语句

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

              continue语句:应用循环结构。作用是结束本次循环继续下次循环。

       特点:这两个语句离开引用范围在没有任何意义,这两个语句单独存在的下面不可以有语句因为执行不到。

函数:定义在类中具有特定功能的一段独立的小程序,也叫方法。

       格式:修饰符范围值类型函数名(参数类型形式参数1,参数类型形式参数2

                     {

执行语句;return返回值;

}

       如何定义一个函数功能呢,那么该功能的原先结果是什么先要明确

       在明确在定义该功能的过程中是否需要未知的内容与运算

       定义一个功能完成3+4的运算并将结果返回给调用者

明确功能的结果是一个整数和

       在实现该功能过程中是否有未知能容参与运算

       public static int can()

       {

              return 3+4;

       }*/

       以上这个功能结果是固定的毫无扩展性而言

       为了方便用户需求有用户来指定加数与被加数这样功能才有意义

       public static int can(int x,int y)

       {

              return x+y;

       }

特点:定义函数可以将功能代码封装;便于对该功能复用;函数只有被调用才会执行;函数提高了代码的复用性;对于函数没有具体返回值的情况,使用返回值类型关键字void表示,return语句在最后一行可以省略不写。

 

重载:在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。特点:与返回值无关,只看参数列表。

什么时候用重载?

当定义的功能相同,但参与的运算的位置内容不同,那么这时就定义一个函数名表示此功能,方便阅读,而通过参数列表的不同来区分多个同名函数。

数组:同一种类型的数据集合,其实数组就是一个容器。

格式:元素类型[]数组名 = new元素类型{元素个数或者数组长度}

每当new一个数组实体时,在堆内存中的数组都跟会根据数组的类型不同有初始值。当栈内存引用不指向堆内存的数组实体时,此时的数组实体就成为了垃圾数据。

数组静态初始化,在数组一创建时,就赋予数组固定的元素。

数组的排序、遍历、取值等操作

class ShuZuTest 数组元素的最值

{

       public static void main(String[] args)

       {

              int[] arr={8,9,4,3,1,5};

              int y = arr[0];

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

              {

                     if (arr[x]>y)

                     y=arr[x];

 

              }

              System.out.println(y);

       }

}

class ArrayTest2 数组的排序

{

 

              public static void Array1(int arr[])

       {

              //给定的数组排序 {5,1,6,4,2,8}

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

              {

                     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;

                            }

                     }

              }

       }

数组中的两个基本排序代码

假定一个数组{1,8,5,6,15,18,12}

class ArraySort

{

       //1.选择排序

       public static void selectSort(int[] arr)

       {

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

              {

                     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;

                            }

                     }

              }

       }

//冒泡排序

       public static void bubbleSort(int[] arr)

       {

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

              {

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

                     {

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

                            {

                                   int temp=arr[y];

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

                                   arr[y+1]=temp;

                            }

                     }

              }

       }

/**

十进制转2816进制的方法函数

*/

class ArrayTrans

{

       public static void main(String[] args)

       {

              trans(12,7,3);//各个进制的基数与位移数分别是12,17,3 15,4

       }

//进制转换优化的功能函数

public static void trans(int num,int base,int offset)

{

              if(num==0)

                     System.out.print(0);

              char[] chs={'0','1','2','3','4','5','6','7','8',

                             '9','a','c','d','e','f'};

              char[] arr=new char[32];

              int pos =arr.length;

              while (num!=0)

              {

                     int temp = num & base;

                     arr[--pos] = chs[temp];

                     num =num >>> offset;

              }

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

              {

                     System.out.print(arr[x]);

              }

       }

}

 

数组的查找功能

class GetIndex

{

       public static void main(String[] args)

       {

              int[] arr={2,4,5,7,19,32,45};

              int index = halfSearch_2(arr,5);

              System.out.println("1="+index);

       }

       //折半查找:折半查找可以调高效率但是这个数组是必须是有序的数组

       public static int halfSearch_2(int[]arr,int key)

       {

              int mid,max,min;

              min=0;

              max=arr.length;

              while (min<=max)

              {

                     mid =(max+min)>>1;

                     if (key>arr[mid])

                            min=mid+1;

                     else if(key<arr[mid])

                            max =mid-1;

                     else

                            return mid;

              }

              return -1;

       }

       //顺序查找:定义一个功能用于获取key第一次出现在数组中的位置如果返回值为-1该值不存在。

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

       {

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

              {

                     if (arr[x]==key)

                     {

                            return x;

                     }

              }

              return -1;

       }

}

二维数组:

       int[][] arr = new int [3][2];表示定义了一个arr的二维数组二维数组中有三个一位数组。每个一维数组内有两个元素。如果new intp[3][]表示每个一维数组的初始化值都是null

 

---------------------- <a href=" http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href=" http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值