永发信息网

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

答案:5  悬赏:0  手机版
解决时间 2021-04-02 01:15
JAVA 请问什么情况下用static呢?
最佳答案
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 表示只在本类使用
没有的,表示同一个包里公用
全部回答
首先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不是一个概念。
问题1 是对的。但是有些为了类成员final 可以涉及为public
问题2 static是与类相关的,该类唯一存在一个。可以使用类名直接访问,不用使用类对象
问题3 public 是全局可见, private 是只有类内不可以见,缺省的为包级可见
问题4 你可以百度 Java编程模式中单例模式看看
static 说明是静态的对象,可以直接用(类名.对象)来调用。
Public与Private 是对象的访问权限 ,private static 和 public static 都是静态变量,在类加载时就定义,不需要创建对象

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

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

在编程中,如果不希望静态变量随意修改,就应该声明private(私有)的,这样外部不能随意修改,此时在把构造函数私有,这样这个变量就没有办法使用一般方法修改了.
如果使用公开的,则可以在任意地方对其进行修改.
static是静态的意思,我的理解是 你一旦变量声明static了,你接下来调用它,方法必须也要声明成static。 相反,没有声明static的成员是类成员,可以直接用public private等去调用。
public private protect是类修饰符。
static好处就是可以直接调用它的变量,方法等。常用于一些封装好的方法。下次用直接调用它,而不需要去new 对象。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
歌手车继铃出生日期
怎样办理华侨证?
汽车行驶八十千米大约需要1小时,对还是错.
java东西南北中布局代码
被杭州尊淘网络科技有限公司骗钱了,有哪些维
退伍军人回到地方后有困难找谁帮
帮忙分析一下这句话的大意:有一种迷一样的生
种子先用温水浸泡,水凉后继续浸泡24小时什么
民谣吉他推荐什么书?
什么干果是用梅子做的用于排毒养颜
如何设计excel
泗中二中中考分数线是多少
如果猞猁进入非洲大草原,会怎样
小品演员杨树林的媳妇
请问做ELV是华测便宜还是SGS便宜?
推荐资讯
十月钓大花鲢打多深
奥数:奇思巧解(列式解答)
哪位说说外国人在美国买房能贷款吗
特讨厌自己的长相我该怎么办,感觉自己长的丑
15千克的5/3比( )多3/2千克,28吨的7&
急!急!急!跪求一份砖混6层住宅楼结构施工
刚开车心里恐惧怎么办
大家帮帮忙 帮我讲解一下服装的搭配 FAB 一款
为什么我的陶瓷杯子倒了开水之后会咯吱咯吱响
乒乓球拍胶皮网购去哪个网站?
为什么中老年男人喜欢丰满的女人
男朋友比我小5岁,合适吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?