静态的应用

静态的应用。

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

1.先写一个工具类Java文件

class ArrTool
{
	public int Getmax(int[] arr)
	{
		int max=0;
		for(int x=0;x<arr.length;x++)
		{
			if(arr[x]>arr[max])
				max=x;
		}
		return arr[max];
	}
	public int Getmin(int[] arr)
	{
		int min=0;
		for(int x=0;x<arr.length;x++)
		{
			if(arr[x]<arr[min])
				min=x;
		}
		return arr[min];
	}
	public 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);
			}
		}
	}
	public void BubbleSort(int[] arr)
	{
		for(int x=1;x<arr.length-1;x++)
		{
			for(int y=0;y<arr.length-x;y++)
			{
				if(arr[y]>arr[y+1])
					Swap(arr,y,y+1);
			}
		}
	}
	public void Swap(int[] arr,int a,int b)
	{
		int t=arr[a];
		arr[a]=arr[b];
		arr[b]=t;
	}
}

2.再写一个调用文件

class ArrToolDemo
{
	public static void main(String[] args)
	{
		int[] arr={3,41,56,13,76,22};
		ArrTool tool=new ArrTool();
		int max=tool.Getmax(arr);
		System.out.println("max="+max);
	}
}

此时文件夹有两个文件

然后编译运行

第一种方法:先编译工具类文件,在编译调用文件并运行;

第二种方法:直接编译调用文件,因为当编译文件时存在其他类时,会在指定目录下(未指定则在当前目录下)寻找该类的运行文件(arrtool.class),如果有则运行,如果没有则虚拟机寻找其Java文件并编译;(所以使用工具时只要有工具类的运行文件就可以(arrtool.class),即使没有Java文件也行);

虽然可以通过建立ArrTool的对象使用这些工具方法,对数组进行操作。

发现问题:

1,对象时用于封装数据的,可是ArrTool对象并未封装特有数据。

2,操作数组的每一个方法都没有用到ArrTool对象中的特有数据。

这时就考虑,让程序更严谨,是不需要对象的。

可以将ArrTool中的方法都定义成static的,直接通过类名调用即可。

class ArrTool
{
	public static int Getmax(int[] arr)
	{
		int max=0;
		for(int x=0;x<arr.length;x++)
		{
			if(arr[x]>arr[max])
				max=x;
		}
		return arr[max];
	}
	public static int Getmin(int[] arr)
	{
		int min=0;
		for(int x=0;x<arr.length;x++)
		{
			if(arr[x]<arr[min])
				min=x;
		}
		return arr[min];
	}
	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);
			}
		}
	}
。。。。。。。。。。。。

调用文件就不需要创建对象

class ArrToolDemo
{
	public static void main(String[] args)
	{
		int[] arr={3,41,56,13,76,22};
		//ArrTool tool=new ArrTool();
		int max=ArrTool.Getmax(arr);//直接使用类变量调用
		System.out.println("max="+max);
	}
}

将方法都静态后,可以方便使用但是该类还是可以被其他程序建对象。

为了更为严谨,强制让该类不能创建对象,可以通过将构造函数私有化完成。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-05 10:54:22

静态的应用的相关文章

ubuntu配置静态路由及重启生效

ubuntu配置静态路由及重启生效 第一种方法:使用route命令(添加临时路由) 添加到主机的路由 # route add -host 192.168.1.123 dev eth0 # route add -host 192.168.1.123 gw 192.168.1.1 添加到网络的路由 # route add -net 192.168.1.123 netmask 255.255.255.0 eth0 # route add -net 192.168.1.123 netmask 255.2

linux系统开机静态分配ip地址

在/etc/sysconfig/network-scripts/ifcfg-ens33文件中 添加: IPADDR=192.168.1.1(设置静态地址) 修改: BOOTTPROTO=ghcp(动态分配地址) 为: BOOTTPROTO=static 修改: ONBOOT=no(设置开机启动) 为: ONBOOT=yes 保存并source

静态网页开发技术-HTML

