永发信息网

JAVA 请问什么情况下用static呢?

答案:5  悬赏:0  手机版
解决时间 2021-04-02 01:15
  • 提问者网友:兔牙战士
  • 2021-04-01 02:11
JAVA 请问什么情况下用static呢?
最佳答案
  • 五星知识达人网友:逐風
  • 2021-04-01 03:44
1.static 修饰的方法,或者类属性,不需要创建该类的对象实例(new )就可以使用,直接用 类名. 就可以了;如果你的方法或属性,不随对象实例变化,就可以用static 修饰,
例如 对于常量,在所有情况都是一样的,所有 我们定义成
public class Nnmber {
public static final int NUMBET_ONE = 1;
}
public : 表示所有其他类都可以获取该值
static: 表示 Nnmber .NUMBET_ONE 方式就可以获得该值,而不需要用new Nnmber ().NUMBET的方式
final:标识该变量的值不可更改,常量当然不能改值

还有jdk Math 类的 方法,数学计算在任何情况下都是一样的;所有Math类的方法都是public static 的。如果你的方法,在任何情况都是不变的,就可以定义成public static

还有一点就是static 的方法,只能调用static方法,或static的类属性,

使用public ,还是private ,和static 没有直接关系
public 表示所有类公用;
pirvate 表示只在本类使用
没有的,表示同一个包里公用
全部回答
  • 1楼网友:拜訪者
  • 2021-04-01 07:21
首先Static 声明的域或变量 是在内存当中单独划分出的一块区域,与对象是不同的,只有类的对象被创建后才会在堆中分配区域。

并且在使用static 属时 则不需要创建对象,直接使用,这点很好,可以省略了创建对象的不必要开销。

java中static的作用
有时你希望定义一个类成员,使它的使用完全独立于该类的任何对象。通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字static(静态的)就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。你可以将方法和变量都声明为static。static 成员的最常见的例子是main( ) 。因为在程序开始执行时必须调用main() ,所以它被声明为static。
声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量
那static 声明变量有声明用呢?

以下是我个人理解。

假如有个类,其主要责任就是分配连接,相当于连接池吧,

里面有属性来标示初始连接数,新增连接数等等,

假如我在别的类中需要使用这些属性,那肯定是要创建对象然后使用,但是用了static以后我就不需要创建对象来直接使用,是不是可以省略开销呢?

在说static作用域,static确实很特殊,他是属于前期绑定的,而java中基本上都是后期绑定。

如果你有什么特殊化的初始程序,希望在创建对象之前就准备好了,那么用static的作用域是再好不过的了,因为static基本上是和对象的其他成员是分离的,所以你不创建对象,static作用域里的程序也会执行。

你创建对象或不创建对象,static作用域就在那里,已经执行了。
例如:
public class ClassModle {
static double x=56.84,y=34.10;//类变量
static double max(double a,double b){ //类方法
return a>b?a:b;
}
public double min(){ //实例方法
return x+y; //方法操作类变量
}

public static void main(String args[]){
double max=ClassModle.max(12, 34); //通过类名调用类方法
System.out.println(max);
System.out.println(ClassModle.x=23); //直接通过类名调用类变量
System.out.println(ClassModle.y=52);
ClassModle mode=new ClassModle();
System.out.println(mode.max(12, 78)); //通过对象调用类方法
System.out.println(mode.min()); //通过对象调用实例方法
}
}
结果为:
34.0
23.0
52.0
78.0
两个数的和是:75.0追问1,那么类的成员声明为public, 和声明为static的区别在于前者要创建实例,后者不用,相同点就是公有,其他类能访问??
2,private static 中的private 限定了只能在类中访问,那么类外面不能,还声明它static有意义么?追答1、在其他类来访问是,static的就不用创建实例,你可以简单的理解为static在类加载时就已经存在,而非static里的成员需要实例化来创建,所以访问static时直接用类名来调用,如:Arrays.toString(..)等API都是静态的;而访问非static时需要new一个实例、
2、private static final String RANK = "桃花"; 此时有意义。

还有就是 public private protected default 是访问权限修饰符,跟static不是一个概念。
  • 2楼网友:像个废品
  • 2021-04-01 05:58
问题1 是对的。但是有些为了类成员final 可以涉及为public
问题2 static是与类相关的,该类唯一存在一个。可以使用类名直接访问,不用使用类对象
问题3 public 是全局可见, private 是只有类内不可以见,缺省的为包级可见
问题4 你可以百度 Java编程模式中单例模式看看
  • 3楼网友:山有枢
  • 2021-04-01 04:23
static 说明是静态的对象,可以直接用(类名.对象)来调用。
Public与Private 是对象的访问权限 ,private static 和 public static 都是静态变量,在类加载时就定义,不需要创建对象

public(共有) 说明任何类在任何地方都能调用它 ,public static 是公开的,在外部就可以访问,且可以对该值修改,

private(私有) 说明只有在本类内被调用,private static 是私有的,不能在外部访问,只能通过静态方法调用,这样可以防止对变量的修改

在编程中,如果不希望静态变量随意修改,就应该声明private(私有)的,这样外部不能随意修改,此时在把构造函数私有,这样这个变量就没有办法使用一般方法修改了.
如果使用公开的,则可以在任意地方对其进行修改.
  • 4楼网友:千夜
  • 2021-04-01 04:08
static是静态的意思,我的理解是 你一旦变量声明static了,你接下来调用它,方法必须也要声明成static。 相反,没有声明static的成员是类成员,可以直接用public private等去调用。
public private protect是类修饰符。
static好处就是可以直接调用它的变量,方法等。常用于一些封装好的方法。下次用直接调用它,而不需要去new 对象。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