问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

java中static作用详解

发布网友 发布时间:2022-04-20 08:01

我来回答

5个回答

热心网友 时间:2023-07-09 20:41

有要详解,那我找资料给你吧

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。

被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。

只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。

用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象市,不生成static变量的副本,而是类的所有实例共享同一个static变量。

static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用--废话),但是不能在其他类中通过类名来直接引用,这一点很重要。实际上你需要搞明白,private是访问权限限定,static表示不要实例化就可以使用,这样就容易理解多了。static前面加上其它访问权限关键字的效果也以此类推。

static修饰的成员变量和成员方法习惯上称为静态变量和静态方法,可以直接通过类名来访问,访问语法为:
类名.静态方法名(参数列表...)
类名.静态变量名

用static修饰的代码块表示静态代码块,当Java虚拟机(JVM)加载类时,就会执行该代码块(用处非常大,呵呵)。

1、static变量
 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。

两者的区别是:
 对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。
 对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。

所以一般在需要实现以下两个功能时使用静态变量:
 在对象之间共享值时
 方便访问变量时

2、静态方法
静态方法可以直接通过类名调用,任何的实例也都可以调用,
因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。
因为实例成员与特定的对象关联!这个需要去理解,想明白其中的道理,不是记忆!!!
因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。

例如为了方便方法的调用,Java API中的Math类中所有的方法都是静态的,而一般类内部的static方法也是方便其它类对该方法的调用。

静态方法是类内部的一类特殊方法,只有在需要时才将对应的方法声明成静态的,一个类内部的方法一般都是非静态的

3、static代码块

 static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。例如:

public class Test5 {
private static int a;
private int b;

static{
Test5.a=3;
System.out.println(a);
Test5 t=new Test5();
t.f();
t.b=1000;
System.out.println(t.b);
}
static{
Test5.a=4;
System.out.println(a);
}
public static void main(String[] args) {
// TODO 自动生成方法存根
}
static{
Test5.a=5;
System.out.println(a);
}
public void f(){
System.out.println("hhahhahah");
}
}

运行结果:
3
hhahhahah
1000
4
5

 利用静态代码块可以对一些static变量进行赋值,最后再看一眼这些例子,都一个static的main方法,这样JVM在运行main方法的时候可以直接调用而不用创建实例。

4、static和final一块用表示什么
static final用来修饰成员变量和成员方法,可简单理解为“全局常量”!
对于变量,表示一旦给值就不可修改,并且通过类名可以访问。
对于方法,表示不可覆盖,并且可以通过类名直接访问。

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

声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。声明为static的方法有以下几条*:

它们仅能调用其他的static 方法。

它们只能访问static数据。

它们不能以任何方式引用this 或super(关键字super 与继承有关,在下一章中描述)。
如果你需要通过计算来初始化你的static变量,你可以声明一个static块,Static 块仅在该类被加载时执行一次。下面的例子显示的类有一个static方法,一些static变量,以及一个static 初始化块:
// Demonstrate static variables,methods,and blocks.

class UseStatic {
static int a = 3;
static int b;

static void meth(int x) {
System.out.println("x = " + x);
System.out.println("a = " + a);
System.out.println("b = " + b);
}

static {
System.out.println("Static block initialized.");
b = a * 4;
}

public static void main(String args[]) {
meth(42);
}
}

一旦UseStatic 类被装载,所有的static语句被运行。首先,a被设置为3,接着static 块执行(打印一条消息),最后,b被初始化为a*4 或12。然后调用main(),main() 调用meth() ,把值42传递给x。3个println ( ) 语句引用两个static变量a和b,以及局部变量x 。

注意:在一个static 方法中引用任何实例变量都是非法的。

下面是该程序的输出:

Static block initialized.
x = 42
a = 3
b = 12
在定义它们的类的外面,static 方法和变量能独立于任何对象而被使用。这样,你只要在类的名字后面加点号运算符即可。例如,如果你希望从类外面调用一个static方法,你可以使用下面通用的格式:

classname.method( )

这里,classname 是类的名字,在该类中定义static方法。可以看到,这种格式与通过对象引用变量调用非static方法的格式类似。一个static变量可以以同样的格式来访问——类名加点号运算符。这就是Java 如何实现全局功能和全局变量的一个控制版本。

