• 疯狂java学习笔记之面向对象(二)


    Java变量按其作用域可分为:成员变量和局部变量。注意:在Java中是没有全局变量这个概念的

    一、成员变量:

      成员变量是在类中定义的变量,具体可分为类变量与实例变量--有无static修饰

    实例变量的特点:

      没有创建实例前是不会分配内存空间的;

      从有实例开始,实例变量就存在了;

      实例被销毁,实例变量就不存在了;

      0~N个实例变量,程序每创建一个实例,系统就为该实例分配一块内存

    类变量的特点:

      从有类开始,类变量就存在了,一个JVM中类信息只要一个即可。

      每个JVM最多只加载一个类一次,系统就为该类分配一块内存.(加载类或创建对象时即会加载类变量)

    成员变量规则:

      系统会为成员变量执行默认的初始化基本类型初始值为0、0.0、u00000、false;引用类型初始值为null

    注意点:当程序通过实例来访问类变量的时候,由于类变量本身不属于实例因此底层实际上委托为通过类来访问。

    1 class Var{
    2     String name;
    3     int age;        //实例变量
    4     static  int num;//类变量
    5 }
     1 public class TestVar{
     2     public static void main(String[] args){
     3         //Var v; //编译时报v变量未被初始化
     4         //Var v = null; //当v为null时去调用num则会报空指针异常
     5         Var v = new Var() ;//实例变量必须由程序员初始化
     6         System.out.println(v.num);
     7 
     8         Var v2 = new Var();
     9         v.age = 11;
    10         System.out.println(v2.age);
    11         v.num = 99;
    12         System.out.println(v.num); //→ System.out.println(Var.num); 当程序通过实例来访问类变量时实际上都是通过类来访问的
    13     }
    14 }

    二、局部变量:

    局部变量是保存在相应的方法栈中的。

    局部变量规则:

      局部变量必须由程序员来赋值,系统不会对局部变量进行默认初始化

      局部变量绝对不允许同名。一个方法内方法内变量名不能与方法中代码块的变量名相同,但两个代码块中允许出现同名的局部变量

      局部变量只在代码块内有效,出了代码块则无效,形参则在当前方法内都是有效的

     1 public class LocalVar {
     2     public void info(String name){
     3             String s = "haha";
     4             //String name = "haha"; 编译报错 方法内参数名不能与形参相同
     5             {
     6                 //String s = "test"; //同一个方法中,方法块中的变量名不能与方法中的变量相同
     7                 String s1 = "test";
     8                 System.out.println(s1);
     9             }
    10             {
    11                 String s1 = "LocalTest";
    12                 System.out.println(s1);
    13             }
    14     }
    15 
    16     public static void main(String[] args){
    17         String s = "test"; //不同方法中,方法名是可以相同的 - 因为局部变量只在方法内有效
    18         LocalVar v2 = new LocalVar();
    19         v2.info("avv");
    20     }
    21 }
  • 相关阅读:
    The resource identified by this request is only capable of generating responses with characteristics
    javaweb写的在线聊天应用
    JavaScript写一个拼图游戏
    jQ插件--时间线插件和拖拽API
    Javascript写俄罗斯方块游戏
    详解jQ的support模块
    磁盘IO的性能指标 阻塞与非阻塞、同步与异步 I/O模型
    Airflow Python工作流引擎的重要概念介绍
    DEVOPS 运维开发系列
    MYSQL 两表 排除 重复记录
  • 原文地址:https://www.cnblogs.com/dtest/p/4157892.html
Copyright © 2020-2023  润新知