首页 > 其他分享 >工具类

工具类

时间:2024-09-07 18:25:09浏览次数:11  
标签:name int gender age 工具 public String

工具类的类名要见名知意, 比如要写一个类专门进行数学计算, 那么这个类的类名可以取为 Math, 如果要写一个类专门操作数组, 那么这个类的类名可以取为 ArrUtil.

不要创建工具类的对象,因此需要私有化工具类的构造方法。工具类不是用来创建一类事物的, 创建它的对象没有任何意义. 例如对于 Javabean 类 Student, 描述了学生, 创建这个类的对象即学生是有实际意义的, 创建一个 Student 类的对象就表示一个学生.

工具类的方法都定义为静态的,方便调用。例如:

public class ArrUtil {
    private ArrUtil(){}

    public static int getMax(...){...} // 求最大值
    public static int getMin(...){...} // 求最小值
    public static int getSum(...){...} // 求和
    public static int getAvg(...){...} // 求平均值
}
练习:
定义数组工具类
需求:在实际开发中,经常会遇到一些数组使用的工具类。
请按照如下要求编写一个数组的工具类:ArrayUtil
提供一个工具类方法 printArr,用于返回整数数组的内容。
返回的字符串格式如:[10, 20, 50, 34, 100](只考虑整数数组,且只考虑一维数组)
提供这样一个工具方法 getAerage,用于返回平均分。(只考虑浮点型数组,且只考虑一维数组)
定义一个测试类 TestDemo,调用该工具类的工具方法,并返回结果。

工具类:

public class ArrayUtil {
    // 私有化构造方法,不让外界创建其对象
    private ArrayUtil() {
    }

    // 其他方法定义为静态的,方便调用

    // 拼接字符串并返回,只考虑整数数组,只考虑一维数组
    public static String printArr(int[] arr) {
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length - 1) {
                sb.append(arr[i] + "]");
            } else {
                sb.append(arr[i]).append(", ");
            }
        }
        return sb.toString();
    }

    // 返回平均值,只考虑浮点型数组,只考虑一维数组
    public static double getAverage(double[] arr) {
        double sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        double average = sum / arr.length;
        return average;
    }
}

测试类:

public class TestDemo {
    public static void main(String[] args) {
        // 测试工具类中的两个方法是否正确
        int[] arr1 = { 1, 2, 3, 4, 5 };

        String str = ArrayUtil.printArr(arr1);
        System.out.println(str);

        double[] arr2 = { 1.1, 2.2, 3.3, 4.4, 5.5 };
        double average = ArrayUtil.getAverage(arr2);
        System.out.println(average);
    }
}

执行结果:

[1, 2, 3, 4, 5]
3.3
练习:
定义学生工具类
需求:定义一个集合,用于存储 3 个学生对象。
学生类的属性为:name、age、gender。
定义一个工具类,用于获取集合中最大学生的年龄。

Javabean 类:

public class Student {
    private String name;
    private int age;
    private String gender;

    public Student() {
    }

    public Student(String name, int age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    /**
     * 获取
     * @return gender
     */
    public String getGender() {
        return gender;
    }

    /**
     * 设置
     * @param gender
     */
    public void setGender(String gender) {
        this.gender = gender;
    }

    public String toString() {
        return "Student{name = " + name + ", age = " + age + ", gender = " + gender + "}";
    }
}

工具类:

import java.util.ArrayList;

public class StudentUtil {
    // 私有化构造方法
    private StudentUtil() {
    }

    // 静态方法
    public static int getMaxAge(ArrayList<Student> list) {
        int max = list.get(0).getAge();
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            int currentAge = stu.getAge();
            max = Math.max(max, currentAge);
        }
        return max;
    }
}

测试类:

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        // 创建一个集合用来存储学生对象
        ArrayList<Student> list = new ArrayList<>();

        // 创建三个学生对象
        Student stu1 = new Student("zhangsan", 23, "男");
        Student stu2 = new Student("lisi", 24, "女");
        Student stu3 = new Student("wangwu", 25, "男");

        // 把学生对象添加到集合中
        list.add(stu1);
        list.add(stu2);
        list.add(stu3);

        // 调用工具类的方法
        int maxAge = StudentUtil.getMaxAge(list);

        System.out.println(maxAge);
    }
}

执行结果:

25

标签:name,int,gender,age,工具,public,String
From: https://www.cnblogs.com/Chengkai730/p/18401995

