java中静态变量和静态方法的优缺点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中静态变量和静态方法的优缺点相关的知识,希望对你有一定的参考价值。

java中静态变量和静态方法的优缺点
高手请指点下,是不是静态方法要比 非静态的要好呀
方法全都弄成静态的可以么???有什么缺点么???请高手指点!!!谢谢!!!

java静态变量和静态方法会在程序初始化运行时候就加载到内存。
优点:不需要在进行实例化。静态变量的值,直接赋新值即可,不需要参数传递,之后可以直接进行参数引用即可;静态方法可以直接通过"类名.方法"的形式进行方法调用。通常方法被多次调用,并且方法中没有动态方法引用的时候使用比较方便。
缺点:初始化加载到内存,如果后续没被引用,加大了内存负担和程序运行负担,影响程序运行效率(一般很小),并且静态变量如果多处被引用赋值,很可能导致参数值混乱(如果是不变的值,最后加上final修饰,强制不能修改)。
备注:上面的都是理论知识,实际开发中,根据实际项目需求进行灵活调整即可。
参考技术A java 里的静态可以说就是全局变量,它是属于类的,类存在它就已经存在了,方法也是一样,静态方法里面使用到的外部变量只能是静态变量,想想就知道了.
但是不要随便定义成静态方法, 因为静态方法内部只能使用静态变量,而静态变量是属于类的, 如果都是静态方法那么这个类就没有实力化的必要.所以一般的工具类才使用较多的静态方法本回答被提问者采纳
参考技术B 如果参数或者方法是固定的才用,比如你要写一个程序计算圆的面积
那么你可以设置一个静态变量p(就是派),他固定等于3.14当然你也可以更加精确一点,但是他是固定的所以是静态
计算圆的方法也是固定的 肯定是。。。。圆的面积计算方法是什么来着。。。总之是固定的,所以可以使用静态方法(视情况也可以不选择用静态方法)
但是半径不是固定的,因为半径是用户输入的,所以半径的输入不能是静态的,要动态的获取用户的输入

Java中的静态和枚举

一、静态成员

对静态成员最简单的解释,静态成员属于整个类而不属于某个对象,所以又叫做类变量。一个类不管创建多少个实例对象,静态变量在内存中有且只有一个(调用方法用类名调用)。

通常的非静态变量称为实例变量,只有实例化后才可使用。

二、静态方法

类似于静态变量,在类装载时被载入内存,不会自动销毁,不用实例化,且静态方法不能被重写。

静态方法只能访问类中的静态变量和静态方法不能访问实例变量和实例方法(因为静态方法在java虚拟机中在对象之前被加载,如果静态方法要访问实例变量或者方法可能其还没被创建),如果要想使用实例变量和方法可在静态方法中直接创建其实例化的对象。

三、枚举

enum  表示可以计数的一种类型

列举一个遍历枚举类的方法:

package None5;

public enum Day {
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday;
}


package None5;

public class Ergodic {
    public static void main(String[] args) {
        for(Day d:Day.values()) {
            System.err.println(d.toString());
        }
    }
}

 

 

四、一个综合静态和枚举的例子

package None4;

public enum personGender {
    Male,
    Female;
}
package None4;

public class Person {
    private String name;
    private int age;
    private personGender gender;
    //静态国籍变量
    private static String nation;
    
    
    //set方法
    public void setName(String name) {
        this.name = name;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void setGender(personGender gender) {
        this.gender = gender;
    }
    public static void setNation(String nation) {
        Person.nation=nation;
    }
    
    //get方法
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
    public personGender getGender() {
        return gender;
    }
    
    //show方法
    public static void show() {
        Person person = new Person();
        person.setName("lemon");
        person.setAge(20);
        person.setGender(personGender.Male);
        System.err.println(String.format("姓名=%s,性别=%s,年龄=%d,国籍=%s", person.name,person.gender,person.age,nation));
    }
}
package None4;

public class client {
    public static void main(String[] args) {
        
        //静态成员属于整个类而不是某个对象,所以这里应该用Person调用
        Person.setNation("CHINA");
        Person.show();
    }
}

运行结果:

姓名=lemon,性别=Male,年龄=20,国籍=CHINA

 

第一篇博客,加油!

努力努力再努力!


以上是关于java中静态变量和静态方法的优缺点的主要内容,如果未能解决你的问题,请参考以下文章

java中静态变量和静态方法分别有啥特点?

java 类的方法是不是和静态变量一样只被加载一次放在栈中

java基础(static---静态方法和静态变量以及静态方法)

请教大家关于JAVA中的静态变量和静态方法

java之静态方法,静态变量

Java中的静态变量&静态方法