Java中的静态变量static】的更多相关文章

用static修饰符修饰的数据成员,并不是属于那个对象的,而是属于类.静态数据成员在定义的时候已经分配了内存,而此时对象还没有建立好. 当然它也是被保存到类的方法中的,而不是对象内存中,大家都是可以访问,可以通过类名访问,这点在C++中也是如此. 静态数据成员属于类的作用域,也可以使用public,private,等进行修饰,但是访问层次不同. 以下是java代码: import  java.text.NumberFormat;import  java.util.Locale;import  j…
package com.wangcf; public class Test { String name="你好"; static String sex="男"; Test t=new Test(); /** * 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员 * 如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量 */ public static void print(){ Test test=new Test(…
大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立.然而在某些时候,我们更希望该类所有的对象共享同一个成员.此时就是 static 大显身手的时候了!! Java 中被 static 修饰的成员称为静态成员或类成员.它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享.静态成员可以使用类名直接访问,也可以使用对象名进行访问.当然,鉴于他作用的特殊性更推荐用类名访问~~ 使用 static 可以修饰变量.方法和代码块. 本小节,我们先认识一下静态变量. 例…
  我们知道类的生命周期分为装载.连接.初始化.使用和卸载的五个过程.其中静态代码在类的初始化阶段被初始化. 而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静态变量理解为类变量(与对象无关),而实例变量则属于一个特定的对象. 静态变量有两种情况: 静态变量是基本数据类型,这种情况下在类的外部不必创建该类的实例就可以直接使用 静态变量是一个引用.这种情况比较特殊,主要问题是由于静态变量是一个对象的引用,那么必须初始化这个对象之后才能将引用指向它. 因此如果…
类字面常量 final 静态域不会触发类的初始化操作 非 final static 静态域(以及构造器其实是一种隐式的静态方法) Class.forName():会自动的初始化: 使用 .class来创建对 class 对象的引用,不会自动地初始化该 class 对象,初始化被延迟到了对静态方法(构造器隐式的是静态的)或者非final静态域(注意final静态域不会触发初始化操作)进行首次引用时才执行. 1. static{} 静态代码块与 {} 非静态代码块 二者均是在 JVM 加载类时,且在…
转载自http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796209.html (一)静态方法(1)在Java里,可以定义一个不需要创建对象的方法,这种方法就是静态方法.要实现这样的效果,只需要在类中定义的方法前加上static关键字.例如: public static int maximum(int n1,int n2) 使用类的静态方法时,注意: a在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法),而不能直接访问类中…
java中的类的生命周期分为装载,连接,初始化,使用,和卸载五个过程. 而静态代码在类的初始化阶段被初始化. 而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静态变量理解为类变量(与对象无关),而实例变量则属于一个特定的对象. 静态变量有两种情况: 静态变量是基本数据类型,这种情况下在类的外部不必创建该类的实例就可以直接使用 静态变量是一个引用.这种情况比较特殊,主要问题是由于静态变量是一个对象的引用,那么必须初始化这个对象之后才能将引用指向它. 因此如果…
由关键字static所定义的变量与方法,分别称为静态变量和静态方法,它们又都被称为静态成员 1.静态方法 无需本类的对象也可以调用此方法,调用形式为“类名.方法名”,静态方法常常为其他类提供一些方法而被定义.但是静态方法和非静态方法在定义时有两个需要注意的点 (1)静态方法只能访问静态数据,而非静态方法既能访问静态数据也能访问非静态数据. (2)静态方法中只能访问静态方法,而非静态方法既能访问静态方法也能访问非静态方法. 造成原因: 静态方法会随着类的定义而分配和装载进内存中,而且只被分配了一个…
Java 中(静态)变量.(静态)代码块的执行顺序 非原创 本文讨论 Java 中(静态)变量.(静态)代码块的执行顺序 首先创建 3 个类 1.Foo 类 public class Foo { public Foo(String word) { System.out.println(word); } } 2.Parent 类 public class Parent { static Foo FOO = new Foo("Parent's static parameter"); Foo…
C++和Java中都有的一个静态关键字Static,可以放在类中的变量或者函数之前,就成了静态变量或者静态函数. 静态变量又分为静态全局变量和静态局部变量,可参见网上大神总结的C++全局变量,局部变量,静态全局变量,静态局部变量的区别.在类中的静态变量在定义时需要用类名引导,对其访问时,使用类名或者对象名都可以.一般来说静态变量是用来保存流动变化的对象的个数的. 类中的静态函数和普通的成员函数的区别是它可以不通过类的对象调用的,因为它根本就没有对象,而且也不能访问类中非静态的成员.静态函数可以只…
主要是记录一个奇葩的现象,java类中的静态变量,不仅可以通过类名称直接调用,而且还可以通过类的实力对象调用,java是不存在静态类的,如果非要用静态的类那就是内部类. 类中的静态变量是存储在JVM方法区中,线程共享的. public class HasStatic { public static int x = 100; public static void main(String args[]) { HasStatic hasStatic1 = new HasStatic(); hasSta…
回顾这两个关键字前,先考虑一个问题: Static变量存储在JVM中的位置,或者说static变量是如何被加载的? JVM会把类的静态方法和静态变量在类加载的过程中读入方法区(Method Area),相当于常驻内存,如果一个方法或者变量声明为static,可以节约内存,不必要为每个对象实例化的时候分配内存. >>final关键字 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.final类不能被继承,没有子类,f…
一.静态成员 对静态成员最简单的解释,静态成员属于整个类而不属于某个对象,所以又叫做类变量.一个类不管创建多少个实例对象,静态变量在内存中有且只有一个(调用方法用类名调用). 通常的非静态变量称为实例变量,只有实例化后才可使用. 二.静态方法 类似于静态变量,在类装载时被载入内存,不会自动销毁,不用实例化,且静态方法不能被重写. 静态方法只能访问类中的静态变量和静态方法不能访问实例变量和实例方法(因为静态方法在java虚拟机中在对象之前被加载,如果静态方法要访问实例变量或者方法可能其还没被创建)…
本小节的教程无前置教程,可直接学习,篇幅很短. 本教程浓缩起来就是一句话:函数中的静态变量在调试过程中保留值.所以需要谨慎对待. 什么意思?请先不要一步一步对着做,而整体地看一遍下面的过程: 第一步:创建一个空工程(C++ Basic Code),名为LearnArray: 第二步:创建两个Actor类分别称为:MyActor和sand: 第三步:在MyActor中有tick函数如下: ▼代码开始 // Called every frame void AMyActor::Tick(float D…
Java 中的静态嵌套类和非静态嵌套类 术语:嵌套类分为两类:静态嵌套类和非静态嵌套类.声明 static 的嵌套类称为静态嵌套类,非静态嵌套类也称为内部类. class OuterClass { private static String msg = "GeeksForGeeks"; public static class NestedStaticClass { public void printMessage() { System.out.println("Message…
1.编写一个接口类 如:Subject package com.neusoft.pattern.staticProxy; /** * <p>Title:</p> * <p>Description:代理接口对象</p> * <p>Copyright:Copyright (c) 2018</p> * <p>Company:东软集团股份有限公司</p> * CreateDate:2018/4/19 0019 下午 1…
Java中的成员变量和局部变量 一:成员变量: 成员变量在类中定义,用来描述对象将要有什么 成员变量可以被本类的方法使用,也可以被其他类的方法使用,成员变量的作用域在整个类内部都是可见的 二:局部变量: 在类的方法中定义,在方法中临时保存 只能被当前方法使用,局部变量的作用域仅限于定义它的方法 如: public class Telphone { float screen; //成员变量 float cpu; //成员变量 float mem; //成员变量 public void call()…
静态变量(static):有局部变量,也有全局变量. 静态局部变量:在函数体内用static说明的变量称为静态局部变量,属于静态类别. 特点: (1)它占据一个永久性的存储单元.随着文件的存在而存在. (2)静态局部变量是在编译时赋初值,在程序执行期间,一旦存储单元中 的值改变,就不会再执行赋初值的语句.未赋初值的变量其值为0. #include "stdio.h" int f(int a) { int b=0; static int c=3;//有static和没有static的输出…
JAVA中如何获取变量的类型? package xiya; public class Demo { public static void main(String[] args) { String type = getType("123"); System.out.println(type.substring(type.lastIndexOf('.') + 1, type.length())); } public static String getType(Object o) { ret…
深入理解Java中配置环境变量 配置的目的: 本来只在安装JDK的bin目下能运行java.exe,javac.exe,jar.exe,javadoc.exe等Java开发工具包命令,我们现在想让在所有目录下都能运行这些命令. 配置的解决途径: 将这个目录放在windows的环境变量path中即可 找所需命令的过程: 如果想运行javac.exe命令,先在自己的文件夹里面找有没有这个,没有就去电脑的path里面找 通俗理解: 配置classpath的过程就像我们把钱存在银行的过程,然后在世界各地…
一文搞懂Java环境变量 记得刚接触Java,第一件事就是配环境变量,作为一个初学者,只知道环境变量怎样配,在加上各种IDE使我们能方便的开发,而忽略了其本质的东西,只知其然不知其所以然,随着不断的深入,终于明白了Java环境变量所代表的的含义. 首先我们来看一下Java中的环境变量,以我自己的为例 JAVA_HOME:C:\Program Files\Java\jdk1.8.0_144 PATH:%JAVA_HOME%\bin CLASSPATH:.(英文下的一个. 有的版本是.; 还有后面跟…
matlab中的静态变量和全局变量 1.静态变量 在matlab中,和其他语言一样,函数中的变量一把都是局部变量,也就是说,在函数调用完毕后,变量就会被释放.但是有些时候回希望上次改变的变量在下一次调用时也能发挥作用.这时候就要永达静态变量. 关键字: persistent 用例: function rndNum = rnd(x) %produce random numbers persistent x; if isempty(x) x=0.5; end a = 17; b = 139; c =…
java中的变量分为成员变量(又叫实例变量).静态变量和局部变量. 1.成员变量 1.1 成员变量(实例变量)是在类中定义的非static修饰的变量,可以不用赋初始值,不同的数据类型有默认的初始值. package test; import org.junit.Test; public class VariableTest { byte bt; short s; int age; long l; float f; double d; char c; boolean flag; String na…
最近在补<thinking in java>...有一节提到了加载类需要做的一些准备...我照着书本敲了一下代码...同时稍微修改了一下书本上的代码.... package charpter14; import java.util.Random; class Initable{ static{ System.out.println("haha"); } static final int staticFinal = 47; static final int staticFin…
在android中,要少用静态变量. 我现在做的一个应用中,之前的开发人员使用静态变量来存储cookie,这个全局的静态变量用来验证身份. 这时客户反应,应用长时间不使用,再次使用,会提示身份过期. 后来经查,问题基本确定在静态变量上. 上stackoverflow查了android中static变量的生命周期,有人这么说 Lifetime of a static variable: A static variable comes into existence when a class is l…
package Test; /** * Created by wangbin10 on 2018/7/9. * 我们知道静态变量属于类级别变量,对应每个类只有一份,类的所有实例共有一份,而成员变量则分别属于每个对象: * 那么在类的继承中,父类的静态变量和成员变量,子类都会继承,继承的原则是什么?通过下面的测试,我们的结论是: * 1.不仅类的对象共享类的静态变量,父类的所有子类对象也都共享父类的静态变量,有且仅有一份,对其进行修改,会影响到所有类及对象: * 2.子类复制父类的成员变量,每个子…
c#的静态变量是在对象生成的时候分配内存空间的,而不是函数执行的时候. 如果在函数里定义,那么这个变量就需要在函数执行的时候分配内存空间,这是C#不允许的,至于为什么不允许,个是因为垃圾回收机制的问题. class   Studetn { static string Name; public string GetName() { } 以上是正确的 public static string  UserName() { static string _name;//错误的 } }…
1.首先分析Java中的三种不同变量的区别,如下表所示   概念 默认值 其他 类变量 也叫静态变量,是类中独立于方法之外的变量 用static 修饰 有默认初始值,系统自动初始化. 如boolean默认为false. 可以被public,protect,private,static等修饰符修饰 成员变量 也叫实例变量,也是独立于方法之外的变量 没有static修饰 没有默认值,必须进行初始化. 可以被public,protect,private,static等修饰符修饰 局部变量 类的方法中的…
Java 中可以通过初始化块进行数据赋值.如: 在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块.如果使用 static 修饰初始化块,就称为静态初始化块. 需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量. 我们来看一段代码: 运行结果: 通过输出结果,我们可以看到,程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法.由于静态初始化块只在类加载时执行一次,所以当再次创建对…
许多程序设计语言都有自己的办法告诉编译器某个数据是"常数".常数主要应用于下述两个方面: (1) 编译期常数,它永远不会改变 (2) 在运行期初始化的一个值,我们不希望它发生变化 对于编译期的常数,编译器(程序)可将常数值"封装"到需要的计算过程里.也就是说,计算可在编译期间提前执行,从而节省运行时的一些开销.在Java中,这些形式的常数必须属于基本数据类型(Primitives),而且要用final关键字进行表达.在对这样的一个常数进行定义的时候,必须给出一个值.…