Java学习第五天

                             Java学习第五天

1.1 方法概述
方法:就是完成特定功能的代码块
1.2 方法的定义
定义格式:
修饰符 返回值类型 方法名 (参数类型 参数名){
方法体 ;
return 返回值 ;
}
定义格式解释:
修饰符:目前固定写法 public static
返回值类型 :用于限定返回值的数据类型
方法名: 一个名称,为了方便我们调用方法
参数类型 :限定调用方法时传入参数的数据类型
参数名: 是一个变量,接收调用方法时传入的参数
方法体 :完成功能的代码
return: 结束方法以及返回方法指定类型的值
返回值 :程序被return带回的结果,返回给调用者
方法案例
写好一个方法需要两个明确
返回值类型 :明确需要调用的数据类型
参数列表 :明确有几个参数以及参数的类型
按照格式和两个明确来完成如下功能
求两个数据之和的案例
class WayDemo{
public static void main(String[] args){

	//定义变量
	int a = 10 ;
	int b = 20 ;
	
	/*
		public static int sum(int a,int b){
			return a +b ;
		}
	*/
	//赋值调用
	int result = sum(a,b) ;
	System.out.println("结果是:"+result);
	
	
}

//定义方法
//public static int sum(a,b){  //编译报错,必须携带数据类型!
public static int sum(int a,int b){
			return a +b ;
}

}

1.3 有明确返回值的方法调用
赋值调用,(推荐方式,上述案例就是赋值调用)
方法定义注意事项:
1)方法不调用不执行
2)方法与方法是平级关系,不能嵌套定义
3)方法定义的时候参数之间用逗号隔开
4)方法调用的时候不用在传递数据类型
5)如果方法有明确的返回值,一定要有return带回一个值
明确返回值的方法练习:

  1. 键盘录入两个数据,返回两个数中的较大值
    import java.util.Scanner ;
    class WayTest{
    public static void main(String[] args){
    Scanner sc = new Scanner(System.in) ;
    System.out.println(“请输入第一个数据:”) ;
    int firstNum = sc.nextInt() ;
    System.out.println(“请输入第二个数据”) ;
    int secondNum = sc.nextInt() ;
    int c = max(firstNum,secondNum) ;
    System.out.println(“两个数中最大值为”+c) ;
    }
    public static int max(int a, int b) {
    if (a>b) {
    return a ;
    } else {
    return b ;
    }

    }
    }

  2. 键盘录入两个数据,比较两个数是否相等
    import java.util.Scanner ;//导包
    class WayTest5{
    public static void main(String[] args){
    Scanner sc = new Scanner(System.in) ;//键盘录入数据
    System.out.println(“请输入第一个数据:”) ;
    int firstNum = sc.nextInt() ;//接受数据
    System.out.println(“请输入第二个数据:”) ;
    int secondNum = sc.nextInt() ;//接受数据
    boolean flag = some(firstNum,secondNum) ;//新函数赋值调用
    System.out.println(“两个值是否相等:”+flag) ;

    }
    //新函数
    public static boolean some(int a, int b){
    return (a==b) ;
    }
    }

  3. 键盘录入三个数据,返回三个数中的最大值
    import java.util.Scanner ;
    class FunctionTest3{
    public static void main(String[] args){

     //创建键盘录入对象
     Scanner sc = new Scanner(System.in) ;
     
     //接收数据
     System.out.println("请输入第一个数据:") ;
     int a = sc.nextInt() ;
     
     //接收数据
     System.out.println("请输入第二个数据:") ;
     int b = sc.nextInt() ;
     
     //接收数据
     System.out.println("请输入第三个数据:") ;
     int c = sc.nextInt() ;
     
     //调用
     int result = getMax(a,b,c) ;
     System.out.println("三个数据中的最大值是:"+result);	
    

    }
    public static int getMax(int a,int b,int c){
    if(a>b){
    if(a>c){
    return a ;
    }else{
    return c ;
    }
    }else{
    if(b>c){
    return b ;
    }else{
    return c ;
    }
    }
    }
    }
    1.4 没有明确返回值的方法调用
    没有明确返回值的函数调用
    其实就是void类型方法的调用
    只能单独调用
    1:先通过在控制台输出一个4行5列的星形矩形来引入void类型的方法,然后讲解其调用
    返回值为void类型的方法练习:

  4. 键盘录入行数和列数,输出对应的星形
    import java.util.Scanner ;
    class WayTest2{
    public static void main(String[] args){
    Scanner sc = new Scanner(System.in) ;
    System.out.println(“请输入行数:”) ;
    int m = sc.nextInt() ;
    System.out.println(“请输入列数:”) ;
    int n = sc.nextInt() ;
    xingXing(m,n) ;
    }
    public static void xingXing(int m,int n){
    for(int x = 0 ; x < m ; x++){
    for (int y = 0 ; y < n ; y++ ){
    System.out.print("*") ;
    }
    System.out.println() ;
    }
    }
    }

  5. 键盘录入一个数据n(1<=n<=9),输出对应的nn乘法表
    import java.util.Scanner ;//导包
    class WayTest3{
    public static void main(String[] args){
    Scanner sc = new Scanner(System.in) ;//键盘录入对象
    System.out.println(“请输入一个数据:”) ;
    int m = sc.nextInt() ;//接收数据
    xingXing(m) ;//方法调用
    }
    public static void xingXing(int m){//新方法
    for(int x = 1 ; x <= m ; x++){
    for (int y = 1 ; y <= x ; y++ ){
    System.out.print(x+""+y+"="+(xy)+"\t" ) ;
    }
    System.out.println() ;
    }
    }
    }