今天我重新复习了一下静态网页开发技术,概括如下. 一 .HTML文档结构与基本语法 :放置了标签的文本文档,可供浏览器解释执行的网页文件 1.注释标记 2.标记 3.属性 二.基本标记与使用 1.网页基本结构与标记 2.文本与段落标记 3.列表标签 4.超链接标签 5.图片标记 6.定时刷新或跳转 7.表格 三 HTML表单标签与表单设计 1.<FORM>标记及其属性 2  <INPUT>标记及其属性 3 <下拉列表框<SELECT>,<OPTION>

静态网页框架设计首次体验(文章改)

根据教材与上网成功解决了Tomcat与Myeclipse的安装,同时熟悉了Java web创建项目到部署运行整个过程.今天起正式开始学习有关Java web的编程部分.Java web静态网页(HTML网页)的标记含义.基本语法的介绍到框架设计基本模板与案例,今天的学习的内容,让网页编程有了一个初步的框架.结合自身所在协会的情况,计划制作一个关于协会的网页,已有初步想法,望通过学习不断完善和修改协会网站.根据今天所学,并参考书本30页框架设计案例对网页进行初步搭建. 具体代码如下 TW.jsp:

centos配置静态IP

静态IP设置: 1.涉及文件文件: ①/etc/sysconfig/network-script/ifcfg-ens33 ②/etc/resolv.conf 2.修改: //ifcfg-ens33 BOOTPROTO=static IPADDR=192.168.153.120 PREFIX=24 GATEWAY=192.168.153.2 DNS=192.168.153.2 ONBOOT=yes //resolv.conf nameserver=192.168.153.2 3.重启网卡 serv

静态修饰符static,类中的常量定义修饰符

static可以用来区分成员变量.方法是属于类本身还是属于类实例化后的对象.有static修饰的成员属于类本身,没有static修饰的成员属于类的实例. 静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失static是一个修饰符,用于修饰成员(成员变量和成员函数)静态成员随着类的加载而加载.静态成员优先于对象存在.静态成员被所有对象所共享静态成员多了一个中调用方式,可以被类名直接调用.静态的优缺点优点: 静态成员多了一种调用方式.可以直接被类名调用 格式 :类名.静态成员.也

简单的静态分配器(C++

静态分配器,简单来说就是使用户能从静态内存区请求内存空间而非使用堆或者栈,和我们平时嫌堆栈太小或者从堆动态请求内存太慢而开了个大数组,然后使用这个数组的内存空间本质来讲没有什么区别,写这个代码是为了能更方便,更灵活,(更高效?)地来使用静态内存区. 以下是代码 https://github.com/Dadio44/Test/blob/master/Many_Test/Many_Test/StaticAllocatorBase.cpp https://github.com/Dadio44/Test

java线程安全问题之静态变量、实例变量、局部变量

Java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同<java并发编程实践>中所说: 写道 给线程安全下定义比较困难.存在很多种定义,如:"一个类在可以被多个线程安全调用时就是线程安全的". 此处不赘述了,首先给出静态变量.实例变量.局部变量在多线程环境下的线程安全问题结论,然后用示例验证,请大家擦亮眼睛,有错必究,否则误人子弟! 静态变量:线程非安全. 静态变量即类变量,位于方法区,为所有对象共享,共享一份内存,一旦静态

PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化)/约束类型/魔术方法小结

  前  言  OOP  学习了好久的PHP,今天来总结一下PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化). 1  PHP中的抽象类与抽象方法 1.什么是抽象方法?              没有方法体 {} 的方法,必须使用abstract 关键字修饰.这样的方,我们叫做抽象方法.                    abstract function say(); //    抽象方法 2.什么是抽象类?        

Windows 上静态编译 Libevent 2.0.10 并实现一个简单 HTTP 服务器(无数截图)

[文章作者:张宴 本文版本:v1.0 最后修改:2011.03.30 转载请注明原文链接:http://blog.s135.com/libevent_windows/] 本文介绍了如何在 Windows 操作系统中,利用微软 Visual Studio 2005 编译生成 Libevent 2.0.10 静态链接库,并利用 Libevent 静态链接库,实现一个简单的 HTTP Web服务器程序:httpd.exe. 假设 Visual Studio 2005 的安装路径为“D:\Program