码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象_成员变量和局部变量的区别

时间:2015-03-05 22:18:25      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:

作用范围:

  局部变量作用于函数中或者语句中(定义在函数或语句中(比如for语句),必须初始化)

  成员变量作用于整个类中(定义在类中,有默认初始化值,可以定义显示初始化值)

 

在内存中的位置:

  成员变量在堆内存中.因为对象的存在,才在内存中存在.

   局部变量在栈内存中.

 

如果成员变量没有定义显示初始化,那么系统默认会初始化(在堆内存中的变量都会有默认初始化值)
byte 0
short 0
int 0
long 0L
double 0.0D
float 0.0f
boolean false
引用数据类型默认初始化值都为null

 1 public class VariableDemo {
 2     public static void main(String[] args) {
 3         Car c=new Car();
 4         c.color="blue";
 5         c.run();
 6     }
 7 }
 8 class Car{
 9     //成员变量,在类中定义,作用于整个类中,有默认初始化值。(可以定义显示初始化)
10     String color="red";
11     int num=4;
12     //成员函数
13     void run(){
14         System.out.println(color+"...."+num);
15     }
16 }
1 class Car{
2     String color="red";
3     int num=4;
4     
5     void run(){
6         int num = 9;//如果局部定义了与成员变量一样的(同名)的变量,则访问时,访问的是局部num,如果没有就访问成员中的变量
7         System.out.println(color+"...."+num);
8     }
9 }

一个类访问另一个类中的非静态成员,必须创建该类对象

 

1 class Person{
2     int age;
3     public void shurt(){
4         int age = 89;//局部变量必须初始化
5         System.out.println(age);//因为在该函数中有了一个age变量所以访问的时候访问的是shurt函数内部的age,外部的那么成员变量age被隐藏起来了
6     }
7 }
8 //java回收机制的方法:finalize();
9 //唤醒java回收机制的方法System.gc();(调用该方法java虚拟机不一定立刻执行垃圾回收机制)
 1 public class VariableTest2 {
 2     public static void main(String[] args) {
 3         int x = 5;
 4         change(x);
 5         System.out.println(x);
 6     }
 7     public static int change(int x){
 8         return x = 4;
 9     }
10 }
11 //结果还是5,因为x是局部变量,当执行完change方法后,change方法中的x被释放,跟main方法中的x没关系

 

面向对象_成员变量和局部变量的区别

标签:

原文地址:http://www.cnblogs.com/LO-ME/p/3549940.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!