zoukankan      html  css  js  c++  java
  • Java零基础系列教程07Java有参方法和包

    配套视频教程

    本文B站配套视频教程

    为什么要用带参数的方法

    image.png
    定义带参数的方法

    参数列表:
    (数据类型 参数1,数据类型 参数2…)

    public class ZhazhiJi {
        public String zhazhi ( String fruit ) {
              String juice = fruit + "汁";
              return juice; 
         } 
    }
    
    

    调用带参数的方法

    /*调用zhazhi方法*/
    ZhazhiJi myZhazhiji = new ZhazhiJi();
    String myFruit = "苹果";
    String myJuice = myZhazhi.zhazhi(myFruit);
    System.out.println(myJuice);
    

    调用方法,传递的参数要与参数列表一一对应

    image.png

    定义带参数的方法

    <访问修饰符> 返回类型 <方法名>(<形式参数列表>) {
    //方法的主体
    }
    调用带参数的方法
    对象名.方法名(参数1, 参数2,……,参数n)

    public class StudentsBiz {
        String[] names = new String[30];
        int index = 0;//记录数组中学员的个数,也就是下一个需要插入数组的下标位置
        public void addName(String name)
        {
            names[index] = name;
            index++;
        }
        public void showNames()
        {
            for(int i = 0; i < index; i++)
            {
                System.out.println(names[i]);
            }
        }
    }
    
    
    public class Test {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            StudentsBiz studentsBiz = new StudentsBiz();
            for(int i = 0; i < 3; i++)
            {
                System.out.println("请输入姓名");
                String name = scanner.next();
                studentsBiz.addName(name);
            }
            studentsBiz.showNames();
        }
    }
    
    

    带多个参数的方法

    在保存了多个学生姓名的数组中,指定查找区间,查找某个学生姓名并显示是否查找成功

    设计方法,通过传递三个参数(开始位置、结束位置、查找的姓名)来实现

    public class StudentsBiz {
        String[] names = {"zhangsan","lisi","wangwu","liudehua"};
    
        public boolean searchName(String name,int start, int end)
        {
            if(end > names.length)
            {
                end = names.length;
            }
            if(start < 0)
            {
                start = 0;
            }
    
            for(int i = start; i < end; i++)
            {
                if(names[i].equals(name))
                {
                    return true;
                }
            }
    
            return false;
        }
    }
    

    调用方法

    public class Main {
    
        public static void main(String[] args) {
    	// write your code here
    //         zhangsan,lisi,wangwu,zhaobensan,liudehua
            StudentsBiz studentsBiz = new StudentsBiz();
            boolean b = studentsBiz.searchName("liudehua2",-5,8);
            System.out.println(b);
        }
    }
    

    数组作为参数的方法

    有5位学员参加了Java知识竞赛的决赛,输出决赛的平均成绩和最高成绩
    image.png
    将5位学员的决赛成绩保存在数组中
    设计求平均成绩、最高成绩的方法,并把数组作为参数

    public class ScoreCalc {
    
        public int getTotalScore(int[] scores)
        {
            int totalScore = 0;
            for(int i = 0; i < scores.length; i++)
            {
                totalScore += scores[i];
            }
            return totalScore;
        }
    
        public double getAvgScore(int[] scores)
        {
            int totalScore = getTotalScore(scores);
            return (double) totalScore/scores.length;
        }
    
        public int getMaxScore(int[] scores)
        {
            int max = scores[0];//假设数组的第一个元素是最大
            for(int i = 1; i < scores.length; i++)
            {
                if(max < scores[i])
                {
                    max = scores[i];
                }
            }
    
            return max;
        }
    }
    
    public class Main {
    
        public static void main(String[] args) {
    	// write your code here
            ScoreCalc scoreCalc = new ScoreCalc();
            int[] arrays = {67,76,88,86,99};
            int total = scoreCalc.getTotalScore(arrays);
            System.out.println(total);
            double avg = scoreCalc.getAvgScore(arrays);
            System.out.println(avg);
    
            int max = scoreCalc.getMaxScore(arrays);
            System.out.println(max);
        }
    }
    
    

    对象作为参数的方法

    在实现了增加一个学生姓名的基础上,增加学生的学号、年龄和成绩,并显示这些信息,如何实现?

    image.png
    方式一:设计带四个参数(学号、姓名、年龄、成绩)的方法
    方式二:将学生学号、姓名、年龄、成绩封装在学生对象中,设计方法,以学生对象作为参数

    可以将多个相关的信息封装成对象,作为参数传递,避免方法有太多的参数!

    public class Student {
        int no;//学号
        int age;
        String name;
        int score;
    
        public String toString()
        {
            String info =  "学号" + no + "年龄" + age + "姓名" + name;
            return info;
        }
    }
    
    public class School {
        Student[] students = new Student[30];
        int index = 0;//当前数组中有多少个学生,也就是数组下一个要插入的下标位置
        public void addStudent(Student student)
        {
            students[index] = student;
            index++;
        }
    
        public void showStudents()
        {
            for(int i = 0; i < index; i++)
            {
                System.out.println(students[i]);
            }
        }
    //    public void addStudent(String name, int no,int age, int score,int height)
    //    {
    //
    //    }
    }
    
    public class Main {
    
        public static void main(String[] args) {
    	// write your code here
            School school = new School();
            Student student = new Student();
            student.name = "zhangsan";
            student.no = 10;
            student.age = 23;
            student.score = 90;
            school.addStudent(student);
            school.showStudents();
        }
    }
    

    为什么需要包

    Windows树形文件系统
    文档分门别类,易于查找和管理
    使用目录解决文件同名冲突问题
    image.png

    如何存放两个同名的类而不冲突?
    image.png

    image.png

     //声明包,作为Java源代码第一条语句,
    //用package声明包,以分号结尾
    //com.company.model是包名
    package com.company.model;  
              
    public class School {
        //……
        public String toString() {
           //……
        }
    }
    
    

    包命名规范

    包名由小写字母组成,不能以圆点开头或结尾
    包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名
    package net.javagroup.mypackage;
    包名后续部分依不同机构内部的规范不同而不同

    用intelij创建包和类

    包与目录的关系

    创建好的包和Java源文件是如何存储的?
    创建包cn.company.classandobject ,
    即创建了目录结构:cncompanyclassandobject
    image.png

    如何导入包

    为了使用不在同一包中的类,需要在Java程序中使用import关键字导入这个类

    
    import java.util.*;      //导入java.util包中所有类
    import cn.company.classandobject.School;    //导入指定包中指定类
    
    

    image.png

    本节练习

    模拟银行账户业务

    创建包bank.com,
    编写Account类,添加带参
    方法实现存款和取款业务,
    存款时帐户初始金额为0元,
    取款时如果余额不足给出提示

    image.png

    package com.bank;
    
    /**
     * Created by ttc on 2017/12/26.
     */
    //账户
    public class Account {
        public int money;//账户余额
    
        //存钱
        public void saveMoney(int value)
        {
            money += value;
            System.out.println("存款成功");
        }
    
        //取钱
        public void getMoney(int value)
        {
            if(money < value)
            {
                System.out.println("余额不足");
                return;
            }
            money -= value;
            System.out.println("取款成功");
        }
        //显示当前余额
        public void showMoney()
        {
            System.out.println("当前余额为:" + money);
        }
    }
    
    
    public class Main {
    
        public static void main(String[] args) {
    	// write your code here
    
            Scanner scanner = new Scanner(System.in);
            int command = 0;//命令
            //初始化账户对象
            Account account = new Account();
    
            while (true)
            {
                System.out.println("1 存款 2 取款 0 退出");
                System.out.println("请选择要办理的业务");
                command = scanner.nextInt();
    
                if(command == 1)//存款
                {
                    System.out.println("请输入金额");
                    //获取用户输入的金额
                    int value = scanner.nextInt();
                    account.saveMoney(value);
                    account.showMoney();
                }
                else if(command == 2)
                {
                    System.out.println("请输入金额");
                    //获取用户输入的金额
                    int value = scanner.nextInt();
                    account.getMoney(value);
                    account.showMoney();
    
                }
                else if(command == 0)
                {
                    break;
                }
                else
                {
                    System.out.println("错误的命令");
                }
            }
    
            System.out.println("程序退出");
        }
    }
    
  • 相关阅读:
    使用Python连接redis(redis作MQ使用)_Tister的空间_百度空间
    LTTng 2.0 Downloads | LTTng Project
    How to capture stdout in realtime with Python « SaltyCrane Blog
    python的线程锁机制_dominic_80ChinaUnix博客
    Collective Intelligence实战/阿拉克(Satnam Alag)图书卓越亚马逊 [集体智慧编程]
    查IP
    沃尔玛控股中国1号店
    HeidiSQL MySQL made easy
    groovy学习7groovy sql 雪霁霜飞 博客园
    数据集 (DataSet) groovy
  • 原文地址:https://www.cnblogs.com/songboriceboy/p/13757662.html
Copyright © 2011-2022 走看看