------- android培训、java培训、期待与您交流! ----------
Java基础语法2
一:函数
1.函数的定义:
(1).函数就是定义在类中的具有特定功能的一段独立小程序。函数也称为方法。
(2).函数的格式:修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2) {
执行语句;
return 返回值;
}
2.函数的特点:
(1).定义函数可以将功能代码进行封装,便于对该功能进行复写。
(2).函数只有被调用才会被执行。
(3).函数的出现提高了代码的复用性。
(4).对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的 return语句如果在最后一行可以省略不写。
(5).函数中只能调用函数,不可以在函数内部定义函数。
(6).定义函数时,函数的结果应该返回给调用者,交由调用者处理。
3.函数的重载:
(1).重载的概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数 和参数类型不同即可。
(2).重载的特点:与返回值类型无关,只看参数列表。
(3).什么时候用重载?
当定义的功能相同,但参与运算的未知内容不同,那么,这时就定义一个函数名称以表示其功能,方便阅读,而通过参数列表的不同来区分多个同名函数。
二.数组
1.数组的定义:
(1).概念:同一种类型数据的集合。其实数组就是一个容器。
(2).好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。
(3).格式:
a.元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
b.元素类型[] 数组名 = new 元素类型[]{元素,元素,......};
(4).数组的内存结构:
a.内存里有5个区:栈内存,堆内存,方法区,本地方法区,寄存器。
b.栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放。
c.堆内存:
数组和对象,通过new建立的实例都存放在堆内存中。
每一个实体都有内存地址值。
实体中的变量都有默认初始化值。
实体不在被使用,会在不确定的时间内被垃圾回收器回收。
(5).数组操作常见问题:
A.数组角标越界异常(ArrayIndexOutOfBoundsException):操作数组时,访问到了数组中不存在的角标。
B.空指针异常(NullPointerException):当引用没有任何指向值为null的情况,该引用还在用于操作实体。
(6).数组的常见操作:
A.获取数组中的元素,通常会用到遍历:
class Demo {
public static void main(String[] args) {
array();
}
public static void array() {
int[] arr = new int[]{1,2,3,4,5,6};
for(int x = 0; x < arr.length; x++) {
System.out.println("arr["+x+"]"+"="+arr[x];
}
}
}
B.获取最值:
最大值:
class Demo {
public static void main(String[] args) {
int[] arr = {1,4,2,5,6,0,-1,32,3};
int max = getArray(arr);
System.out.println("max="+max);
}
public static int getArray(int[] arr) {
int max = arr[0];
for(int x = 1; x < arr.length; x++) {
if(max < arr[x])
max = arr[x];
}
return max;
}
}
最小值:
class Demo {
public static void main(String[] args) {
int[] arr = {1,4,2,5,6,0,-1,32,3};
int min = getArray1(arr);
System.out.println("min="+min);
}
public static int getArray1(int[] arr) {
int min = 0;
for(int x = 1; x <arr.length; x++) {
if(arr[min] > arr[x])
arr[min] = arr[x];
}
return arr[min];
}
}
C.排序:
选择排序:
class Demo {
public static void sort(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 z = arr[x];
arr[x] = arr[y];
arr[y] = z;
}
}
}
}
public static void array(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 static void main(String[] args) {
int[] arr = {3,1,7,5,2,8,4,0,6,9};
array(arr);
sort(arr);
array(arr);
}
}
冒泡排序:
public static void bubbleSort(int[] arr) {
for(int x=0; x<arr.length-1; x++) {
for(int y=0; y<arr.length-1-x; y++) {
if(arr[y]>arr[y+1])
swap(arr,y,y+1);
}
}
}
//对数组元素进行位置置换。
public static void swap(int[] arr,int index1,int index2) {
int temp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = temp;
}
三:二维数组
1.二维数组:其实元素就是一个一维数组。
2.格式:
(1).方式1:int[][] arr = new int[3][2];
解释:
定义了名称为arr的二维数组
二维数组中有3个一维数组
每一个一维数组中有2个元素
一维数组的名称分别为arr[0], arr[1], arr[2]
给第一个一维数组1索引位赋值为78写法是:arr[0][1] = 78;
(2).方式2:int[][] arr = new int[3][];
二维数组中有3个一维数组
每个一维数组都是默认初始化值null
可以对这个三个一维数组分别进行初始化
arr[0] = new int[3];
arr[1] = new int[1];
arr[2] = new int[2];
(3).方式3:int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};
3.二维数组的遍历
思路:
(1).二维数组的每一个元素是一维数组。
获取到每一个一维数组。
(2).一维数组的遍历。
class Array2Demo {
public static void main(String[] args) {
//二维数组的遍历
int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};
//arr.length 获取二维数组的长度,其实也就是一维数组的个数
for(int x=0; x<arr.length; x++) {
//arr[x].length 获取的是每一个一维数组的长度
for(int y=0; y<arr[x].length; y++) {
//arr[x][y] 获取的是二维数组的元素
System.out.print(arr[x][y]+"\t");
}
System.out.println();
}
}
}