黑马程序员——java语法二

来源:互联网 发布:淘宝网美二玖洗衣皂 编辑:程序博客网 时间:2024/06/07 11:43

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

 

Java语法二

函数

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

2. 函数的格式

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

                   执行语句;

                   return返回值;

         }

 

a)      修饰符public static

b)      返回值类型这个特定的功能完成后,需要返回一个结果,这个地方就是返回结果的类型

c)      函数名调用时指定的名字,这个名字要符合标识符命名规则

d)      参数类型形式参数的数据类型

                   形式参数:表示将要接收的参数

                   实际参数:调用方法时传入指定的参数

e)      执行语句这个语句是由多条语句组成

f)       return返回方法指定类型的一个值

3. 函数的特点

a)  函数只有被调用后,才执行

         b)  void 表示没有返回值,在这个函数的结尾可以不写return

                   jvm会自动的结尾处加上return;

4. 自定义函数

         a)  要实现什么功能,返回什么样的值

         b)  接收什么样的参数或者不接受参数

5. 函数的重载

         a)  函数名相同,参数个数不同,参数类型顺序不同

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

         c)  好处:便于阅读,优化程序设计

 

代码示例

class MethodTest {public static void main(String[] args) {// 调用方法getNum();// 接收参数并返回int型的方法int a = 1;int b = 2;int sum = sum(a, b);System.out.println(a + "+" + b + "=" + sum);}// 定义一个方法输出1~10public static void getNum() {for (int i = 1; i <= 10; i++) {System.out.println(i);}}// 定义一个方法得到两个数的和public static int sum(int a, int b) {return a + b;}}


 

数组

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

2.      数组的好处

         可以自动给数组中的元素从0开始编号,方便操作这些元素

3.      数组的定义的几种格式

a)      int[] arr = new int[5]; //初始化数组大小

b)      int[] arr;      //声明数组

arr = new int[];   //创建数组对象

c)      int[] arr = new int[]{1, 2, 3,4};   //指定数组的内容

d)      d)  int[] arr = {1, 2, 3, 4};  //直接创建数组内容

4.      当操作同一类型数量比较多的数据时

5.      数组会被创建在内存中的堆内,堆内的数据都是有初始值的,下面是每种数据类型的初始值

byte, short, int, long这些类型初始值是0

float, double初始值是0.0

char初始值是\0000         null

boolean初始值是false

引用类型初始值是null

6.      操作数组最常见的问题

a)      当你访问到数组中的最后一个元素时,还想继续访问,这个时候,会发生下标越界异常ArrayIndexOutOfBoundsException

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

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

b)      当数组不在指向某个实体时,你还继续访问,就会发生空指针异常NullPointerException

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

                            arr= null;

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

 

7.      常见的数组的操作

a)      访问数组某个值可以用数组名[index]得到, index指的是数组中的下标,最小下标是0,最大是arr.length-1,得到数组长度可以用length

b)      遍历数组

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

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

}

c)      获取最值

获取最大值

                            publicstatic int getMax(int[] arr){

                                     intmax = arr[0];                   

                                     //i1开始,因为第一个数不用跟自己比

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

                                               if(arr[x]> max) {

                                                        max= arr[x];

                                               }

                                     }

                                     returnmax;

                            }

                  获取最小值

                            publicstatic int getMin(int[] arr) {

                                     intmin = arr[0];

                                    

                                     //i1开始,因为第一个数不用跟自己比

                                     for(intI = 1; I < arr.length; i++) {

                                               if(arr[i]< min){

                                                        min= arr[i];

                                               }

                                     }

                                     returnmin;

                            }

d)      排序

选择排序

原理: 如果拿0下标上的元素依次和后面的元素进行比较,

            第一次内循环结束后,最小值出现在了0下标位置

public staticvoid selectSort(int[] arr){

                                     //i<arr.length-1n个数两两比 , n-1次就能获得最值。

                                     for(inti=0; i<arr.length-1; i++){

                                               //0下标元素没必要和自己比,所以j1开始。

                                               //发现j为了不重复比较,总是要比i1,所以ji+1开始

                                               for(intj=i+1; j<arr.length; j++){

                                                        if(arr[j]<arr[i]){

                                                                 inttemp = arr[i];

                                                                 arr[i]= arr[j];

                                                                 arr[j]= temp;

                                                        }

                                               }

                                     }

                            }

 

                   冒泡排序

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

                            publicstatic void bubbleSort(int[] arr){

                                     //i<arr.length-1n个数两两比, n-1次就能获得最值

                                     for(inti=0; i<arr.length-1; i++){

                                               //为了防止下标越界, j<arr.length-1

                                               //为了减少比较次数, j<arr.length-1-i

                                               for(intj=0; j<arr.length-1-i; j++){

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

                                                                 inttemp = arr[j];

                                                                 arr[j]= arr[j+1];

                                                                 arr[j+1]= temp;

                                                        }

                                               }

                                     }

                            }

e)      传递参数

调用的时候, 传递是基本类型的值的时候,形参改变对实参没有任何影响

                   调用的时候,传递是引用类型的地址值的时候,形参改变对实参有直接影响

 

8.      数组的初始化过程

创建数组时在堆内存开辟一连串的空间,引用指向第一个空间,这个空间代表这个数组的下标,每个空间指向数组存储的内容,当访问数组某个位置的内容时通过指定下标得到

数组练习示例代码

冒泡排序, 二分查找

class BinarySearch {public static void main(String[] args) {// 创建一个数组int[] arr = { 1, 4, 7, 3, 9 };// 给数组排序sort(arr);// 打印数组print(arr);// 二分查找法查找3的索引int index = binary(arr, 9);System.out.println(index);}// 定义一个排序的方法public static void sort(int[] arr) {for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr.length - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}// 定义一个二分查找的方法public static int binary(int[] arr, int num) {// 定义数组的最小下标和, 大下标和中间的下标int min = 0;int max = arr.length - 1;int mid = (min + max) / 2;// 当最小下标小于等于最大下标是循环while (min <= max) {// 如果num比数组中间的值小, 那么将最大下标定义为mid-1if (num < arr[mid]) {max = mid - 1;}// 如果num比数组中间的值大, 那么将最大下标定义为mid+1if (num > arr[mid]) {min = mid + 1;}// 如果num与中间的值相等, 那么返回midif (num == arr[mid]) {return mid;}mid = (min + max) / 2;}// 找不到返回-1return -1;}// 定义打印数组内容的方法public static void print(int[] arr) {// 遍历数组打印每一个元素for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}}}