1、变量类型
变量其实通过一个标记调用内存中的值,而变量名就是这个标记的名称,但是万一这个标记已经被提前占用或者解释器认为这个标记是不合法的,那么就会报错。
在Java中,有不同类型的变量,例如:
String
:存储文本字符串,例如,“cjavapy”
。 字符串值用双引号引起来int
:存储整数(整数),不带小数,例如,123
或-123
float
:存储浮点数,带小数,例如,19.99
或-19.99
char
:存储单个字符,例如,'a'
或'B'
。 字符值用单引号引起来boolean
:存储具有两种状态的值:true
或false
2、定义声明变量
要创建变量,必须指定类型并为其分配值:
语法
type variable = value;
其中type是Java的一种类型,例如,int
或String
,而variable
是Java的变量名,例如,x
或name
,=
用于为变量分配值。
要创建一个应存储文本字符串的变量,请看以下示例:
例如:
创建类型为String
的名为name的变量,并为其分配值“cjavapy”:
String name = "cjavapy"; System.out.println(name);
要创建一个应该存储数字的变量,请看以下示例:
例如:
创建类型为int
的名为myNum的变量,并为其分配值15:
int myNum = 15; System.out.println(myNum);
还可以在不分配值的情况下声明变量,然后在以后分配值:
例如:
int myNum; myNum = 15; System.out.println(myNum);
请注意,如果将新值分配给现有变量,它将覆盖以前的值:
例如:
将myNum
的值从15
更改为20
:
int myNum = 15; myNum = 20; // myNum 的值是 20 System.out.println(myNum);
3、final 变量
用final关键字修饰的变量,只能进行一次赋值操作,并且在生存期内不可以改变它的值。如果不想之后的代码覆盖现有值,则可以添加final
关键字。
例如:
final int myNum = 15; myNum = 20; // 会报错: cannot assign a value to a final variable
4、其它类型变量
定义声明其它类型变量的示例代码。
例如:
int myNum = 5; float myFloatNum = 5.99f; char myLetter = 'D'; boolean myBool = true; String myText = "Hello";
5、打印输出变量
println()
方法通常用于显示变量。
要将文本和变量拼接在一起成一个字符串,请使用+
字符:
例如:
String name = "cjavapy"; System.out.println("我是 " + name);
还可以使用+
字符将两个字符串变量拼接成一个字符串:
例如:
String firstName = "cjavapy"; String lastName = ".com"; String fullName = firstName + lastName; System.out.println(fullName);
对于数字值,+
字符用作数学运算符(请注意,此处我们使用int
(整数)变量):
例如:
int x = 5; int y = 6; System.out.println(x + y); // 输出 x + y的值
6、定义声明多个变量
要声明多个相同类型的变量,请使用逗号分隔的列表:
例如:
int x = 5, y = 6, z = 50; System.out.println(x + y + z);
7、Java 标识符
所有Java变量必须使用唯一的名称标识。
这些唯一的名称称为标识符。
标识符可以是短名称(如x
和y
),也可以是更具描述性的名称。
注意:建议使用描述性名称,以创建可理解和可维护的代码:
例如:
// 通过变量名就知道存的是年龄 int age = 60; // 变量名可以,但是不好理解 int a = 60;
构造变量名称(唯一标识符)的一般规则是:
- 名称可以包含字母,数字,下划线和$
- 名称必须以字母开头
- 名称应以小写字母开头,并且不能包含空格
- 名称也可以以$和_开头(但在本教程中我们将不使用它)
- 名称区分大小写( myVar 和 myvar 是不同的变量)
- 保留字(例如,Java关键字,例如,
int
或boolean
)不能用作名称
标识符用来命名常量、变量、类和类的对象等。因此,一个良好的编程习惯要求命名标识符时,应赋予它一个有意义或有用途的名字。
6、Java 局部变量
局部变量声明在方法、构造方法或者语句块中;局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁,访问修饰符不能用于局部变量,局部变量只在声明它的方法、构造方法或者语句块中可见,局部变量是在栈上分配的。局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
例如,
package com.cjavapy.test; public class Test{ public void say(){ int age = 0;//声明变量需要初始化,没有初始化编译时会报错 age = age + 3; System.out.println("cjavapy的年龄是: " + age); } public static void main(String[] args){ Test test = new Test(); test.say(); } }
7、实例变量
实例变量是声明在类中但不在方法、构造方法或语句块中的变量。每当一个对象被实例化时,实例变量的值会随之确定,且实例变量在对象创建时创建,在对象被销毁时销毁。实例变量的值通常至少被一个方法、构造方法或语句块引用,以便外部能够通过这些方式访问实例变量的值。
实例变量可以在使用之前或使用之后声明,并且可以使用访问修饰符进行修饰。通常建议将实例变量设为私有,以保护数据的封装性,并通过访问修饰符使其对子类可见。实例变量对于类中的方法、构造方法或语句块是可见的。
实例变量具有默认值。例如,数值型变量的默认值为 0
,布尔型变量的默认值为 false
,引用类型变量的默认值为 null
。实例变量的值可以在声明时赋值,也可以在构造方法中进行赋值。
在访问实例变量时,通常可以直接通过变量名访问;然而,在静态方法中或其他类中访问时,应使用完全限定名 ObjectReference.VariableName
。
例如,
public class Person { // 实例变量 private String name; private int age; // 构造方法 public Person(String name, int age) { this.name = name; // 给实例变量赋值 this.age = age; // 给实例变量赋值 } // 获取name的实例方法 public String getName() { return name; } // 获取age的实例方法 public int getAge() { return age; } // 设置name的实例方法 public void setName(String name) { this.name = name; } // 设置age的实例方法 public void setAge(int age) { this.age = age; } public static void main(String[] args) { // 创建对象并初始化实例变量 Person person = new Person("Alice", 30); // 访问实例变量值 System.out.println("Name: " + person.getName()); System.out.println("Age: " + person.getAge()); // 修改实例变量值 person.setName("Bob"); person.setAge(35); // 输出修改后的实例变量值 System.out.println("Updated Name: " + person.getName()); System.out.println("Updated Age: " + person.getAge()); } }
8、类变量(静态变量)
类变量,也称为静态变量,是在类中通过 static
关键字声明的,但必须位于方法之外。无论一个类实例化多少个对象,类变量始终只有一份拷贝。静态变量通常很少单独使用,除了被声明为常量时。静态变量是指被声明为 public
、private
、final
和 static
类型的变量,并且在初始化后不可更改。静态变量储存在静态存储区,在第一次被访问时创建,并在程序结束时销毁。与实例变量类似,静态变量的可见性也取决于其访问修饰符。为了使静态变量对类的使用者可见,通常将其声明为 public
类型。
静态变量的默认值与实例变量类似,数值型变量的默认值为 0
,布尔型的默认值为 false
,引用类型的默认值为 null
。静态变量的值可以在声明时赋值,也可以在构造方法中指定,还可以通过静态语句块进行初始化。
静态变量通常通过 ClassName.VariableName
的方式来访问。当类变量被声明为 public static final
类型时,其名称一般建议使用大写字母。如果静态变量不是 public
和 final
类型,其命名方式与实例变量和局部变量相同。
例如,
package Variable; public class VariableDemo { //实例变量 int a; //静态变量 static int b; public static void main(String[] args) { //静态变量可以直接被类调用,实例变量不可以 System.out.println(VariableDemo.b); //新建一个对象 variableDemo VariableDemo variableDemo = new VariableDemo(); //实例变量和静态变量都可以被对象调用,默认值为0或null System.out.println(variableDemo.a);//0 System.out.println(variableDemo.b);//0 //再新建两个对象 variableDemo1 、variableDemo2 VariableDemo variableDemo1 = new VariableDemo(); VariableDemo variableDemo2 = new VariableDemo(); //对象variableDemo将静态变量b的值改变 variableDemo.b=10; //静态变量实质上是全局变量,其中一个变量将其值改变, //其他对象得到的都是改变后的结果 System.out.println(VariableDemo.b);//10 System.out.println(variableDemo.b);//10 System.out.println(variableDemo1.b);//10 System.out.println(variableDemo2.b);//10 //对象variableDemo将实例对象a的值改变 variableDemo.a = 15; //实例变量属于对象私有,某一个对象将其值改变,不影响其他对象 System.out.println(variableDemo.a);//15 System.out.println(variableDemo1.a);//0 System.out.println(variableDemo2.a);//0 } }