static用法 java

合集下载

java中final和static使用总结

java中final和static使用总结

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

被static修饰的成员变量和成员办法自立于该类的任何对象。

也就是说,它不依靠类特定的实例,被类的全部实例分享。

只要这个类被加载,Java虚拟机就能按照类名在运行时数据区的办法区内定找到他们。

因此,static对象可以在它的任何对象创建之前拜访,无需引用任何对象。

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

static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员办法中用法(固然也可以在非静态成员办法中用法--废话),但是不能在其他类中通过类名来挺直引用,这一点很重要。

事实上你需要搞明了,private是拜访权限限定,static表示不要实例化就可以用法,这样就简单理解多了。

static前面加上其它拜访权限关键字的效果也以此类推。

static修饰的成员变量和成员办法习惯上称为静态变量和静态办法,可以挺直通过类名来拜访,拜访语法为:类名.静态办法名(参数列表...) 类名.静态变量名用static修饰的代码块表示静态代码块,当Java虚拟机(JVM)加载类时,就会执行该代码块(用处十分大,呵呵)。

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

两者的区分是:对于静态变量在内存中惟独一个拷贝(节约内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名挺直拜访(便利),固然也可以通过对象来拜访(但是这是不推举的)。

Java static关键字

Java static关键字

Java static关键字1.1 概述以前我们定义过如下类:public class Student {// 成员变量public String name;public char sex;// '男' '女'public int age;// 无参数构造方法public Student(){}// 有参数构造方法public Student(String a){}}我们已经知道面向对象中,存在类和对象的概念,我们在类中定义了一些成员变量,例如name,age,sex ,结果发现这些成员变量,每个对象都存在(因为每个对象都可以访问)。

而像name ,age , sex确实是每个学生对象都应该有的属性,应该属于每个对象。

所以Java中成员(变量和方法)等是存在所属性的,Java是通过static关键字来区分的。

static关键字在Java开发非常的重要,对于理解面向对象非常关键。

关于static关键字的使用,它可以用来修饰的成员变量和成员方法,被static修饰的成员是属于类的是放在静态区中,没有static修饰的成员变量和方法则是属于对象的。

我们上面案例中的成员变量都是没有static修饰的,所以属于每个对象。

1.2 定义格式和使用static是静态的意思。

static可以修饰成员变量或者修饰方法。

1.2.1 静态变量及其访问有static修饰成员变量,说明这个成员变量是属于类的,这个成员变量称为类变量或者静态成员变量。

直接用类名访问即可。

因为类只有一个,所以静态成员变量在内存区域中也只存在一份。

所有的对象都可以共享这个变量。

如何使用呢例如现在我们需要定义传智全部的学生类,那么这些学生类的对象的学校属性应该都是“传智”,这个时候我们可以把这个属性定义成static修饰的静态成员变量。

定义格式修饰符static数据类型变量名=初始值;举例public class Student {public static String schoolName ="传智播客";// 属于类,只有一份。

Java关键字staticfinal使用总结

Java关键字staticfinal使用总结

Java关键字staticfinal使⽤总结 Static表⽰“全局”或者“静态”的意思,⽤来修饰成员变量和成员⽅法,也可以形成静态static代码块,被static修饰的成员变量和成员⽅法独⽴于该类的任何对象。

也就是说,它不依赖类特定的实例,被类的所有实例共享。

只要该类加载,JVM虚拟机就能根据类名在运⾏时数据区的⽅法区内找到他们。

因此,static对象可以在它的任何对象创建之前访问,⽆需引⽤任何对象。

1、static修饰类的成员⽅法或者成员变量,我们通常称该⽅法是静态⽅法,该⽅法是静态变量;若⽤public修饰static成员⽅法或者成员变量,表⽰该⽅法或该变量是全局的,可以在其他类中通过类名直接调⽤;若⽤private修饰static成员变量,表⽰该变量只能在该类的成员⽅法中使⽤,并且可以在该类的静态代码块中使⽤;在静态⽅法或者静态代码块中只能调⽤静态变量,但在⾮静态⽅法或者代码块中可以调⽤静态和⾮静态的变量。

2、静态代码块⾮静态代码块构造函数的加载顺序 静态代码块,在虚拟机加载类的时候就会加载执⾏,⽽且只执⾏⼀次 ⾮静态代码块,在创建对象的时候(即new⼀个对象的时候)执⾏,每次创建对象都会执⾏⼀次1public class StaticTest {2static {3 System.out.println("static function...");4 }5 {6 System.out.println("unstatic function...");7 }8public StaticTest(){9 System.out.println("construct function...");10 }11public static void main(String[] args) {12new StaticTest();13 }14 } 运⾏结果: 所以这三者的加载顺序是静态代码块>⾮静态代码块>类构造函数 注:⾮静态代码块在不new类的时候是不是执⾏的。

Java static关键字详解

Java static关键字详解

Java static关键字详解1. 关键字:static详解如果想让一个成员变量被类的所有实例所共享,就用static修饰即可,称为类变量(或类属性)!1.1 类属性、类方法的设计思想当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。

我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份。

例如,所有的中国人都有个国家名称,每一个中国人都共享这个国家名称,不必在每一个中国人的实例对象中都单独分配一个用于代表国家名称的变量。

此外,在类中声明的实例方法,在类的外面必须要先创建对象,才能调用。

但是有些方法的调用者和当前类的对象无关,这样的方法通常被声明为类方法,由于不需要创建对象就可以调用类方法,从而简化了方法的调用。

这里的类变量、类方法,只需要使用static修饰即可。

所以也称为静态变量、静态方法。

1.2 static关键字•使用范围:–在Java类中,可用static修饰属性、方法、代码块、内部类•被修饰后的成员具备以下特点:–随着类的加载而加载–优先于对象存在–修饰的成员,被所有对象所共享–访问权限允许时,可不创建对象,直接被类调用1.3 静态变量1.3.1 语法格式使用static修饰的成员变量就是静态变量(或类变量、类属性)[修饰符]class类{[其他修饰符]static数据类型变量名;}1.3.2 静态变量的特点•静态变量的默认值规则和实例变量一样。

•静态变量值是所有对象共享。

•静态变量在本类中,可以在任意方法、代码块、构造器中直接使用。

•如果权限修饰符允许,在其他类中可以通过“类名.静态变量”直接访问,也可以通过“对象.静态变量”的方式访问(但是更推荐使用类名.静态变量的方式)。

•静态变量的get/set方法也静态的,当局部变量与静态变量重名时,使用“类名.静态变量”进行区分。

详解java中的static关键字

详解java中的static关键字

详解java中的static关键字Java中的static关键字可以⽤于修饰变量、⽅法、代码块和类,还可以与import关键字联合使⽤,使⽤的⽅式不同赋予了static 关键字不同的作⽤,且在开发中使⽤⼴泛,这⾥做⼀下深⼊了解。

静态资源(静态变量与静态⽅法)被static关键字修饰的变量和⽅法统⼀属于类的静态资源,是类实例之间共享的。

被static关键字修饰的变量、⽅法属于类变量、类⽅法,可以通过【类名.变量名】、【类名.⽅法名】直接引⽤,⽽不需要派⽣⼀个类实例出来。

静态资源分类存放的好处JDK把不同的静态资源放在了不同的类中⽽不是把所有的静态资源放在⼀个类⾥⾯,这样做主要有3点好处:1.不同的类有⾃⼰的静态资源,就可以实现静态资源分类。

⽐如,和数学相关的静态资源就放在了ng.Math中,和⽇历相关的静态资源就放在java.util.Calendar中,将组织形式固定为【类>静态资源】,使得代码的逻辑结构变得清晰。

2.因为静态资源的组织形式固定为了【类>静态资源】的形式,也就有效避免的静态资源在全局重名的问题。

⽐如在A类中有⼀个name属性,B类中也有⼀个name属性,如果放在⼀起会重复,但是分类放开则不会重复了,因为实际上这两个属性的全名是和。

3.分类有助于避免因为静态资源都放在⼀个类中导致该类体积过⼤的问题,⽅便了管理与协同维护。

静态资源容易混淆的三个点静态资源的知识点⽐较简单,但是还是有三点⽐较容易混淆:静态⽅法能不能引⽤⾮静态资源?静态⽅法能不能引⽤静态资源?⾮静态⽅法能不能引⽤静态资源?要弄明⽩这三个问题,就要先了解静态资源在JVM中的加载机制。

实际上,虽然说静态资源是属于类的,但在JVM中却是独⽴于类的存在。

因为从JVM类加载机制的⾓度来讲,静态资源是类初始化的时候加载的,⽽⾮静态资源则是派⽣类的时候才加载的。

类的初始化早于类的派⽣(new)。

⽐如,在Class.forName("xxx")⽅法中,就是初始化了⼀个类,但是并不是派⽣出⼀个实例,⽽只是加载了这个类中的静态资源。

java静态的用法

java静态的用法

java静态的用法【Java静态的用法】在Java中,"静态"关键字用于声明静态成员变量和静态方法。

静态成员属于类本身,而不属于类的实例。

下面是静态成员和静态方法的几个常见用法:1. 静态成员变量(静态字段):静态成员变量是通过使用"static"关键字声明的,它在类的所有实例之间共享相同的值。

它可以在类的任何地方访问,包括静态方法内部。

静态成员变量通常用于存储与类相关的常量或共享的数据。

以下是一个例子:```javapublic class MyClass {public static int staticVariable = 10;// 其他代码...}```2. 静态方法:静态方法是通过使用"static"关键字声明的方法。

它可以在类的任何地方调用,而不需要创建类的实例。

静态方法通常用于执行与类相关的操作,而与类的实例无关。

以下是一个例子:```javapublic class MyClass {public static void staticMethod() {// 执行静态方法的代码...}// 其他代码...}```3. 使用静态成员和静态方法:静态成员可以直接使用类名来访问,而无需创建类的实例。

静态方法也可以直接调用,无需实例化对象。

以下是使用静态成员和静态方法的示例:```javapublic class MyClass {public static int staticVariable = 10;public static void staticMethod() {// 执行静态方法的代码...}// 其他代码...public static void main(String[] args) {// 直接访问静态变量int value = MyClass.staticVariable;// 直接调用静态方法MyClass.staticMethod();}}```总结:静态成员和静态方法在Java中有广泛的应用。

static静态变量,静态方法

static静态变量,静态方法

static静态变量,静态⽅法
Java 之静态变量
引⼊
⼀个类可以创建多个对象,每个对象都拥有⾃⼰的成员,各⾃互相独⽴。

然⽽在某些特殊情况下,我们希望该类的所有对象共享⼀个成员,这个时候就可以把这个成员设置为static
在Java中,被static 修饰的成员称为静态成员,它是属于整个类的,在类被加载的时候被分配到静态区(在堆⾥⾯)。

这个时候属于它就不单独属于某个特定的对象了,即被类的所有对象所共享。

静态成员可以使⽤类名直接访问,当然也可以使⽤对象命进⾏访问,介于它的特殊性,更推荐使⽤类名进⾏访问。

运⾏结果:
Java 之静态⽅法
与静态变量⼀样。

我们可以使⽤static 修饰⽅法,称之为静态⽅法。

我们之前⼀直写的mian ⽅法仔细看看,它就是⼀个静态⽅法,静态⽅法使⽤如下:
运⾏结果
使⽤静态⽅法时,要注意:
1、静态⽅法可以调⽤同类中的其他成员,但不能直接调⽤⾮静态成员,如:
2、但是如果希望静态⽅法中调⽤⾮静态成员,可以通过创建类的对象,然后通过对象来访问⾮静态变
量。


3、普通的⽅法中,可以直接访问同类中的⾮静态变量和静态变量,如下
4、静态⽅法中,不能直接调⽤⾮静态⽅法,但是可以通过对象来访问⾮静态⽅法。

如:
然后⾃⼰再敲⼀遍~~。

Java中static关键字总结

Java中static关键字总结

Java中static关键字总结1. 静态方法通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法声明为static的方法有以下几条限制:·它们仅能调用其他的static 方法。

·它们只能访问static数据。

·它们不能以任何方式引用this 或super。

class Simple {static void go() {System.out.println("Welcome");}}public class Cal {public static void main(String[] args) {Simple.go();}}调用一个静态方法就是“类名.方法名”,静态方法的使用很简单如上所示。

一般来说,静态方法常常为应用程序中的其它类提供一些实用工具所用,在Java的类库中大量的静态方法正是出于此目的而定义的。

2. 静态变量声明为static的变量实质上就是全局变量。

当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。

静态变量与静态方法类似。

所有此类实例共享此静态变量,也就是说在类装载时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间,当然对于final则另当别论了class Value {static int c = 0;static void inc() {c++;}}public class Count2 {public static void prt(String s) { System.out.print(s);}public static void main(String[] args) { Value v1, v2;v1 = new Value();v2 = new Value();prt("v1.c=" + v1.c + " v2.c=" + v2.c); v1.inc();prt(" v1.c=" + v1.c + " v2.c=" + v2.c);}}结果为:v1.c=0 v2.c=0 v1.c=1 v2.c=1由此可以证明它们共享一块存储区。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

static用法java
Java中的static关键字用于定义静态成员,也可以修饰类、方法和变量。

它表示静态的、共享的属性或方法,不依赖于具体实例的存在。

本文将详细介绍static关键字的用法及其在Java中的应用。

一、静态成员变量
静态变量是属于类的,而不是属于类的实例对象。

使用static关键字可以将一个变量声明为静态成员变量。

静态变量与类的所有实例共享,当其中一个实例修改了静态变量的值,其他实例也会受到影响。

静态变量在内存中只有一个副本,节省了内存空间。

在类中,静态变量的定义方式为:
[访问修饰符] static 数据类型变量名;
下面举个例子来说明静态变量的用法:
java
public class StaticVariableExample {
public static int count = 0;
public String name;
public StaticVariableExample(String name) {
= name;
count++;
}
}
上述代码中,count是类StaticVariableExample的静态成员变量,表示创建了多少个类的实例对象。

在每个对象的构造函数中,count的值都会加1。

这样,每次创建一个实例对象,count的值就会增加。

静态变量的访问方式为:类名.静态变量名。

例如,通过StaticVariableExample.count来访问count变量。

二、静态方法
静态方法是属于类的,而不是属于类的实例对象。

使用static关键字可以将一个方法声明为静态方法。

静态方法可以直接通过类名来调用,不需要先创建类的实例对象。

静态方法只能访问类中的静态成员变量或静态方法。

在类中,静态方法的定义方式为:
[访问修饰符] static 返回值类型方法名([参数列表]){
方法体
}
下面举个例子来说明静态方法的用法:
java
public class StaticMethodExample {
public static int add(int a, int b) {
return a + b;
}
}
上述代码中,add方法是静态方法,用于计算两个整数的和。

通过类名.
方法名直接调用该方法,例如,StaticMethodExample.add(3, 5)返回8。

静态方法中不能使用this关键字,因为静态方法不依赖于具体的实例对象。

三、静态代码块
静态代码块用于初始化静态成员变量或执行一些静态方法。

在类加载的过程中,静态代码块会最先执行。

静态代码块只会执行一次,除非再次加载该类。

使用静态代码块的语法为:
static {
静态代码块中的初始化或执行逻辑
}
下面举个例子来说明静态代码块的用法:
java
public class StaticBlockExample {
public static int number;
static {
number = 10;
}
}
上述代码中,静态代码块用于对number进行初始化操作。

在类加载过程中,静态代码块会被执行,将number的值设置为10。

四、静态内部类
使用static关键字修饰的内部类称为静态内部类。

静态内部类与外部类的实例对象无关,可以直接通过类名访问。

静态内部类的定义方式为:
[访问修饰符] static class 类名{
静态内部类的成员变量和方法
}
下面举个例子来说明静态内部类的用法:
java
public class OuterClass {
private static int number;
public static class InnerClass {
public void printNumber() {
System.out.println(number);
}
}
}
上述代码中,InnerClass是OuterClass的静态内部类。

在InnerClass的printNumber方法中,可以直接访问OuterClass的静态成员变量
number。

五、静态导入
使用static关键字还可以实现静态导入。

静态导入可以直接导入一个类的静态成员,而不需要通过类名来访问。

静态导入的语法为:
import static 类名.静态成员名;
下面举个例子来说明静态导入的用法:
java
import static ng.Math.PI;
import static ng.Math.ceil;
public class StaticImportExample {
public void printPi() {
System.out.println(PI);
}
public void printCeil(double num) {
System.out.println(ceil(num));
}
}
上述代码中,通过静态导入可以直接访问Math类的静态成员变量PI和静态方法ceil,而不需要使用Math.PI和Math.ceil。

总结:
本文详细介绍了Java中static关键字的用法及其在Java中的应用。

静态成员变量和静态方法是属于类的,不依赖于类的实例对象。

静态代码块用于初始化静态成员变量或执行一些静态方法,在类加载过程中执行。

静态内部类与外部类的实例对象无关,可以直接访问。

静态导入可以直接导入一个类的静态成员,使得代码更加简洁。

了解和运用static关键字可以提高Java程序的效率和灵活性。

相关文档
最新文档