相关文章

  • 828华为云征文 | 华为云Flexusx实例,高效部署Servas书签管理工具的优选平台
    需要了解本文章主要讲述在华为云FlexusX实例上使用docker快速部署Servas,一款功能强大的自托管书签管理工具,专为追求高效与个性化的用户设计。选择合适的云服务器:本文采用的是华为云服务器FlexusX实例(推荐使用)连接方式:本文通过本地shell方式,通过弹性IP远程连接......
  • 测试你们认为最好的AI工具,是不是好用得自己试试!
    大家好,我是凡人,在OpenAI春季发布会后,GPT-4o一时风光无量,一个同事不信邪,非要用 GPT-4o版本对OpenAI官网上的例子尝试生成,本来还是嘲笑他的心态,但他还真的发现了点有意思的事情。今天决定对官网上部分例子进行简单测试,人家说再好的东西,也要亲自验证才安心。下面我们......
  • 【工具使用】【OpenFeign 】OpenFeign 下的重试机制
    1 前言服务间的调用,大家可能会用到OpenFeign方式。那么当被调用服务可能会因为某种情况导致调用失败(这个失败可能好似下游服务重启了或者超时断开等)的情况下,我们想重试的情况下该怎么做呢?本节我们就来看看。2 环境准备首先准备一下,我这里有两个服务,一个是demo一个是vi......
  • Rsync: 高效的文件同步工具
    rsync是一个非常流行的命令行工具,用于高效地同步文件和目录。它广泛用于Linux和UNIX系统,但也可以在Windows上通过Cygwin或WSL(WindowsSubsystemforLinux)使用。本文将介绍rsync的基本概念、特点以及如何使用它来同步文件。什么是Rsync?rsync(remotesynchroniza......
  • 数仓工具之:Flume
    Flume是一个日志数据抽取工具Agent:是Flume中的基本单位,一个Flume配置文件,可以有多个Agent.每一个Agent中有三个组件组成,缺一不可:1、Source来源,数据过来的地方2、channel通道传递数据用的通道,一般比较的长,一个Channel中可以存储多个数据3、Sink数据下沉的地方......
  • Node.js版本管理工具之NVM
    目录一、NVM介绍二、NVM的下载安装1、NVM下载2、卸载旧版Node.js3、安装三、NVM配置及使用1、设置nvm镜像源2、安装Node.js3、卸载Node.js4、使用或切换Node.js版本5、设置全局安装路径和缓存路径四、常用命令 一、NVM介绍在工作中,不同的项目可能需要不同NodeJS版本,所以维护多......
  • 探索最佳 Shell 工具:全面测评 Bash、Zsh、Fish、Tcsh 和 Ksh
    感谢浪浪云支持发布浪浪云活动链接:https://langlangy.cn/?i8afa52文章目录1.简介2.测评工具3.测评标准4.Bash测评4.1易用性4.2功能特性4.3性能4.4可定制性4.5社区和支持5.Zsh测评5.1易用性5.2功能特性5.3性能5.4可定制性5.5社区和支持6.Fish测......
  • NAT技术介绍+缺陷(内网穿透+工具),NAPT(介绍,替换过程,原理,NAT转换表)
    目录NAT技术介绍NAT转换表引入介绍NAPT技术介绍 NAPT替换过程NAPT原理注意点NAT缺陷无法直接访问其他内网主机内网穿透工具其他 NAT技术介绍NAT是一种网络技术,它允许在一个公共IP地址和多个私有IP地址(入口路由器的wan口地址和私网内的私有ip)之......
  • MySQL 性能压测工具-sysbench使用详解
    sysbench是一个开源的、基于LuaJIT(LuaJIT是Lua的即时编译器,可将代码直接翻译成机器码,性能比原生lua要高) 的、可自定义脚本的多线程基准测试工具,也是目前用得最多的MySQL性能压测工具。基于sysbench,我们可以对比MySQL在不同版本、不同硬件配置、不同参数(操作系统和数据......
  • 我司使用了两年的高效日志打印工具,非常牛逼!
    为了更方便地排查问题,电商交易系统的日志中需要记录用户id和订单id等字段。然而,每次打印日志都需要手动设置用户id,这一过程非常繁琐,需要想个办法优化下。log.warn("user:{},orderId:{}订单提单成功",userId,orderId);log.warn("user:{},orderId:{}订单支付成功",userId,orde......