成员变量、局部变量、静态变量的区别及

成员变量在堆区,因为成员属于对象的一部分,而对象分配在对中

局部变量分配在占中,对象的引用也分配在栈中

静态变量分配在方法区的静态区中

1:成员变量和局部变量的区别

(1)在类中的位置不同

成员变量:类中方法外

局部变量:方法定义中或者方法声明上

(2)在内存中的位置不同

成员变量:在堆中

局部变量:在栈中

(3)生命周期不同

成员变量:随着对象的创建而存在,随着对象的消失而消失

局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

(4)初始化值不同

成员变量:有默认值

局部变量:没有默认值,必须定义,赋值,然后才能使用

(5)静态变量和成员变量的区别

A:所属不同

静态变量:属于类,类变量

成员变量:属于对象,对象变量,实例变量

B:内存位置不同

静态变量:方法区的静态区

成员变量:堆内存

C:生命周期不同

静态变量:静态变量是随着类的加载而加载,随着类的消失而消失

成员变量:成员变量是随着对象的创建而存在,随着对象的消失而消失

D:调用不同

静态变量:可以通过对象名调用,也可以通过类名调用

成员变量:只能通过对象名调用

2:类作为形式参数的问题?

(1)如果你看到一个方法需要的参数是一个类名,就应该知道这里实际需要的是一个具体的对象。

3:匿名对象

(1)没有名字的对象

(2)应用场景

A:调用方法,仅仅只调用一次的时候。

b:可以作为实际参数传递。

4:封装

(1)隐藏实现细节,提供公共的访问方式

(2)好处:

A:隐藏实现细节,提供公共的访问方式

B:提高代码的复用性

C:提高代码的安全性

(3)设计原则

把不想让外界知道的实现细节给隐藏起来,提供公共的访问方式

(4)private是封装的一种体现。

封装:类,方法,private修饰成员变量

5:private关键字

(1)私有的意义,可以修饰成员变量和成员方法

(2)特点:

被private修饰的后的成员只能在本类中被访问

(3)private的应用:

以后再写一个类的时候:

把所有的成员变量给private了

提供对应的getXxx()/setXxx()方法

6:this关键字

(1)代表当前类的引用对象

记住:哪个对象调用方法,该方法内部的this就代表那个对象

(2)this的应用场景:

A:解决了局部变量隐藏成员变量的问题

B:其实this还有其他的应用,明天讲解。

7:构造方法

(1)作用:用于对对象的数据进行初始化

(2)格式:

A:方法名和类名相同

B:没有返回值类型,连void都不能有

C:没有返回值

思考题:构造方法中可不可以有return语句呢?

可以。而是我们写成这个样子就OK了:return;

其实,在任何的void类型的方法的最后你都可以写上:return;

(3)构造方法的注意事项

A:如果我们没写构造方法,系统将提供一个默认的无参构造方法

B:如果我们给出了构造方法,系统将不再提供默认构造方法

如果这个时候,我们要使用无参构造方法,就必须自己给出。

推荐:永远手动自己给出无参构造方法。

(4)给成员变量赋值的方式

A:setXxx()

B:带参构造方法

8:代码:Student s = new Student();做了哪些事情?

(1)把Student.class文件加载到内存

(2)在栈内存为s开辟空间(s是对象的引用)

(3)在堆内存为学生对象申请空间

(4)给学生的成员变量进行默认初始化。null,0

(5)给学生的成员变量进行显示初始化。林青霞,27

(6)通过构造方法给成员变量进行初始化。刘意,30

(7)对象构造完毕,把地址赋值给s变量

10:static关键字

(1)静态的意思。可以修饰成员变量和成员方法。

(2)静态的特点:

A:随着类的加载而加载

B:优先与对象存在

C:被类的所有对象共享

这其实也是我们判断该不该使用静态的依据。

举例:饮水机和水杯的问题思考

D:可以通过类名调用

既可以通过对象名调用,也可以通过类名调用,建议通过类名调用。

(3)静态的内存图

静态的内容在方法区的静态区

(4)静态的注意事项;

A:在静态方法中没有this对象

B:静态只能访问静态

(6)main方法是静态的

public:权限最大

static:不用创建对象调用

void:返回值给jvm没有意义

main:就是一个常见的名称。

String[] args:可以接收数据,提供程序的灵活性

格式:java MainDemo hello world java

java MainDemo 10 20 30

static内存图分配:

时间: 2024-12-20 03:00:32

成员变量、局部变量、静态变量的区别及的相关文章

成员变量(实例变量)&局部变量&静态变量(类变量)的区别

成员变量(实例变量)&局部变量区别: (1)作用域 成员变量:针对整个类有效. 局部变量:只在某个范围内有效.(一般指的就是方法,语句体内) (2)存储位置 成员变量:随着对象的创建而存在,随着对象的消失而消失,存储在堆内存中. 局部变量:在方法被调用,或者语句被执行的时候存在,存储在栈内存中. 当方法调用完,或者语句结束后,就自动释放. (3)初始值 成员变量:有默认初始值. 局部变量:没有默认初始值,使用前必须赋值. 成员变量(实例变量)&静态变量(类变量)区别: A:调用方式 静态变

成员变量和局部变量,静态变量的区别

