黑马程序员_java基础


一、 函数

1、 定义:

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

3、 函数的格式:

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

{

执行语句;

Return 返回值;

}

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

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

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

4、 函数的特点:

1)定义函数可以将功能代码进行封装

     (2)便于对该功能进行复用

      (3)函数只有被调用才会被执行

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

5)对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写。

4、注意:

      (1)函数中只能调用函数,不能定义函数。

       (2)定义函数时,函数的结果应该返回给调用者,交由调用者处理。

    5、重载:

       (1) 重载的概念:

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

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

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

    (4)什么时候用重载?

       当定义的功能相同,但参与运算的未知内容不同,那么这时就定义一个函数名称以表示其功能,

              方便阅读,而通过参数列表的不同来区分多个同名函数。

二、 数组

1、 数组的定义:

(1) 概念:同一种数据的集合,其实数组就是一个容器。

(2) 数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。

格式:

格式1:元素类型[] 数组名 = new 元素类型[元素个数或数组长度];

       示例:int[] arr = new int[7];

 

        格式2:元素类型[] 数组名 = new 元素类型[]{元素,元素......};

      示例:int[] arr = new int[]{3,6,7,9};

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

2、 内存结构:

java在启动时,在内存中划分了五个区域,每个区域都有特定的处理数据方式和内存管理方式。

1)栈内存

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

2)堆内存

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

      每一个实体都有内存地址值(即存放位置)

       实体中的变量都有默认初始化值(实体是用来封装数据的)

       实体不再被使用,会在不确定的时间内被垃圾回收器回收

3)方法区

4)本地方法区

5)寄存器

3、数组的常见操作:

(1)遍历:

   int[] arr = {4,8,7,9};

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

   {

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

   }

2)求最大值:

给定一个数组{5164289}

    获取粗数组中的最大值,以及最小值

   步骤:

   1、定义变量,初始化为数组中任意一个元素即可。

   2、通过循环语句对数组进行遍历。

                3、在变量过程中定义判断条件,如果遍历到的元素比变量中的元素大,就赋值给该变量

public static int getMax(int[] arr)

   {

    int max = arr[0];

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

    {

     if (arr[x] > max)

       {

      max = arr[x];

     }

     }

    return max;

    }  

           (3)排序:

冒泡排序:

public class arry_Test3 {

public static void bubbleSort(int[] arr)

{

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

{

for(int y=0; y<arr.length-x-1; y++)//让每一次比较的元素减少,—1,避免角标越界。

{

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

{

int temp=arr[y];

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

arr[y+1]=temp;

}

}

}

}

public static void main(String[] args)

{

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

printArry(arr);//排序前

bubbleSort(arr);

printArry(arr);//排序后

}

public static void printArry(int[] arr)

{

System.out.print("[");

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

{

if(x!=arr.length-1)

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

else

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

}

}

}

折半查找

public class arry6 {

public static int halfSearch(int[] a, int key)

{

int min =0,max = a.length-1,mid;

while(min<=max)

{

mid = (max+min)>>1;

if(key>a[mid])

min = mid + 1;

else if (key<a[mid])

max = mid - 1;

else 

return mid;

}

return -1;

}

public static void main(String[] args)

{

int[] arr={1,4,7,8,10,18,19};

int index=halfSearch(arr,18);

System.out.print("index="+index);

}

}

 

           (4)进制转换:

   十进制--->二进制

   public static void toBin(int num)

   {

    while(num>0)

    {

     System.out.println(num % 2);

     num = num/2;

    }

  }

 

   十进制--->十六进制

   public static void toHex(int num)

   {

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

    {

     int temp = num&15;

     if(temp>9)

      System.out.println((char)(temp-10+'A'));

     else

      System.out.println(temp);

     num = num >>> 4;

    }

   }

 

4、二维数组:

   (1)格式1int[][] arr = new int[3][2];

   

     二维数组中有3个一维数组,每个数组中有2个元素。

     给第一个一维数组1角标位赋值:arr[0][1] = 78;

 

   (2)格式2int[][] arr = new int[3][];

     二维数组中有3个一维数组,每个一维数组都是默认初始化值null,

     对这三个一维数组分别进行初始化:

            arr[0] = new int[3];

    arr[1] = new int[1];

    arr[2] = new int[2];

3)关于二维数组相关面试题:

有一个数组定义:int[] x,y []; 请选择下面哪个选项是正确的( )

a) x[0] = y;   b)  y[0] = x;  c) y[0][0] = y; d) x[0][0]  = y;             ey[0][0]  = x[0];  f)  x = y;

回答:int[] x,y [];定义的是X是一维数组,Y是二维数组所以c是对的。


 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值