static修饰符

static修饰符表示静态的,可修饰字段、方法、内部类,其修饰的成员属于类,也就是说static修饰的资源属于类级别,而不是对象级别。

static的正真作用:用来区别字段,方法,内部类,初始化代码块是属于对象还是属于类本身。

static修饰符的特点:

1. static修饰符的成员(字段/方法),随着所在类的加载而加载。

  当JVM把字节码加载进JVM的时候,static修饰符的成员就已经在内存中了。

2. 优先于对象的存在

  对象是我们手动通过new关键字创建出来的。

3. static修饰符的成员被该类型的所有对象所共享

  根据该类型创建出来的任何对象,都可以访问static成员

  表面上通过对象去访问static成员,其本质依然使用类名访问和对象没有任何关系。

4. 直接使用类名访问static成员

  因为static修饰符的成员直接属于类,不属于对象,所以可以直接使用类名访问static成员。

static成员在JVM中的存储:存储在方法区中。

时间: 2024-10-10 20:47:39

static修饰符的相关文章

static修饰符与final修饰符

■ static修饰符与final修饰符: ★ static修饰符: 1. 修饰的对象: 类中的成员(属性[静态变量或类变量]和方法[静态方法或类方法]) 2. 静态属性的特点: 1. 静态变量被所有对象共享 2. 随着类的加载而加载,随着类的消失而消失,和对象的创建无关 3. 可以直接被类名调用 3. 静态方法的特点: 1. 静态方法优先于对象存在,在静态方法中无法访问与对象相关的实例变量(这时候对象还没有创建,其属性也就没有) 2. 静态方法无法访问实例变量 3. 静态方法可以访问静态变量

命名冲突与static修饰符

static 可以减少命名冲突 如:test1.c:int a test2.c : int a gcc test1.c test2.c 报重复定义错误 但是在其中一个加static,可解决此问题 同样适用于函数. 命名冲突与static修饰符,布布扣,bubuko.com

java final .static修饰符

static静态修饰符(使用static修饰符修饰的成员变量.常量.和成员方法成为静态变量.常量和方法,他们统称为静态成员,归整个类所有,不依赖于类的特定实例,被类的所有实例共享,只要这个类被加载,JVM就可以根据类名在运行时数据区的方法区找到他们) 静态变量 对于静态变量,运行时,JVM只为静态变量分配一次内存,在加载类的过程中完成静态变量的内存分配.在类的内部,可以在任何方法内直接访问静态变量:在其他类中,可以通过类名访问该类中的静态变量. 静态变量可以被类的所有实例共享,因此静态变量可以作

java面向对象之static修饰符

在摆实例之前,先搞一些总结上去.... static(静态\修饰符) 1. static修饰成员变量 :如果有数据需要被共享给所有对象使用时,那么就可以使用static修饰. 静态成员变量的访问方式: 方式1: 可以使用对象进行访问. 格式: 对象.变量名. 方式二: 可以使用类名进行访问. 格式: 类名.变量名; 注意: 1. 非静态的成员变量只能使用对象进行访问,不能使用类名进行访问. 2. 千万不要为了方便访问数据而使用static修饰成员变量,只有成员变量的数据是真正需要被共享的时候 才

C语言中static修饰符的意义

在C语言中,static通常有2种含义:1)定义变量的生命周期:2)定义变量或者函数的作用域. 变量的生命周期是指,相对于程序运行的进程生命周期,变量存在的时间段.变量的生命周期由变量的存储类型(位置)决定.因此static的第1种含义也可以理解为,static定义了变量的存储类型(位置). C语言中,变量存储位置分为栈.全局静态区.堆.栈用来做函数调用,参数传递等,在程序的运行过程中是操作最频繁的数据区.全局静态区,是变量一直存在于内存中,在程序整个运行过程中不会被销毁.堆,是由操作系统维护的

static修饰符详解

static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static修饰的成员变量和成员方法独立于该类的任何对象.也就是说,它不依赖类特定的实例,被类的所有实例共享. 只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们.因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象. 用public修饰的static成员变量和成员方法本质是

Java Basic Notes——static修饰符

1.static 在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在.这样做有什么意义呢? 在Java程序里面,所有的东西都是对象,而对象的抽象就是类,对于一个类而言,如果要使用他的成员,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员,但是有种情况例外,就是该成员是用static声明的(在这里所讲排除了类的访问控制). static 是

C# 修饰符“static”对该项无效

类方法的局部变量添加static关键字,再编译时 C# 编译器会报告以下错误:error CS0106: 修饰符"static"对该项无效 C# 语言不允许使用 static 修饰符来声明方法内部的变量.但是在 C/C++ 语言中是允许这么做的. 因此只能只能在类中定义一个静态变量成员,然后提供给类方法调用

JAVA基础-栈与堆,static、final修饰符、内部类和Java内存分配

Java栈与堆 堆:顺序随意 栈:后进先出(Last-in/First-Out). Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new.newarray.anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放.堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据.但缺点是,由于要在运行时动态分配内存,存取速度较慢. 栈的优势是