Java 25天基础-DAY 06-面向对象-静态应用---工具类

简介: Java 25天基础-DAY 06-面向对象-静态应用---工具类

静态应用---工具类
虽然可以同拖建立ArryTool的对象使用这些工具方法,对数组进行操作,发现了问题。
1;对象是用于封装数据的,可是ArrayTool对象并未封装特有数据。
2;操作数组的没一个方法都没有用到ArryTool对象的特有数据。

这是就考虑,让程序更严谨,是不需要创建对象的。
可以将ArryTool中的方法都定义称static的,直接通过类名调用即可。

例:
class demo
{

public static void main(String[] args) 
{
    int [] arr = {3,4,1,8};
    
    /*
    ArryTool tool = new ArryTool();
    int max = tool.getMax (arr);
    System.out.println(max);

    ArryTool tool1 = new ArryTool();
    int min = tool1.getMin (arr);
    System.out.println(min);
    tool.printArry(arr);
    
    tool.bubbleSort(arr);
    tool.printArry(arr);
    
    tool.selectsort(arr);
    tool.printArry(arr);
*/
    int max = ArryTool.getMax(arr);
    System.out.println(max);
}

}

/*
静态的应用
每一个应用程序中都有共性的功能。
可以将这些功能进行抽取,独立封装。
以便复用

虽然可以同拖建立ArryTool的对象使用这些工具方法,对数组进行操作,发现了问题。
1;对象是用于封装数据的,可是ArrayTool对象并未封装特有数据。
2;操作数组的没一个方法都没有用到ArryTool对象的特有数据。

这是就考虑,让程序更严谨,是不需要创建对象的。
可以将ArryTool中的方法都定义称static的,直接通过类名调用即可。

将方法都静态后,可以方便与使用,但是因为默认有一个构造函数,该类还是可以被其他程序
建立对象的。
可以将默认构造函数私有化,使别的程序无法创建对象。

如果类被public修饰,name默认的构造函数也带有public修饰符。
如果类没有被public修饰,那么默认的构造函数也没有public修饰。
默认构造函数的权限是随着类的变化而变化的。
默认的构造函数时不显示的,看不到的那个函数。如果写了一个空参数的构造函数则这个空参数的构造函数是自定义构造函数
*/

/**
文档说明书
这是一个对数组进行操作的工具类,该类中提供了,获取最值,排序功能
@author 张三丰
@version v1.0

*/
public class ArryTool
{

/**

空参数构造函数
*/

private ArryTool (){}

/**
获取一个整型数组中的最大值,
@param arr 接受一个int 类型的数组。
@return 返回一个该数组中最大值。
*/

public static int getMax(int [] arr)
{
    int max =0;
    for (int x=1;x<arr.length ;x++ )
    {
        if (arr[x]>arr[max])
          max= x;
    
    }
    return arr[max];
}

/**
获取一个整型数组中的最小值,
@param arr 接受一个int 类型的数组。
@return 返回一个该数组中最小值。
*/

public static int getMin (int [] arr)
{   
    int min =0;
    for (int x=1;x<arr.length ;x++ )
    {
        if (arr[x]<arr[min])
          min= x;
    
    }
    return arr[min];
}

/**
给一个int类型数组排序
@param arr 接受一个int 类型的数组。

*/

public static void selectsort (int [] arr)
{
    for (int x=0;x<arr.length-1 ;x++ )
    {
        for (int y=x+1;y<arr.length ; y++ )
        {
            if (arr[x]>arr[y])
            {
                swap (arr,x,y);
            }
        }
    }
}

/**
给一个int类型数组排序(冒泡排序)
@param arr 接受一个int 类型的数组。

*/

public static void bubbleSort (int [] arr)
{
    for (int x= 0;x<arr.length-1 ;x++ )
    {
        for (int y=0;y<arr.length-x-1 ;y++ )
        {
            if (arr[y]>arr[y+1])
            {
                swap (arr,y,y+1);
            }
        }
    }
}

/**
给一个int类型数组中的元素进行位置置换
@param arr 接受一个int 类型的数组。
@param a 要置换的位置
@param b 要置换的位置
*/

private static void swap (int [] arr,int a, int b)
{//私有化,因为该函数只在该类内使用。不需要暴露在外面。
    int temp = arr[a];
    arr[a] = arr[b];
    arr[b] = temp;
}

/**
用于打印数组中的元素,打印形式是:[elemet1.elemet2,..........]
*/

public  static void printArry (int [] arr)
{

    System.out.print ("[");
    for (int x=0;x<arr.length ;x++ )
    {
        if (x!=arr.length-1)
        {
            System.out.print(arr[x]+",");
        
        }
        else
            System.out.println(arr[x]+"]");
    }
}

}
clipboard

