变量即在程序运行中可以变化的量。
Java是一种强类型语言,每个变量都必须声明其类型。
Java变量时程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
变量名必须是合法的标识符。
Java中声明变量是一条完整的语句,每一个声明都必须以分号结束。
虽然可以在一个声明中定义多个变量,但为了代码的可读性不建议。
与变量相对应,常量即在程序中不能变化的值。
常量的值在初始化后无法再改变。
常量名一般使用大写字符。
final是修饰符,与static一样可以写在变量类型前的任意位置不存在先后关系。
吐槽有点多,原谅我先学了C#有点先入为主了,明明C#改良自Java的来着。
public class Demo7 { static int age; //类变量,全局变量 static char gender; //类变量,全局变量 static String name; //类变量,全局变量 static final int LENGTH = 1024; //类常量,全局常量 final static int WIDTH = 768; //类常量,全局常量 int identityCard; //实例变量 String occupation; //实例变量 final double PI = 3.14; //实例常量 final String PROJECT = "乌鸦の学习"; //实例常量 public static void main(String[] args) { int num1; //局部变量 final int num2 = 1; //局部常量 System.out.println(gender); //调用了类变量,打印结果为一个空格? System.out.println(name); //调用了类变量,打印结果为null System.out.println(LENGTH); //调用了类常量,打印结果为1024 System.out.println(WIDTH); //调用了类常量,打印结果为768 Demo7 test = new Demo7(); System.out.println(test.occupation); //调用了实例变量,打印结果为null System.out.println(test.identityCard); //调用了实例变量,打印结果为0 System.out.println(test.PI); //调用了实例常量,打印结果为3.14 System.out.println(test.PROJECT); //调用了实例常量,打印结果为乌鸦の学习 System.out.println(age); //调用了类变量,打印结果为0 int age = 10; //局部变量 System.out.println(age); //调用了局部变量,打印结果为10 } public void Text() { int num1; //局部变量,依然可以声明,不会与主函数冲突。 final int num2 = 1; //局部常量,依然可以声明,不会与主函数冲突。 int age; //局部变量,依然可以声明,不会与主函数冲突。 } }
类变量、常量
在声明变量前使用static关键字。
不用赋值即可使用,拥有当前数据类型的默认值。
从属于当前类,随着当前类的出现而出现,消失而消失。
很像C#的静态字段,用法也很像通过静态字段模拟全局变量。
实例变量、常量
从属与对象,作用域为整个类。
不用赋值即可使用,拥有当前数据类型的默认值。
使用方法为类实例化后调用。
很像C#调用静态类的方法,用实例化的类去“.”
仔细想了想可能更像C#中的属性吧涉及到构造函数的知识了,当时没用功啊。
局部变量、常量
从属于当前方法,作用域为当前方法
使用前必须赋值。
在当前方法内可以直接使用。
实际使用中测试,如果局部变量的变量名与类变量或实例变量的变量名相同,则局部变量声明后在其作用域内类变量与实例变量无法使用。详见以上代码。
所有变量、方法、类名命名需要见名知意。
变量名和方法名
使用驼峰原则,首单词小写,后面所有单词首字母大写。
常量名
全部使用大写字母,单词与单词用下划线连接。
类名
所有单词首字母大写。
遵守编程规范,养成良好的命名习惯能显著的增加代码可读性!
整型
默认值为0。
浮点类型
默认值为0.0。
字符类型
默认值虽然为u0000但其实还是0。
实际测试中打印了一个空格?但通过断点确认确实是0。
布尔类型
默认值为false。
引用类型
所有引用类型的默认值都是null。