2.1 方法重载:
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
方法重载的特点
返回值类型无关,只看方法名和参数列表

第三种 数组概述
3.1 数组概述
7. 需求:现在需要统计某公司员工的工资情况,例如计算平均工资、找到最高工资等。假设该公司有
80名员工,用前面所学的知识,程序首先需要声明80个变量来分别记住每位员工的工资,然后在
进行操作,这样做会显得很麻烦。为了解决这种问题,Java就提供了数组供我们使用。
8. 那么数组到底是什么呢?有什么特点呢?通过上面的分析:我们可以得到如下两句话:
数组是存储多个变量(元素)的东西(容器)
这多个变量的数据类型要一致
数组:
数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
数组既可以存储基本数据类型,也可以存储引用数据类型。
数组定义的格式
格式1:数据类型[] 数组名;
格式2:数据类型 数组名[];
注意:这两种定义做完了,数组中是没有元素值的。
对数组的元素进行初始化:
数组的初始化方式
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
3.3 动态初始化
初始化时只指定数组长度,由系统为数组分配初始值
格式:数据类型[] 数组名 = new 数据类型[数组长度];
数组长度其实就是数组中元素的个数。
int[] arr=new int [3]
解释:定义了一个int类型的arr数组,这个数组中可以存放3个int类型的值。
3:通过数值名输出地址,数组元素输出0来引出Java中数据的内存分配
3.4 Java中的内存分配
Java 程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对空间进行了不同区域的划分,
因为每一片区域都有特定的处理数据方式和内存管理方式。
栈 存储局部变量
堆 存储new出来的东西
方法区(面向对象部分讲)
本地方法区(和系统相关)
寄存器(给CPU使用)
1:局部变量
a:方法定义中或者方法声明上的所有变量
b:使用完毕,立即消失
2:new出来的东西,实体,对象。
new int[3];
a:每一个实体都有首地址值
b:每一个实体内的数据都有默认值
byte,short,int,long 0
float,double 0.0
char ‘\u0000’
boolean false
引用类型:null
c:使用完毕后,会被垃圾回收器空闲的时候回收。
3.5 静态初始化
初始化时指定每个数组元素的初始值,由系统决定数组长度。
格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
举例:
int[] arr = new int[]{1,2,3};
解释:定义了一个int类型的数组,这个数组中可以存放3个int类型的值,并且值分别是1,2,3。
其实这种写法还有一个简化的写法
int[] arr = {1,2,3};
3.6 数组中常见的两个小问题
数组索引越界
ArrayIndexOutOfBoundsException
访问到了数组中的不存在的索引时发生。
空指针异常
NullPointerException
数组引用没有指向实体,却在操作实体中的元素时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值