随笔⑨ java中的变量 --- 类变量(静态变量),final变量,成员变量,局部变量

java中的变量 --- 类变量(静态变量),final变量,成员变量,局部变量

类变量(也叫静态变量)是类中独立于方法之外的变量用static 修饰静态变量随着类的加载而加载

final变量:用final关键字修饰,不能被修改。与static一起用可表示常量。

成员变量(也叫"实例变量"、"域"):也是类中独立于方法之外的变量,不过没有static修饰。可以不进行初始化,Java会自动进行初始化,如果是引用类型默认初始化为null,如果是基本类型例如int则会默认初始化为0。

局部变量是类的方法中的变量。必须要实例化,否则不同通过编译。局部变量运行时被分配在栈中,量大,生命周期短,如果虚拟机给每个局部变量都初始化一下,是一笔很大的开销,但变量不初始化为默认值就使用是不安全的。出于速度和安全性两个方面的综合考虑,解决方案就是虚拟机不初始化,但要求编写者一定要在使用前给变量赋值。

1 public class Variable{
2     static int allClicks=0;//类变量
3     String str="hello world";//实例变量
4     public void method(){
5         int i =0;//局部变量
6     }
7 }
时间: 2024-10-24 23:57:39

随笔⑨ java中的变量 --- 类变量(静态变量),final变量,成员变量,局部变量的相关文章

Java中的null对象也可以访问static成员变量和方法

声明:本博客为原创博客,未经允许,不得转载!小伙伴们如果是在别的地方看到的话,建议还是来csdn上看吧(链接为 http://blog.csdn.net/bettarwang/article/details/26515271),看代码和提问.讨论都更方便. 一般来说,一个类的对象要在实例化之后才可以访问类中的成员变量和方法.如果它还是null,通常意义上我们就认为它不能访问类中的成员.实际上确实不提倡这样,而且null对象确实不能访问实例成员(变量和方法),否则会引发NULLPointerExc

[转]Java初始化顺序总结 - 静态变量、静态代码块、成员变量、构造函数

Java初始化顺序1在new B一个实例时首先要进行类的装载.(类只有在使用New调用创建的时候才会被java类装载器装入)2,在装载类时,先装载父类A,再装载子类B3,装载父类A后,完成静态动作(包括静态代码和变量,它们的级别是相同的,安装代码中出现的顺序初始化)4,装载子类B后,完成静态动作类装载完成,开始进行实例化1,在实例化子类B时,先要实例化父类A2,实例化父类A时,先成员实例化(非静态代码)3,父类A的构造方法4,子类B的成员实例化(非静态代码)5,子类B的构造方法 先初始化父类的静

java中的关键字static(静态变量)和final定义常量

1 package point; 2 3 class Point { 4 5 int x = 0; 6 int y = 0; 7 static int z = 100; // 定义静态变量z,类变量 8 static final double PI = 3.1415926;// final定义常量,它的值在运行时不能被改变 9 10 Point(int a, int b) { 11 //PI=3.1415926; 12 /* 13 * 当使用静态常量的时候,不能在构造函数中初始化, 因为静态时,

Java初始化顺序(静态变量、静态初始化块、实例变量、实例初始化块、构造方法)

1.执行顺序 1.1.一个类中的初始化顺序 (静态变量.静态初始化块)=>(变量.初始化块.构造器). 1.2.两个具有继承关系类的初始化顺序 父类的(静态变量.静态初始化块)=> 子类的(静态变量.静态初始化块)=> 父类的(变量.初始化块.构造器)=> 子类的(变量.初始化块.构造器). 示例如下:(结果见注释) 1 class A { 2 public A() { 3 System.out.println("Constructor A."); 4 } 5

随笔② Java中的关键字 --- final关键字

一:final关键字 ① final变量:凡是对成员变量或者本地变量(在方法中的或者代码块中的变量称为本地变量)声明为final的都叫作final变量.final变量经常和static关键字一起使用,作为常量.final变量是只读的. ② final方法:方法前面加上final关键字,代表这个方法不可以被子类的方法重写.如果你认为一个方法的功能已经足够完整了,子类中不需要改变的话,你可以声明此方法为final.final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再

Java中的内存处理机制和final、static、final static总结

Java中的内存处理机制和final.static.final static总结 装载自:http://blog.csdn.net/wqthaha/article/details/20923579 Java程序运行在JVM上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性.所以在学习Java内存分配原理的时候一定要牢记这一切都是在JVM中进行的,JVM是内存分配原理的基础与前提.         一个完整的Java程序运行过程会涉及以

OC 实例变量(Instance Var)和成员变量(member var)区别

摘要:  Objective-C  引入了“实例变量"的概念,但同时, 也经常出现 “成员变量”的声音. 到底什么是实例变量,什么是成员变量,二者的区别是什么呢? 今天查看apple 的官方文档时(如下).https://developer.apple.com/library/mac/referencelibrary/GettingStarted/Learning_Objective-C_A_Primer/index.html 发现了一个新的名词: 成员变量(member variable).

随笔⑦ Java中的比较 ==,equals以及精度对比较的影响

Java中的比较 ==,equals ① 对于==,如果是作用于基本数据类型的变量,则直接比较其存储的"值"是否相等:如果是作用于引用类型的变量,则比较的是所指向的对象的地址. ② 对于equals方法,注意:equals方法不能作用于基本数据类型的变量: 如果没有对equals方法进行重写,则比较的是引用类型变量所指向的对象的地址:诸如String,Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容. ③ Float类型值的比较: 一般情况下,浮点数是不直接进行

java中初始化块、静态初始化块和构造方法

(所谓的初始化方法init()是另一回事, 在构造方法之后执行, 注意不要混淆) 在Java中,有两种初始化块:静态初始化块和非静态初始化块.它们都是定义在类中,用大括号{}括起来,静态代码块在大括号外还要加上static关键字. 非静态初始化块(构造代码块):作用:给对象进行初始化.对象一建立就运行,且优先于构造函数的运行.与构造函数的区别:非静态初始化块给所有对象进行统一初始化,构造函数只给对应对象初始化.应用:将所有构造函数共性的东西定义在构造代码块中. 静态初始化块:作用:给类进行初始化