目录
相关文章
|
1月前
|
人工智能 安全 Java
Java和Python在企业中的应用情况
Java和Python在企业中的应用情况
53 7
|
3天前
|
安全 算法 Java
Java CAS原理和应用场景大揭秘:你掌握了吗?
CAS(Compare and Swap)是一种乐观锁机制,通过硬件指令实现原子操作,确保多线程环境下对共享变量的安全访问。它避免了传统互斥锁的性能开销和线程阻塞问题。CAS操作包含三个步骤:获取期望值、比较当前值与期望值是否相等、若相等则更新为新值。CAS广泛应用于高并发场景,如数据库事务、分布式锁、无锁数据结构等,但需注意ABA问题。Java中常用`java.util.concurrent.atomic`包下的类支持CAS操作。
23 2
|
26天前
|
缓存 Java 开发者
Java多线程并发编程:同步机制与实践应用
本文深入探讨Java多线程中的同步机制,分析了多线程并发带来的数据不一致等问题,详细介绍了`synchronized`关键字、`ReentrantLock`显式锁及`ReentrantReadWriteLock`读写锁的应用,结合代码示例展示了如何有效解决竞态条件,提升程序性能与稳定性。
112 6
|
22天前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
21 1
|
25天前
|
监控 Java 数据库连接
Java线程管理:守护线程与用户线程的区分与应用
在Java多线程编程中,线程可以分为守护线程(Daemon Thread)和用户线程(User Thread)。这两种线程在行为和用途上有着明显的区别,了解它们的差异对于编写高效、稳定的并发程序至关重要。
29 2
|
1月前
|
安全 Java 开发者
Java 多线程并发控制:深入理解与实战应用
《Java多线程并发控制:深入理解与实战应用》一书详细解析了Java多线程编程的核心概念、并发控制技术及其实战技巧,适合Java开发者深入学习和实践参考。
58 6
|
1月前
|
关系型数据库 MySQL Java
MySQL索引优化与Java应用实践
【11月更文挑战第25天】在大数据量和高并发的业务场景下,MySQL数据库的索引优化是提升查询性能的关键。本文将深入探讨MySQL索引的多种类型、优化策略及其在Java应用中的实践,通过历史背景、业务场景、底层原理的介绍,并结合Java示例代码,帮助Java架构师更好地理解并应用这些技术。
34 2
|
1月前
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####
|
1月前
|
Java 测试技术 API
Java 反射机制:深入解析与应用实践
《Java反射机制:深入解析与应用实践》全面解析Java反射API,探讨其内部运作原理、应用场景及最佳实践,帮助开发者掌握利用反射增强程序灵活性与可扩展性的技巧。
101 4
|
1月前
|
Java BI API
Java Excel报表生成:JXLS库的高效应用
在Java应用开发中,经常需要将数据导出到Excel文件中,以便于数据的分析和共享。JXLS库是一个强大的工具,它基于Apache POI,提供了一种简单而高效的方式来生成Excel报表。本文将详细介绍JXLS库的使用方法和技巧,帮助你快速掌握Java中的Excel导出功能。
71 6