Static关键词与Main方法详解

文章详细介绍了Java中的Static关键字,包括其作为共享变量的特点,如何通过类名调用,以及Static变量的生命周期。此外,还讲解了Static修饰的成员方法在创建工具类中的应用,以及Main方法的详解,强调了其public、static、void和main的特点。
摘要由CSDN通过智能技术生成

一、Static关键字

1、特点

(1)作为共享变量被所在类中的所有对象所共享,且在外部类中创建的所在类对象也可共享Static变量。

(2)在外部类中Static变量可通过类名进行调用。

(3)Static变量优先于对象存在,即在外部类中可以创建Static变量而后创建对象

(4)Static变量随着类的加载而加载,即当类的字节码文件进入方法区的同时,Static修饰的变量就被存放到堆内存中。

(5)Static修饰的成员变量、成员方法相互可直接访问(因为Static修饰的成员变量、成员方法优于对象创建,因为所有Static成员随着类加载而加载,而非Static成员需要创建对象才可调用,故非Static成员与Static成员间相互不可直接访问,Static成员可直接访问)

下面让我们来看看代码示例:

/**
 * @author Tweek
 */
public class Student {
    // 学生类
     String name;
     int age;
    static String school;
}
public class StaticTest1 {
    /**
       static 关键字:修饰符,可以修饰成员变量,成员方法
       特点:
       1、被类的所有对象所共享
       2、多了一种调用方式,可以通过类名进行调用(推荐使用类名进行调用)
       3、随着类的加载而加载,优于对象存在
     */
    public static void main(String[] args) {
           //随着类的加载而加载,可以放于创建对象代码之上
           Student.school="NENU";
           Student stu = new Student();
           stu.name="Zhangsan";
           stu.age=15;
​
​
        System.out.println(stu.name+"---"+stu.age+"---"+Student.school);
        System.out.println("-------------------------------------------");
        Student stu1 = new Student();
        stu1.name="Tweek";
        stu1.age=21;
        System.out.println(stu1.name+"---"+stu1.age+"---"+Student.school);
    }
}
​
控制台输出:
Zhangsan---15---NENU
-------------------------------------------
Tweek---21---NENU

2、Static修饰成员方法

工具类

(1)当前类中所有的成员方法被Static修饰且私有构造方法,则称此类为工具类。

(2)工具类方便外部类调用所需的函数方法,可直接通过类名调用,无需在外部类中创建对象

下面让我们来看看代码示例:

/**
 * @author Tweek
 */
public class ArrayTools {
    /**
     * 1、从数组中找最大值
     * 2、从数组中找最小值
     * 3、打印所有元素,格式要求[1,2,3]
     */
    //工具类
    private ArrayTools(){
​
    }
    public static int getMax(int[] a){
        int max =a[0];
        for (int i = 1; i <a.length ; i++) {
            if(max<a[i]){
                max=a[i];
            }
         }
        return max;
    }
​
    public static int getMin(int[] a){
        int min =a[0];
        for (int i = 1; i <a.length ; i++) {
            if(min>a[i]){
                min=a[i];
            }
        }
        return min;
    }
     public static void printArray(int[] a){
         System.out.print("[");
         for (int i = 0; i < a.length; i++) {
             if(i<a.length-1){
                 System.out.print(a[i]+",");
             }
             else{
                 System.out.print(a[i]+"]");
             }
​
         }
     }
}
//测试类
public class ArrayTest2 {
    public static void main(String[] args) {
        /*
                无需创建对象,直接用类名调用
        */
        int[] arr = {2,3,2,1,5};
        System.out.println("MAX:"+ArrayTools.getMax(arr)+"   MIN:"+ArrayTools.getMin(arr));
        ArrayTools.printArray(arr);
​
    }
}
​
控制台输出:
MAX:5   MIN:1
[2,3,2,1,5]

二、Main方法详解

具体分析

1、public:访问最大权限,被JVM调用

2、static:不能创建对象,被JVM调用

3、void:不需要给JVM返回值,被JVM调用

4、main:通用名称,非关键字,被JVM识别

5、String[] args: 以前用于接受键盘录入,现在因为有了Scanner类,所有没用了

代码示例:

/**
 * @author Tweek
 */
public class ArrayTest2 {
    public static void main(String[] args) {
        int[] arr = {2,3,2,1,5};
        System.out.println("MAX:"+ArrayTools.getMax(arr)+"   MIN:"+ArrayTools.getMin(arr));
        ArrayTools.printArray(arr);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值