工具类的来由与静态方法

由于代码重用度很高,所以会使用方法来进行封装,便于调取使用。

例子:

class ArrayDemo{
public static void main(String[] args){
//定义数组
int[] arr = {25,99,78,98,87};
//需求:遍历数组
// for(int x=0;x<arr.length;x++){
// if(x==arr.length-1){
// System.out.println(arr[x]);
// }else{
// System.out.print(arr[x]+",");
// }
// }

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

但是,当printArray方法不是静态方法时,调用会出现"错误:无法从静态上下文中引用非静态方法printArray(int[])",解决办法有两个,

第一,在main方法下写:

ArrayDemo ad = new ArrayDemo();

ad.printArray(arr);//main方法下调用自身对象调用,但是比较麻烦,因为先要创建对象

第二个办法就是:

创建一个ArrayTool的类,然后在main方法下进行调用

class ArrayTool {

//把构造方法私有,外界就不能在创建对象了
private ArrayTool(){}

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

在main方法下,直接

//方法改进为静态后,就可以直接通过类名调用
ArrayTool.printArray(arr);//这个比较好,因为只要加载类,就可以进行调用,省去创建对象的操作。

若在同一个文件夹下,ArrayDemo类与ArrayTool类都没有编译,但是ArrayDemo中的main方法调用了ArrayTool类,只需直接编译ArrayDemo类就可以了,因为编译器会自动对调用类,即ArrayTool类进行编译,方便执行,免除编译重复操作。

注意:在该类有静态方法时,是可以不用构造(即 new)就可以对类中方法进行调用,但是也可以利用构造函数进行构造(原因是:一个类不写构造函数,会自动添加一个默认无参的构造函数,所以,外界才能调用构造函数),为了把构造方法封住,不让使用者调用其构造方法,我们可以把构造方法变为显式,加入private权限,只允许本类内部进行访问。

即:private ArrayTool(){}

时间: 2024-10-18 15:53:47

工具类的来由与静态方法的相关文章

集合详解(五):集合嵌套与Collections工具类

一.集合嵌套 1.HashMap嵌套HashMap <span style="font-size:18px;"> /* * HashMap嵌套HashMap * * 传智播客 * jc 基础班 * 陈玉楼 20 * 高跃 22 * jy 就业班 * 李杰 21 * 曹石磊 23 * * 先存储元素,然后遍历元素 */ public void test3(){ // 创建集合对象 HashMap<String, HashMap<String, Integer>

黑马程序员-集合工具类和1.5新特性

集合框架的工具类:collecttions Collections 的方法全是静态的 List没有排序功能,所以java定义了Collections工具类. 比较器无法传给list,只能传给Set.但是集合工具类有此方法 1.排序: comparable:    sort(List<T> list) 根据元素的自然顺序 对指定列表按升序进行排序. comparator:    sort(List<T> list, Comparator<? super T> c) 根据比

java 18 - 10 Collections工具类的常用方法

Collections:是针对集合进行操作的工具类,都是静态方法. 要知道的方法 A:public static <T> void sort(List<T> list):排序 默认情况下是自然顺序. B:public static <T> int binarySearch(List<?> list,T key):二分查找 C:public static <T> T max(Collection<?> coll):最大值 D:publi

关于工具类静态方法调用@Autowired注入的service类问题

@Component //此处注解不能省却(0) 1 public class NtClient { 2 /** 3 * 日志 4 */ 5 private static String clazzName = NtClient.class.getName(); 6 /** 7 * 此处是要使用的service需要spring注入(1) 8 */ 9 @Autowired 10 private NotifyTimeService notifyTimeService; 11 private stat

Arrays工具类

Arraysd的静态方法能够方便的对数组进行操作,每个方法也加了注释 : 程序: import java.util.*;public class Array{        public static void main(String[] args){                int[]  arr={1,3,4,2};                System.out.println("排序前:");                printArray(arr);//打印原数组

常用工具类(System,Runtime,Date,Calendar,Math)

一.Sy 一个java.lang包中的静态工具类. 三大字段: static PrintStream err "标准"错误输出流. static InputStream in "标准"输入流. static PrintStream out "标准"输出流. 其他常用方法: 描述系统信息: 获取系统属性信息: static Properties getProperties(): (Properties是Hashtable的子类,也就是Map 的子类

java的Arrays工具类实战

java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的.静态方法是属于类的,不是属于类的对象.所以可以直接使用类名加方法名进行调用.Arrays作为一个工具类,能很好的操作数组.下面介绍主要使用的几个函数. 1.fill方法 fill方法主要用来填充数组,这里我们举最简单的int类型吧(其它类型的一样) 看Arrays的fill源码 示例代码: Java代码 publicstaticvoidmain(String[] args) { inta[]=newint[5]; /

[javaSE] 集合工具类(Collections-sort)

java为我们提供了一个集合的工具类,方便我们对集合进行操作,里面的方法都是静态方法. Collections.sort()方法,参数:List<T>集合对象,这个对象带着泛型,是为了保证集合中的元素具备可比较性,因此这个返回值的泛型就会特殊点, <T extends Comparable <? super T>> 默认排序字符串,是按照字母的排列顺序 如果是中文,默认是按照ascii编码进行排序的 自定义一个比较器,实现按照字符串的长度进行排序 定义一个类StrCom

Java:集合框架的工具类

集合框架的工具类 Arrays:里面都是静态方法,直接用来对各种集合进行操作的公有方法. Collections:里面都是静态方法,直接用来对各种集合进行操作的公有方法. 包括: 1.asList将数组变成list集合: static <T> List<T> asList(T... a) 返回一个受指定数组支持的固定大小的列表. //例子1: import java.util.*; class ArraysTest { public static void sop(Object o