静态的应用
来源:互联网 发布:淘宝自己退货率怎么看 编辑:程序博客网 时间:2024/05/21 02:34
作者:叁念
1.什么时候使用静态?
要从两方面下手:
因为静态修饰的内容有成员变量和成语函数
1.什么时候定义静态变量(类变量)呢?
当对象中出现共享数据时,该数据被静态所修饰
对象中的特有数据要定义成非静态存在于堆内存中
2.什么时候定义静态函数呢?
当功能内部没有访问到非静态数据(对象的特有数据)
那么功能可以定义成静态的
演示代码:
class Person{ String name; public static void show()// 没有使用到对象特有数据所以用static { System.out.println("哈哈"); }}public class Demo { public static void main(String[] args) { // Person p = new Person(); // p.show(); Person.show(); }}
2.静态的应用
- 每一个应用程序都有共性的功能
- 可以将这些功能进行抽取,独立封装,以便复用
首先来个工具类
class ArraryTool{ 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]; } 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]; } 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= 0; x<arr.length-1; x++){ for(int y=0; y<arr.length-x-1; y++){ if(arr[x]>arr[y+1]) { swap(arr,y,y+1); } } } } public void swap(int [] arr,int a,int b) { int temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; } public void printArray(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]+"]"); } }}
再来个Demo1
public class Demo1 { public static void main(String[] args) { int [] arr = {3,1,87,32,8}; ArraryTool tool = new ArraryTool(); int max = tool.getMax(arr); System.out.println("max= "+max); int min = tool.getMin(arr); System.out.println("min= "+min); tool.printArray(arr); tool.selectSort(arr); tool.printArray(arr); int [] arr1 = {}; ArraryTool tool1 = new ArraryTool(); }}
虽然可以通过建立ArraryTool的对象使用这些工具方法,对数组进行操作。
发现了问题:
1.对象是用于封装数据的,可是ArraryTool对象并未封装特有数据
2.操作数组的每一个方法都没有用到ArraryTool对象中的特有数据
这时就考虑,让程序更严谨,是不需要对象的
可以将ArraryTool中的方法都定义成静态的。直接通过类名调用即可
public class Demo1 { public static void main(String[] args) { int [] arr = {3,1,87,32,8}; int max = ArraryTool.getMax(arr); System.out.println("max= "+max); }}
将方法都静态后,可以方便于使用,但是该类还是可以被其他程序建立对象的
为了更为严谨,强制让该类不能建立对象
可以通过将构造函数私有化完成
private ArraryTool(){}
阅读全文
0 0
- 静态字段的应用
- 静态的应用
- 静态的应用
- 静态的应用
- Java静态的应用
- 静态成员的应用
- 静态变量的应用
- 静态的应用
- 静态的应用
- 静态链表的应用
- VC静态库的应用
- iphone静态库的应用
- 静态局部变量的应用
- 静态的应用---工具类
- 静态数据成员的应用
- 静态链表的应用
- 类的静态成员应用
- 静态嵌套类的应用
- TryFinally
- Js New一个函数和直接调用的区别
- 【Java并发编程】Thread.sleep,暂停程序执行
- LPC 简单应用长消息
- 文件用两次异或加密
- 静态的应用
- 在控制台录入文件的路径,将文件拷贝到当前项目下
- 计算器的逻辑
- 将键盘录入的数据拷贝到当前项目下的text.txt文件中,键盘录入数据当遇到quit时就退出
- leetcode -- 445. Add Two Numbers II 【栈 + 正整数相加】
- 一定要认真的读完,码
- 字符流的输入输出
- 字符复制
- 1. Two Sum