黑马程序员------Java基础学习------方法和数组

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


1、什么是方法(Method)?
方法是一组为了实现特定功能的代码块的集合。方法在语法上的功能主要有以下两个:
①:结构化代码
将代码按照功能进行组织,使代码的结构比较清晰,容易阅读和修改,也就是程序的可维护性强。
②:减少代码重复
一个固定的功能,可能会在程序中多次使用,在使用时只需要调用写好的方法,而不用重复书写对应的功能代码。


方法在书写时需要注意以下两点:
①:逻辑严谨
方法实现的一个完整的功能,所以在书写时要考虑到各种可能的情况,并对每种情况做出恰当的处理。
②:通用性强(可重复利用)
方法实现的是一种功能,在实际实现时,可以根据需要,使方法具备一定的通用性,除非必要,否则不要写专用的方法。在Java 语言中,恰当的使用方法,将使程序更加优雅,便于阅读和使用。

2、Java中方法的格式:

[修饰符] 返回值类型 方法名([参数类型 形式参数1,参数类型 形式参数2,……])
{	
	执行语句;	[return 返回值;]//需要的话
}


方法里的属性
访问控制符:访问控制符限定方法的可见范围,或者说是方法被调用的范围。方法的访问控制符有四种,按可见范围从大到小依次是:public、protected,无访问控制符,private。其中无访问控制符不书写关键字即可。具体的范围在后续有详细介绍。
形式参数:在方法被调用时用于接收外界输入的数据。
实参:调用方法时实际传给方法的数据。
返回值:方法在执行完毕后返还给调用它的环境的数据。
返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回类型 void。
方法签名:方法名和方法的参数列表(能区别方法);//最关键的
java语言中调用方法:对象名.方法名(实参列表)。
实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配。
return 语句终止方法的运行并指定要返回的数据。


4、方法特点


它可以实现独立的功能;
必须定义在类里面;
它只有被调用才会执行;
它可以被重复使用;
方法结束后方法里的对象失去引用;


如何定义一个功能,并通过方法体现出来:
① 明确该功能运算后的结果.明确返回值类型;
② 明确在实现该功能过程中是否有未知内容参与运算,确定参数列表;
package reviewDemo;
/**
 * player 的值分别是1,2,3或者其他值时,该方法返回“大明”,“二明”,“小明”,“我没有这个孩子”。
 */

public class Demo2 {
	public static void main(String[] args) {
		int player = 5;
		System.out.println("返回的结果是:"+show(player));
	}
	
	public static String show(int p){
		switch (p) {
		case 1:
			return "大明";	
		case 2:
			return "二明";	
		case 3:
			return "小明";
		default:
			return "我没有这个孩子!";
		}
	}
}

什么是方法的重载(Overload)?


概念:
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型或参数顺序不同即可。
存在的原因:
屏蔽了一个对象的同一类方法由于参数不同所造成的差异。
特点:
与返回值类型无关,只看参数列表。


以下是方法重载的示例:
class Chongzai 
{
	public static void main(String[] args) 
	{
		int ret = name(3,4,5);
		System.out.println(ret);
	}
	public static int name(int a, int b)
	{
		int c = a+b;
		return c;
	}
	public static int name(int a, int b, int m)//这就叫做方法的重载,只要参数列表不一样。好处:用户使用时限制很小;
	{
		int c = a+b+m;
		return c;
	}
}

6、可变参数
从java5开始出现了可变参数,这是对java方法及数组的拓展!
方法中可以接受的参数不再是固定个数的,而是随着具体需求传递的多少来决定。


定义格式: 返回值类型  方法名(参数类型 ... 形式参数){ }
可变参数的特点:
只能出现在参数列表的最后;
... 位于变量类型和变量名之间,前后有无空格都可以;
调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
package reviewDemo;

import java.util.Arrays;

public class Demo6 {
	public static void main(String[] args) {
		int []age = {1,2,3,69,36,636,459};
		show(age);
	}
	
	public static void show(int...a){//此时这里写的就是可变参数,和数组的作用一样!
		//把数组给打印出来!
		System.out.println(Arrays.toString(a));
	}
}	

7、数组简介:
数组(Array)是Java 语言中内置的一种基本数据存储结构,通俗的理解,就是一组数的集合,目的是用来一次存储多个数据。数组是程序中实现很多算法的基础,可以在一定程度上简化代码的书写。


备注:
1. 数组的好处:数组里的每个元素都有编号,编号从0开始,并且依次递增,方便操作这些元素;
2. 使用Java数组:必须先声明数组,再给该数组分配内存;
3. 数组对应在内存中一段连续空间。
4. 数组元素必须是相同数据类型,也可以是引用数据类型,但是同一个数组中的元素必须是同一类数据类型。




8、一维数组的声明与初始化:
一维数组:可以理解为一列多行、类型相同的数据,其中每个数据被称为数组元素;
一维数组的声明方式:
  type varName[]; 或 type[] varName;(推荐)
Eg:int age[]; int []age;
数组的长度一旦确定,就不能改变,也就数组是定长的;
我的总结:java语言声明数组的时候不能指定其长度(元素的个数)
Eg:int a[5]; //非法


初始化:
Java中的数组必先初始化才可以使用,所谓初始化就是为数组的数组元素分配内存,并为每个数组元素赋值;
数组初始化的两种方式:
静态初始化:初始化时由我们自己指定每个数组元素的初始值,由系统决定需要的数组长度;
格式:数组名 = new 数组类型[]{元素1,元素2,元素3...元素n};
简化语法:数组名 = {元素1,元素2,元素3...元素n};


动态初始化:初始化时由我们指定数组的长度,由系统为数组元素分配初始值;
格式:数组名 = new 数组类型[数组长度];

package reviewDemo;
/**
 * 声明数组及初始化
 */
public class Demo3 {
	public static void main(String[] args) {
		int []age = new int[10];
		//动态初始化
		for (int i = 0; i < age.length; i++) {
			age[i] = i;
			System.out.print(age[i]+"     ");
		}
	}
}
输出:0     1     2     3     4     5     6     7     8     9  

输出:0     1     2     3     4     5     6     7     8     9  
9、数组的使用:
Java语言的数组索引是从0开始的,也就是说数组里的第一个元素的索引是0,第二个元素的索引是1,依次可以类推。
常见操作:
给数组元素赋值
数组名[索引] = 数组类型的值 ;
访问数组元素
数组类型 变量 = 数组名[索引];
得到数组的长度
int len  = 数组名.length; //length是数组的属性
遍历数组(备注:length 属性和循环语句)
数组元素的索引范围(0,长度—1) 

package reviewDemo;
/**
 * 判断数组是否重复
 */
public class Demo3 {
	public static void main(String[] args) {
		int []age = {1,2,3,4,5,6,5};
		for (int i = 0; i < age.length-1; i++) {//双层循环,定住一个,再考虑下一个!
			for (int j = i+1; j < age.length; j++) {
				if(age[i] == age[j]){
					System.out.println("有重复的!"+i+"  "+j);
					break;
				}
			}
		}
	}
}

求最大值:
package reviewDemo;

public class Demo4 {
	public static void main(String[] args) {
		int age[] = new int[] { 12, 26, 3, 60, 55, 6, 48, 4, 98 };
		int max = age[0];
		for (int i = 0; i < age.length; i++) {
			if (max < age[i]) {
				max = age[i];
			}
		}
		System.out.println(max);

	}
}


------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

你可能感兴趣的:(Java,学习日记)