Java知多少(20)变量的作用域

在Java中,变量的作用域分为四个级别:类级、对象实例级、方法级、块级。

类级变量又称全局级变量或静态变量,需要使用static关键字修饰,你可以与 C/C++ 中的 static 变量对比学习。类级变量在类定义后就已经存在,占用内存空间,可以通过类名来访问,不需要实例化。

对象实例级变量就是成员变量,实例化后才会分配内存空间,才能访问。

方法级变量就是在方法内部定义的变量,就是局部变量。

块级变量就是定义在一个块内部的变量,变量的生存周期就是这个块,出了这个块就消失了,比如 if、for 语句的块。块是指由大括号包围的代码,例如:

1 {
2 int age = 10;
3 String name = "www.cnblogs.com";
4 // 正确,在块内部可以访问 age 和 name 变量
5 System.out.println( name + "已经" + age + "岁了");
6 }
7 // 错误,在块外部无法访问 age 和 name 变量
8 System.out.println( name + "已经" + age + "岁了");

说明:

  • 方法内部除了能访问方法级的变量,还可以访问类级和实例级的变量。
  • 块内部能够访问类级、实例级变量,如果块被包含在方法内部,它还可以访问方法级的变量。
  • 方法级和块级的变量必须被显示地初始化,否则不能访问。

演示代码:

 1 public class Demo{
 2 public static String name = "博客园"; // 类级变量
 3 public int i; // 对象实例级变量
 4 // 属性块,在类初始化属性时候运行
 5 {
 6 int j = 2;// 块级变量
 7 }
 8 public void test1() {
 9 int j = 3; // 方法级变量
10 if(j == 3) {
11 int k = 5; // 块级变量
12 }
13 // 这里不能访问块级变量,块级变量只能在块内部访问
14 System.out.println("name=" + name + ", i=" + i + ", j=" + j);
15 }
16 public static void main(String[] args) {
17 // 不创建对象,直接通过类名访问类级变量
18 System.out.println(Demo.name);
19 // 创建对象并访问它的方法
20 Demo t = new Demo();
21 t.test1();
22 }
23 }

运行结果:

微学苑
name=博客园, i=0, j=3

系列文章:

Java知多少(1)语言概述

Java知多少(2)虚拟机(JVM)以及跨平台原理

Java知多少(3) 就业方向

Java知多少(4)J2SE、J2EE、J2ME的区别

Java知多少(5) Java开发环境的搭建

Java知多少(6)第一个程序示例

Java知多少(7)类与对象

Java知多少(8)类库及其组织结构

Java知多少(9) import及Java类的搜索路径

Java知多少(10)数据类型及变量

Java知多少(11)数据类型转换

Java知多少(12)运算符

Java知多少(13)流程控制

Java知多少(14)数组

Java知多少(15)字符串

Java知多少(16)StringBuffer与StringBuider

Java知多少(17)强调一下编程风格

Java知多少(18)类的定义及其实例化

Java知多少(19)访问修饰符(访问控制符)

Java知多少(20)变量的作用域

时间: 2024-10-04 12:52:25

Java知多少(20)变量的作用域的相关文章

Java中的变量与变量的作用域

关于Java中的变量及变量的作用域 关于Java中的变量及变量的作用域 0. 变量的概念 在程序运行期间,系统可以为程序分配一块内存单元,用来存储各种类型的数据.系统分配的内存单元要使用一个标记符来标识,这种内存单元中的数据是可以更改的.所有叫变量.定义变量的标记符就是变量名,内存单元中所装载的数据就是变量值.用一个变量定义一块内存以后,程序就可以用变量名代表这块内存中的数据.根据所存储数据类型的不同,有各种不同类型的变量. 1. Java的变量类型 2. 注意变量的有效取值范围 系统为不同的变

java变量的作用域

