嘿,程序员——关于java中的语句、函数与数组知识

图片镇楼

关于菱形,当三角尖朝上,可以改变条件。让条件随着外循环变化。

当尖朝下,可以改变初始化值,让初始化值随着外循环变化。

练习:菱形

class LingXing
{
        publicstatic void main(String[] args)
        {
                  for(inta=5;a>0;a--){
                           for(intb=1;b
                           System.out.print("");
                           }
                           for(intc=6;c>a;c--){
                                    System.out.print("*");
                                    }
                           for(intd=5;d>a;d--){
                                    System.out.print("*");
                                    }
                           System.out.println();
                  }
                  for(inta=5;a>0;a--){
                           for(intb=6;b>a;b--){
                                    System.out.print("");
                                    }
                           for(intc=1;c
                                    System.out.print("*");
                                    }
                           for(intd=2;d
                                    System.out.print("*");
                                    }
                           System.out.println();
                  }
        }
}


图片发自简书App

练习:给出一个十进制数得出它的各十六进制位

class Demo

{

        publicstatic void main(String[] args)

        {

                  inttest=60;

                  intnum;

                  System.out.println(test+"的各十六进制位是:");

                  while(test>0)

                           {

                           num=test& 15;

                           test=test>>4;

                           if(num>9)

                                    {

                                    charch=(char)(num-10+'A');

                                    System.out.println(ch);

                                    }

                                    else

                                              {

                                              System.out.println(num);

                                              }

                           }

         }

}



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

函数的格式:

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

    执行语句;

    return 返回值;}

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

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

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

return:用于结束函数。

返回值:该值会返回给调用者。

如何定义一个函数:

1、既然函数是一个独立的功能,那么该功能的运算结果是什么先明确。因为这是在明确函数的返回值类型。

2、在明确定义该功能的过程中是否需要未知的内容参与运算。因为是在明确函数的参数列表(参数的类型和参数的个数)。


函数的重载(overload):在一个类中,允许存在一个以上的同名函数,只要它们的参数个数或参数类型不同即可。

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

重载的好处:方便于阅读,优化了程序设计。

什么时候用重载?

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

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

int[] x=new int[3]; 所有局部变量都在栈里,使用完自动释放,例如x,而new出来的对象都在堆里。数组被定义后会有初始化值。在堆中的垃圾会不定时的启动垃圾回收机制来进行清理。栈中的X指向的是数组在堆中的首地址。


图片发自简书App

int[] x=new int[3];

                  int[]y=x;//把数组x的地址给y,数组y和x指向同一数组空间

                  y[1]=89;//此时x[1]=89

                      x[1]=77;//此时x[1]=77,y[1]=77

ArrayIndexOutOfBoundsException: 数组角标越界异常

NullPointerException 空指针异常

数组的遍历、取最大(最小)值、排序

选择排序和冒泡排序掌握:

class ArrayTest

{

    public static voidmain(String[] args)

    {

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

             printArray(arr);

             //selectSort(arr);

             bubbleSort(arr);

       printArray(arr);

    }

    //数组遍历

    public static voidprintArray(int[] arr){

             for(intx=0;x

                      if(x!=arr.length-1){

                                System.out.print(arr[x]+",");

                      }

                      else

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

             }

    }

    //数组置换函数

    public static voidswap(int[] arr,int a,int b){

             int temp=arr[a];

             arr[a]=arr[b];

             arr[b]=temp;

    }

    //选择排序,就是每一个数组与其他数组比较一遍,把最小的先找出来

    public static voidselectSort(int[] arr){

             for (intx=0;x

                      for(inty=x+1;y

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

                                         /*inttemp=arr[x];

                                         arr[x]=arr[y];

                                         arr[y]=temp;*/

                                         swap(arr,x,y);

                                }

                      }

             }

    }

    //冒泡排序,就是相邻数组间比较,最大的往后移

    public static voidbubbleSort(int[] arr){

             for (intx=0;x

                      for(inty=0;y

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

                                         /*inttemp=arr[y];

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

                                         arr[y+1]=temp;*/

                                         swap(arr,y,y+1);

                                }

                      }

             }

    }

}


折半查找的两种方法:

class ArrayTest1

{

    public static voidmain(String[] args)

    {

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

             int key=8;//将一个数找出它插入的位置和查找这个数原理是一样的,只是返回值的改变。不再是返回-1,而是返回min。

             intindex=getIndex_2(arr,key);

             System.out.println(index);

    }

    //第一种折半查找,用需要查找的数与mid比较

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

             intmin=0,max=arr.length-1,mid;

             mid=(min+max)/2;

             while(arr[mid]!=key){

                      if(key

                                max=mid-1;

                      }

                      else

                                min=mid+1;

                      if(min>max)

                                return-1;

                      mid=(min+max)/2;

             }

             return mid;

    }

    //第二种折半查找,用min与max比较

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

             intmin=0,max=arr.length-1,mid;

             mid=(min+max)/2;

             while(min

                      if(arr[mid]

                                min=mid+1;

                      }

                      else

                                if(arr[mid]>key)

                                max=mid-1;

                      else

                                returnmid;

                      mid=(min+max)/2;

             }

             return -1;

    }

}


优化后的十进制转其他进制方法。

class ArrayTest7

{

    public static voidmain(String[] args)

    {

             toHex(60);

             System.out.println();

             toBin(6);

             System.out.println();

             toBin(0);

    }

    public static voidtoHex(int num){

             trans(num,15,4);

    }

    public static voidtoBin(int num){

             trans(num,1,1);

    }

    public static voidtrans(int num,int base,int offset){

             char[]ch={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

             char[] arr=newchar[32];

             intpos=arr.length;

             if(num==0){

                      System.out.print(0);

                      return;

                      }

             while(num!=0){

                      inttemp=num&base;

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

                      num=num>>>offset;

             }

             for(intx=pos;x

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

             }

    }

}



数组中的数组:二维数组 int[][] arr=new int[3][4];

Int[][] arr=new int[3][];在这里只创建一个含三个一维数组的二维数组,没有创建每个一维数组中的元素,此时 arr[0]=null;没有初始化值,指向数据的地址为空。

小问题:

int[] x,y[];//x是一维数组,y是二维数组

相当于int[] x;  int[] y[];

所以以下赋值语句:

X[0] = y;//是错的

y[0] = x;//是对的

y[0][0]=x;//是错的

x[0][0]=y;//是错的

y[0][0]=x[0];//是对的

x=y;//是错的

我的总结:这一部分的内容还是主要围java语言的基础,熟练掌握各种基础语句,if、for、while等的综合运用,能够编写小的程序。明确函数是什么,函数的格式,以及如何定义一个函数,这是学习java语言的基础。着重明确什么是重载,知道重载如何使用,什么时候使用。明确数组在内存中是如何存储的,千万区分出栈内存和堆内存,知道分别存储的是什么。会用数组编写一些简单的程序,掌握数组如何遍历、排序、查找等问题。


图片发自简书App
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容