----------------------
ASP.Net+Android+IO开发S、
.Net培训、期待与您交流! ----------------------
---------------------- ASP.Net+Android+IO开发S、 .Net培训、期待与您交流! ----------------------
关于函数
1、首先要明确一个思想如何定义一个函数呢?
(1)既然函数是一个独立的功能,那么该功能的运算结果是什么先明确,因为这是在明确函数的返回值类型。
(2)在明确在定义该功能的过程中是否需要未知的内容参与运算。因为是在明确函数的参数列表(参数的类型和参数的个数)
2、定义函数要注意的
/*
这个功能定义思想有问题,为什么呢?因为只为完成加法运算,至于是否要对和进行打印操作,
那是调用者的事,不要在该功能中完成。
*/
public static void get(int a,int b)
{
System.out.println(a+b);
}
3、何时使用重载?
当定义的功能相同,但参与运算的未知内容不同。那么,这时就定义一个函数名称以表示起功能,方便阅读,而通过参数列表的不同来区分多个同名函数。
4、重载演示中提高代码复用性的思想
/*
注意看,代码倒是没啥稀奇的,主要是要掌握这种思想,当这两个重载的函数内部有大段代码相似时,就要考虑下如何做的更简便
就如同print99()方法中,可以直接调用带参数的print99方法
*/
public static void print99(int num)//打印自定义的99乘法表
{
for(int x=1; x<=num; x++)
{
for(int y=1; y<=x; y++)
{
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}
}
//打印99乘法表
public static void print99()
{
print99(9);
}
关于数组部分
1、数组的初始化
//像下面的这种初始化方式就是静态初始化,已经把数组中元素的个数和内容给出来了
int[] arr = new int[]{3,1,6,5,4};
//也可以这样简化写
int[] arr = {3,1,6,5,4};
//而在数据不明确时就要采用如下定义方式,[]里是元素个数
int[] arr = new int[5];
要注意的是:数组是有默认初始化值的
2、角标越界异常和空指针异常
int[] arr = new int[3];
//ArrayIndexOutOfBoundsException会报这个异常,是因为操作数组时,访问到了数组中不存在的角标。
System.out.println(arr[3]);
//NullPointerException:空指针异常:当引用没有任何指向值为null的情况,该引用还在用于操作实体。
arr = null;
System.out.println(arr[1]);
3、遍历一个数组
数组中有一个属性可以直接获取到数组元素个数 .length,使用方式:数组名称.length =
int[] arr = {3,6,5,1,8,9,67};
//利用for循环遍历
for(int x=0; x<arr.length; x++)
{
System.out.println("arr["+x+"]="+arr[x]+";");
}
4、一个打印数组元素的小功能
//要求:定义功能,用于打印数组中的元素。元素间用逗号隔开。
public static void printArray(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]+"]");
}
}
这个函数不是多难,但是我觉得里面的一些思想还是得记住的,如何去掉最后一逗号,猛地一想也许还想不起来,这里告诉我,只要在for循环遍历的过程中加上一些限定条件,就能做到,for循环不能用的太死板,要活学活用
5、获取数组中的最值
//以获取最大值为例
public static int getMax(int[] arr)
{
int max = arr[0];//把数组中第一个元素初始化给max
//遍历数组的同时,拿每个元素去跟max比
for(int x=1; x<arr.length; x++)
{
if(arr[x]>max)
max = arr[x];
}
return max;
}
//其实还有一种方法
public static int getMax_2(int[] arr)
{
int max = 0;
for(int x=1; x<arr.length; x++)
{
if(arr[x]>arr[max])
max = x;
}
return arr[max];
}
这里要说的是,写代码的过程中要多思考,同时第二种方法考验的是对角标对元素的认识程度
6、举个十进制转十六进制的例子
//这里面有些地方的思想是比较重要的
public static void toHex(int num)
{
/*
为什么要循环八次?因为一个整数是4个字节,一个字节是8位,也就是传进来的数
有32个二进制位,而当我们把这二进制往十六进制转其实就是每次取4位,然后转成
十六进制的数
*/
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位,是为了取下个四位
}
}
总结:这种方法是有点复杂的,其实还有一种简单的就是查表法,把每个数对应的十六进制 的元素放进一个数组里,然后用temp做索引去数组里查,那就很简单了
7、关于二维数组
int[][] arr = new int[3][4];
/*
定义了名称为arr的二维数组。二维数组中有3个一维数组。
每一个一维数组中有四个元素。
*/
int[][] arr = new int[3][];
/*
定义这样一个数组,里面的一维数组要进行默认初始化,因为
数组是引用类型,所以 要是打印arr[1]的话,结果是null
*/
//小知识点
int[] x,y[];//x一维,y二维。
int[] x;
int[] y[];
---------------------- ASP.Net+Android+IO开发S、 .Net培训、期待与您交流! ----------------------