下面是一个例子。在main() 中,static方法callme() 和static 变量b在它们的类之外被访问。

class StaticDemo {
static int a = 42;
static int b = 99;
static void callme() {

System.out.println("a = " + a);
}
}

class StaticByName {

public static void main(String args[]) {
StaticDemo.callme();
System.out.println("b = " + StaticDemo.b);
}
}

下面是该程序的输出:

a = 42
b = 99

static成员是不能被其所在class创建的实例访问的。

如果不加static修饰的成员是对象成员,也就是归每个对象所有的。

加static修饰的成员是类成员,就是可以由一个类直接调用,为所有对象共有的

热心网友 时间:2023-07-09 20:42

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。

被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。

只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。

用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象市,不生成static变量的副本,而是类的所有实例共享同一个static变量。

static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用--废话),但是不能在其他类中通过类名来直接引用,这一点很重要。实际上你需要搞明白,private是访问权限限定,static表示不要实例化就可以使用,这样就容易理解多了。static前面加上其它访问权限关键字的效果也以此类推。

Java是由Sun Microsystems公司推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称。

Java由James Gosling和同事们共同研发,并在1995年正式推出。Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的。1995年更名为Java,并重新设计用于开发Internet应用程序。

用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器均支持Javaapplet。另一方面,Java技术也不断更新。Java自面世后就非常流行,发展迅速,对C++语言形成有力冲击。

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。2010年Oracle公司收购Sun Microsystems。

热心网友 时间:2023-07-09 20:42

  大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立。然而在某些时候,我们更希望该类所有的对象共享同一个成员。此时就是 static 大显身手的时候了!


    Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。当然,鉴于他作用的特殊性更推荐用类名访问

  使用 static 可以修饰变量、方法和代码块。

  例如,我们在类中定义了一个 静态变量 hobby ,操作代码如下所示:运行结果:要注意哦:静态成员属于整个类,当系统第一次使用该类时,就会为其分配内存空间直到该类被卸载才会进行资源回收!

热心网友 时间:2023-07-09 20:43

static意思是静态的。方法前加上static叫做静态方法,类前加上static叫做静态类。静态方法必须存在于静态类中,但静态类中的方法可以不都是静态方法。使用静态方法时,直接用类名+“.”+方法名。不用再实例化,创建类的对象,达到方法调用方便,节省空间!

热心网友 时间:2023-07-09 20:43

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用--废话),但是不能在其他类中通过类名来直接引用,这一点很重要。实际上你需要搞明白,private是访问权限限定,static表示不要实例化就可以使用,这样就容易理解多了。static前面加上其它访问权限关键字的效果也以此类推。
java中static关键字的作用

在Java中,static关键字可以用于以下几个方面:1、静态变量:静态变量是指在类中使用static关键字声明的变量,也称为类变量。静态变量是独立于对象而存在的,所有的对象共享同一个静态变量的值,可以通过类名直接访问。静态变量可以用于在多个对象之间共享数据。2、静态方法:静态方法是指在类中使用static关...

java中static作用详解

在Java中,`static`关键字是一个非常重要的修饰符,它主要用于修饰类成员(包括变量、方法和代码块)和内部类。其主要作用包括:1. **属于类而非实例**:被`static`修饰的成员属于类本身,而不是类的某个特定实例。因此,这些成员可以通过类名直接访问,而无需创建类的实例。2. **内存分配**:静...

JAVA! static什么作用?

static是静态修饰符,static可以用来区分成员变量、方法是属于类本身还是属于类实例化后的对象。有static修饰的成员属于类本身,没有static修饰的成员属于类的实例。static静态变量是属于类的,只有一份存储空间,是类之间共享的,牵一发而动全身,一处变,处处变。实例变量属于实例对象,创建几次对象,就有...

java static作用

static成员变量的初始化顺序按照定义的顺序进行初始化。作用于代码块上时:形成静态代码块以优化程序性能。因为它的特性:只会在类加载的时候执行一次。作用于内部类上时:在定义内部类的时候,可以在其前面加上一个权限修饰符static。此时这个内部类就变为了静态内部类。通常称为嵌套类,当内部类是static时...

java中static作用详解

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。 被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定...

java中什么时候该用static修饰方法?有什么好处或者坏处?

