1.9 作业:需求:键盘录入三个数据,返回三个数中的最大值(写成一个方法可以直接调用并且返回值)
import java.util.Scanner; class FunctionTest3 { public static void main(String[] args) { //创建对象 Scanner sc = new Scanner(System.in); System.out.println("请输入第一个数据:"); int x = sc.nextInt(); System.out.println("请输入第二个数据:"); int y = sc.nextInt(); System.out.println("请输入第三个数据:"); int z = sc.nextInt(); int max = getMax(x,y,z); System.out.println(max); } public static int getMax(int a,int b,int c) { int temp = a>b?a:b; int max = temp>c?temp:c; return max; } }
二:方法重载(简单理解就是同名【方法名】不同参【参数】) [参数个数或者类型不同] 方法重载: 在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。 方法重载特点 与返回值类型无关,只看方法名和参数列表 在调用时,虚拟机通过参数列表的不同来区分同名方法 三:数组 3.1 数组:数组是存储同一种数据类型多个元素的集合 注意:数组既可以存储基本数据类型,也可以存储引用数据类型 3.2 数组的定义格式 A:数据类型[] 数组名; int[] arr; B:数据类型 数组名[]; int arr[]; 区别:念法上区别 int[] arr; int类型的数组,arr int arr[]; int类型的,arr[] 3.3 数组初始化概述: A:Java中的数组必须先初始化,然后才能使用。 B:所谓初始化 就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。 3.4 如何为数组进行初始化呢? A:动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。 B:静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。 3.5 动态初始化: 初始化时只指定数组长度,由系统为数组分配初始值。 格式: 数据类型[] 数组名 = new 数据类型[数组长度]; 数组长度其实就是数组中元素的个数。 3.6 为了方便我们获取数组中的元素,数组就为每个元素进行了编号,从0开始。 这个编号,专业叫法:索引。(角标,下标) 有了索引如何获取元素呢? 格式:数组名[索引] 静态初始化: 初始化时指定每个数组元素的初始值,由系统决定数组长度。 格式: 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…}; 简化格式: 数据类型[] 数组名 = {元素1,元素2,…}; 数组操作常见的两个小问题 ArrayIndexOutOfBoundsException:数组索引越界异常(访问长度超过了数组的定义长度) NullPointerException:空指针异常(引用已经不再指向堆内存) 一般来说,只要是引用类型的变量,我们在使用前,都要先判断是否为null。 如果不为null,才继续使用。 3.13 数组遍历: 依次输出数组中的每一个元素 数组遍历标准格式: for(int x=0; x<数组名.length; x++) { System.out.println(数组名[x]); } 作业:数组元素查找(查找指定元素第一次在数组中出现的索引), 封装成方法分析: 返回值:int类型 参数列表:int[]数组,需要查找的元素 四:类与对象 1:我们学习编程语言,就是为了模拟现实世界的事物,实现信息化。 2:我们是如何描述现实世界的事物的呢? 属性 就是该事物的描述信息(举例,人,汽车) 行为 就是该事物能够做什么(举例,人,汽车) 人: 属性:姓名,年龄,身高,发色 行为(功能):吃,睡觉,玩游戏, 汽车: 属性:颜色,品牌,价格,排量,动力 行为:赛车,拉人 5.3:我们学习的Java语言最基本单位是类,所以,我们就应该把事物用一个类来体现。 5.4:类与对象 类:是一组相关的属性和行为的抽象 对象:是该类事物的具体体现。(实例) 举例: 对象:张三 类:学生 五:类的定义 1 类是用来描述现实世界事物的。 事物: 属性 特征 行为 功能 类: 成员变量 特征 成员方法 功能 类的组成: 成员变量 类中方法外的变量 成员方法 没有static修饰的方法 需求: 用Java语言体现学生类。 分析: A:得到学生事物 B:把学生事物转换为学生类 C:用代码体现学生类 实现: A:得到学生事物 属性: 行为: B:把学生事物转换为学生类 成员变量: 成员方法: C:用代码体现学生类 学生类: 成员变量: 成员方法: 2 练习: 模仿学生类,写出手机类。 1.得到手机类事物 属性:颜色,品牌,价格 行为:发短信,聊微信,打电话 2.事物转换成手机类 成员变量:String color,String brand,int price 成员方法:sendMessage(),weiChat(),call() 3.用java代码实现 类: 成员变量: 成员方法: 六: 类的使用(重要:new关键字的含义) .1 一个文件一个类 类的使用(拿学生类过来练习,并画内存图进行讲解) 使用一个类,其实是使用该类的成员。(变量和方法) 我们要想想用一个类的成员,就必须创建该类的对象。 如何创建类的对象呢? 格式: 类名 对象名 = new 类名(); 就表示创建了该类类型的一个对象。 如何使用成员呢? 成员变量: 对象名.变量; 成员方法: 对象名.方法名(...); 七:成员变量和局部变量的区别? A:在类中的位置不同 成员变量 类中方法外 局部变量 方法内或者方法声明上 B:在内存中的位置不同 成员变量 堆内存 局部变量 栈内存 C:生命周期不同 成员变量 随着对象的存在而存在,随着对象的消失而消失 局部变量 随着方法的调用而存在,随着方法的调用完毕而消失 D:初始化值 成员变量 有默认初始化值 局部变量 没有默认初始化值 八:形式参数问题 数据类型: 基本类型:4类8种。byte,short,int,long,float,double,char,boolean 基本类型实际参数传递的时候传递的是这个基本类型的具体的值 引用类型:类,接口,数组 引用类型进行参数传递的时候,传递的是该引用类型的(实例对象)说白了就是这个对象的地址值 九: 匿名对象:就是没有名字的对象 是对象一种简写形式。 应用场景: A:调用方法(对象调用方法仅仅一次的时候) B:作为实际参数传递