本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/216
Java基础(8)-Java变量类型
在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下:
type identifier [ = value][, identifier [= value] ...] ;
格式说明:type为Java数据类型。identifier是变量名。可以使用逗号隔开来声明多个同类型变量。
以下列出了一些变量的声明实例。注意有些包含了初始化过程。
int a, b, c; // 声明三个int型整数:a、 b、c int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值 byte z = 22; // 声明并初始化 z String s = "joshua317"; // 声明并初始化字符串 s double pi = 3.14159; // 声明了双精度浮点型变量 pi char x = 'x'; // 声明变量 x 的值是字符 'x'。
Java语言支持的变量类型有:
package com.joshua317; /** * @author joshua317 */ public class Variable { /** * 类变量 */ static int clicks = 0; /** * 实例变量 */ String name; public void fun() { /** * 局部变量 */ int i = 0; } }
在以下实例中num是一个局部变量。定义在nums()方法中,它的作用域就限制在这个方法中。
package com.joshua317; public class Main { public static void main(String[] args) { Test test = new Test(); test.nums(); } } class Test { public void nums() { int num = 0; num = num + 6; System.out.println("新的数值为:" + num); } }
运行结果如下:
新的数值为:6
下面的例子中 num 变量没有初始化,所以在编译时会出错:
package com.joshua317; public class Main { public static void main(String[] args) { Test test = new Test(); test.nums(); } } class Test { public void nums() { int num; num = num + 7; System.out.println("新的数值为:" + num); } }
运行结果如下:
Error:(13, 15) java: 可能尚未初始化变量num
package com.joshua317; public class Main { public static void main(String[] args) { Employee empOne = new Employee("joshua317"); empOne.setSalary(1000.0); empOne.printInfo(); } } class Employee{ /** * 这个实例变量对子类可见 * name */ public String name; /** * 私有变量,仅在该类可见 * salary */ private double salary; /** * 在构造器中对name赋值 * @param empName */ public Employee (String empName){ this.name = empName; } /** * 设定salary的值 * @param empSal */ public void setSalary(double empSal){ this.salary = empSal; } /** * 打印信息 */ public void printInfo(){ System.out.println("名字 : " + this.name); System.out.println("薪水 : " + this.salary); } }
运行结果如下:
名字 : joshua317 薪水 : 1000.0
import java.io.*; public class Employee { //salary是静态的私有变量 private static double salary; // DEPARTMENT是一个常量 public static final String DEPARTMENT = "开发人员"; public static void main(String[] args){ salary = 10000; System.out.println(DEPARTMENT+"平均工资:"+salary); } }
实例编译运行结果如下:
开发人员平均工资:5000.0
局部变量、实例变量和静态变量的区别
局部变量 | 实例变量 | 静态变量 | |
---|---|---|---|
定义位置 | 方法中/代码块中,或者方法的形式参数 | 在类中,方法外 | 在类中,方法外 |
初始化值 | 无默认初始化值,先定义,赋值后才能使用 | 有默认初始化值 | 有默认初始化值 |
调用方式 | 局部调用 | 对象调用 | 类名调用、对象调用 |
存储位置 | 栈中 | 堆中 | 方法区 |
声明周期 | 与方法/代码块共存亡 | 与对象共存亡 | 与类共存亡 |
别名 | 无 | 实例属性、普通成员变量 | 类变量、静态属性 |
实例变量:
(1)实例变量定义在类中,在整个类中都可以被访问。
(2)实例变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。
(3)实例变量有默认初始化值,比如数值型的默认值为0,字符串类型的默认值是null。
局部变量:
(1)局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。
(2)局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。
(3)局部变量没有默认初始化值
在使用变量时需要遵循的原则为:就近原则
首先在局部范围找,有就使用;接着在成员位置找
(1)两个变量的生命周期不同
实例变量随着对象的创建而存在,随着对象被回收而释放。
静态变量随着类的加载而存在,随着类的消失而消失。
(2)调用方式不同
实例变量只能被对象调用。
静态变量可以被对象调用,还可以被类名调用。
(3)别名不同
实例变量也称为普通成员变量。
静态变量也称为类变量。
(4)数据存储位置不同
实例变量存储在堆内存的对象中,所以也叫对象的特有数据。
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/216