成员变量和局部变量,静态变量的区别 1.成员变量和局部变量的区别 1)在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上 2)在内存中的位置不同 成员变量:在堆内存(成员变量属于对象,对象进堆内存) 局部变量:在栈内存(局部变量属于方法,方法进栈内存) 3)生命周期不同 成员变量:随着对象的创建而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 4)初始化值不同 成员变量:有默认初始化值 局部变量:没有默认初始化值,必须定义,赋值,

面向对象——概念(成员变量、静态变量、成员方法、静态方法、垃圾回收机制、重载、包)

静态变量和成员变量的区别: 1.成员变量描述的是对象的特征,包含在对象之中.不同的对象成员变量彼此独立.一个对象成员变量的改变,不会影响其他对象. 静态变量独立在对象之外,是所有对象共享的变量.静态变量改变后会影响所有对象. 2.成员变量只能通过对象.的方式访问.而静态变量,可以通过对象.的方式访问,也可以通过类名.的方式访问.所以静态变量也称为类变量 3.成员变量存放在堆空间中,静态变量存放在数据段中. 静态方法和成员方法的区别: 1.静态方法加载时机在对象之前,可以通过对象.和类名.的方式访

[javase学习笔记]-8.2 成员变量与静态变量的差别

这一节我们看一看成员变量与静态变量的差别所在. 什么是静态变量呢?我们上节用statickeyword时就提到了静态变量.也就是说用statickeyword修饰的变量就是静态变量. 我们在6.4节学习了成员变量与局部变量的差别.这一节我们重点看看成员变量与静态变量之间的差别. 我们看代码: class Person { String name;//姓名,这是一个成员变量 static String country = "中国";//国籍,这是一个静态变量 public void pr

JVM存储位置分配——java中局部变量、实例变量和静态变量在方法区、栈内存、堆内存中的分配

Java中的变量根据不同的标准可以分为两类,以其引用的数据类型的不同来划分可分为“原始数据类型变量和引用数据类型变量”,以其作用范围的不同来区分可分为“局部变量,实例变量和静态变量”. 根据“Java中的变量与数据类型”中的介绍,“变量是在内存中分配的保留区域的名称.换句话说,它是一个内存位置的名称”,也就是说我们通过这个变量名字就可以找到一个指向这个变量所引用的数据的内存指针,根据变量的类型我们可以知道这个指针之后的几个字节里存储了这个变量所引用的数据. 所以,了解变量在方法区.栈内存.堆内存

JNI/NDK开发指南(七)——C/C++访问Java实例变量和静态变量

转载请注明出处:http://blog.csdn.net/xyang81/article/details/42836783 在上一章中我们学习到了如何在本地代码中访问任意Java类中的静态方法和实例方法,本章我们也通过一个示例来学习Java中的实例变量和静态变量,在本地代码中如何来访问和修改.静态变量也称为类变量(属性),在所有实例对象中共享同一份数据,可以直接通过[类名.变量名]来访问.实例变量也称为成员变量(属性),每个实例都拥有一份实例变量数据的拷贝,它们之间修改后的数据互不影响.下面看一

全局变量、局部变量、实例变量以及静态变量的区别

全局变量(globals): 也称为成员变量,属于某个类中定义的变量.在整个类中有效. 可分为: (1).类变量:又称静态变量,用static 修饰,可直接用类名调用,所有对象的同一个类变量都是共享同一块内存空间的. (2).实例变量:不用static修饰, 它只能通过对象调用 ,所有对象的同一个实例变量是共享不同的内存空间的. 局部变量(Local variables):是指那些在方法体中定义的变量以及方法的参数,它只在定义它的方法内有效.是相对于全局变量而言的. 当全局变量与局部变量同名时:

Java中的局部变量、成员变量和静态变量

直接看代码 public class Variable { // 静态变量,属于类的变量,且用关键字static声明,不属于实例,虽然可以通过实例来调用,但是不建议 private static int staticVar; // 成员变量,属于类对象的变量 private String instanceVar; public static void main(String[] args) { // 局部变量,在方法中申明的变量,不能在出了这个方法,即一对花括号{}之外 的地方使用 // 局部变

20141223--全局使用局部变量+静态变量-01

回顾 运算符:算术,比较,逻辑,赋值,三目,错误抑制,位运算(三码),自操作,字符串 执行结构:顺序,分支(if和switch),循环(for,while,do-while,foreach) 函数:自定义函数(函数名,参数(形参,实参),函数体,返回值) 自定义函数 返回值 返回值指的当函数调用结束以后,该函数给外部调用处返回一些列的数据(数据类型任意:八个数据类型) 如果函数没有任何返回值,可以理解为函数返回的是NULL. PHP中函数可以没有返回值. 参数传值 传值方式:值传递(默认的)和引

Java变量类型,实例变量 与局部变量 静态变量

实例变量: 实例变量在类中声明,但在方法的外面,构造函数或任何块. 当空间分配给某个对象在堆中,插槽为每个实例变量创建值. 当一个对象与使用关键字 “new” 来创建,在对象被销毁销毁创建的实例变量. 实例变量认为必须由一个以上的方法,构造函数或块,或一个对象的状态的关键部分必须出现在整个类中引用的值. 实例变量可以在使用前或后级的级别声明. 访问修饰符可以给出实例变量. 实例变量对于所有方法,构造函数和块在类中可见.通常,建议,使这些变量私有(接入层).然而能见度子类可以给这些变量与使用访问修