1.可分为成员变量和局部变量 两者的作用域不同:局部变量的作用域仅限于定义它的方法,方法外部无法访问,成员变量的作用域在整个类内部都可以访问如果访问权限允许的话,类外部也可以使用 初始值不同:对于成员变量,如果类内部没有给初始值,java会给它一个默认值,如数据类型值为0,引用类型的值为null,但java不会给局部变量赋予初值,因此局部变量必须要定义赋值之后才能使用局部变量可以和成员变量同名,在使用时,局部变量的优先级更高

Java知多少(10)数据类型及变量

Java 是一种“强类型”的语言,声明变量时必须指明数据类型.变量(variable)占据一定的内存空间.不同类型的变量占据不同的大小. Java中共有8种基本数据类型,包括4 种整型.2 种浮点型.1 种字符型.1 种布尔型,请见下表. Java基本数据类型 数据类型 说明 所占内存 举例 备注 byte 字节型 1 byte 3, 127   short 短整型 2 bytes 3, 32767   int 整型 4 bytes 3, 21474836   long 长整型 8 bytes

Java基础 变量的作用域

变量的作用域: 1. Java用一对大括号作为语句块的范围,称为作用域. 2.作用域中的变量不能重复定义. 3.离开作用域,变量所分配的内存空间将被JVM回收. public void name(){ private String name = "rudy"; System.out.println("name"+name); { String name = "rd"; System.out.println("name"+nam

6.Java变量的作用域

在Java中,变量的作用域分为四个级别:类级.对象实例级.方法级.块级. 类级变量又称全局级变量或静态变量,需要使用static关键字修饰,你可以与 C/C++ 中的 static 变量对比学习.类级变量在类定义后就已经存在,占用内存空间,可以通过类名来访问,不需要实例化. 对象实例级变量就是成员变量,实例化后才会分配内存空间,才能访问. 方法级变量就是在方法内部定义的变量,就是局部变量. 块级变量就是定义在一个块内部的变量,变量的生存周期就是这个块,出了这个块就消失了,比如 if.for 语句

Java知多少(完结篇)

Java知多少(1)语言概述 Java知多少(2)虚拟机(JVM)以及跨平台原理 Java知多少(3) 就业方向 Java知多少(4)J2SE.J2EE.J2ME的区别 Java知多少(5) Java开发环境的搭建 Java知多少(6)第一个程序示例 Java知多少(7)类与对象 Java知多少(8)类库及其组织结构 Java知多少(9) import及Java类的搜索路径 Java知多少(10)数据类型及变量 Java知多少(11)数据类型转换 Java知多少(12)运算符 Java知多少(1

Java知多少(上)

ava知多少(1)语言概述 Java知多少(2)虚拟机(JVM)以及跨平台原理 Java知多少(3) 就业方向 Java知多少(4)J2SE.J2EE.J2ME的区别 Java知多少(5) Java开发环境的搭建 Java知多少(6)第一个程序示例 Java知多少(7)类与对象 Java知多少(8)类库及其组织结构 Java知多少(9) import及Java类的搜索路径 Java知多少(10)数据类型及变量 Java知多少(11)数据类型转换 Java知多少(12)运算符 Java知多少(13

Java知多少(24)包装类、拆箱和装箱详解

虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备“对象”的特性——不携带属性.没有方法可调用. 沿用它们只是为了迎合人类根深蒂固的习惯,并的确能简单.有效地进行常规数据处理. 这种借助于非面向对象技术的做法有时也会带来不便,比如引用类型数据均继承了 Object 类的特性,要转换为 String 类型(经常有这种需要)时只要简单调用 Object 类中定义的toString()即可,而基本数据类型转换为 String 类型则要麻烦得

Java知多少(23)类的基本运行顺序

我们以下面的类来说明一个基本的 Java 类的运行顺序: 1 public class Demo{ 2 private String name; 3 private int age; 4 public Demo(){ 5 name = "微学苑"; 6 age = 3; 7 } 8 public static void main(String[] args){ 9 Demo obj = new Demo(); 10 System.out.println(obj.name + "