用static修饰的方法可以用类名直接调用,不用的一定要先实例化一个对象然后才可以调用 比如 person这个类里面有一个方法public static add(){} 那么可以直接用person类调用 person.add();当然也可以用下面的方法先出一个对象在调用也是可以 如果这个方法前面没有static 比如 public add(){} 那么先要...

JAVA编程中static的用途与用法

public static void main(String[] arg) { Super s = new Sub();s.show();} } 执行结果是: in Super3)静态代码块(修饰没有名字的代码块):1.只被执行一次;2.初始化块在类被加载后首先被运行,不管类是否实例化,而且只执行这一次 3.作用:一般用来初始化一些复杂类型的静态变量。4)...

详解Java中static关键字和final关键字的功能

Java中的static关键字和final关键字是编程中的重要组成部分,深入理解它们的功能至关重要。static主要涉及类变量和类方法,而final则用于创建常量和限制方法的可重写性。静态变量,也称为类变量,与类相关联而非特定的对象。它们就像是类的蓝图信息,如 User 类的description字段,设置时无需创建类的实例。

Java中static的作用?

1.static 成员变量 在类中一个成员变量可用 static 关键字来修饰,这样的成员变量称为 static 成员变量,或静态成员变量。而没有用 static 关键字修饰的成员变量称为非静态成员变量。静态成员变量是属于类的,也就是说,该成员变量并不属于某个对象,即使有多个该类的对象实例,静态成员变量也只有一个...

static关键字的作用是什么

static作用:1、修饰函数的局部变量:特点:有默认值0,只执行一次,运行一开始就开辟了内存,内存放在全局 2、修饰全局函数和全局变量:特点:只能在本源文件使用 3、修饰类里面的成员变量:特点:和1差不多,定义多个static y,但只有一个y,不进入类的大小计算,不依赖于类对象的存在而存在(可直接...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
几何e值得买吗 我英语80分左右总是上不去(100分满分)怎么办... 刚绣好的十字绣怎么洗?画过格的 台州温岭第一人民医院有儿科吗 北山职业技术学校有哪些专业? 在温岭市找一份夜里兼职的驶机工作我现白天在厂里开车,想多收入,找... ...网线连接了客厅的路由器再连接到电脑上,卧室用的是和客厅路由器分... ...器放在客厅看电视用,卧室里面我还得再牵一根网线怎么办? ...台式 路由器在客厅距离太远拉网线不方便 卧室里有网线插口 卧室的网 ... 在临海社保缴费了一年后离开没办转移,去宁波参加社保 后又回临海参加社... mate30如何开启nfc 美的空调室外机不换,只把柜机改成风管机可以吗? 柜机空调线安好了,现在想装风管机怎么改? 室外机不换把宝内柜机能否换成风管机? 3匹风管机改柜机要多少钱 一托四风管机内机可以改柜机吗? 小米8配置怎么样 小米8怎么样什么时候出的 小米8怎么样好不好用 小米8评测详解 现在买小米8怎么样? 小米8的真实评价 小米8到底好不好,实际会怎么样? 中国的新年是从什么时候开始有的? 新年与春节有什么不同 新年是什么? 新年是十二生肖中的什么年? 新年是什么年 过年是啥年 新年是什么日子? 春节叫啥年? java中static是什么意思,该怎么用 Java中static是什么意思,有什么作用 java中static的作用是什么? 坐月子可以吃炒板栗吗? java中static的作用是什么意思 “java”中“static”是什么意思?该如何使用? 在java中什么时候会用到static JAVA Static 的作用 JAVA中的static 华为怎么加nfc门禁 打开CAD文件时出现缺少一个或多个SHX文件的提示,... (1/2)打开CAD文件,提示缺少一个或多个SHX文件,在... cad缺少shx文件怎么解决 CAD SHX字体 缺少sss-hzdx文件,,有知道在哪里下... 跪求cad2009 ltypeshp.shx有效下载地址 AutoCAD字体si-st.shx字体是什么 哪里有下载呢 哪位大神知道CAD gb500-2000.shx字体哪里可以下载? cad缺少shx文件,替换文件没有,下载了对应字体在fo... CAD2012版中缺少SHX字体 我下载了一个字体大全安装... CAD打开时弹缺少SHX文件,打开时很卡
  • 焦点

最新推荐

猜你喜欢

热门推荐