一、变量
- 变量是什么: 就是可以变化的量! 我们可以通过变量来操作一些内存中的数据。
- Java是一种强类型语言,每个变量都必须声明其类型。
- Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
type varName [=value] [{,varName[=value]}];
//数据类型 变量名 = 值; 可以使用逗号隔开来声明多个同类型变量
注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量名必须是合法的标识符。
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
理解:变量 可能就指代的是一块空间;假设 我内存中有这样的一块空间;变量就是指的这个空间;这个空间要放什么 ,我是不确定的;相当于这个位置是确定的;空间里要存什么东西 我是不确定的;;所以这就是变量。
public class Demo {
public static void main(String[] args) {
//int a,b,c;//不建议这样去写 非常非常的麻烦;没有初始化值
// 应该这样去做:
//int a=1,b=2,c=3; 这样写 不好,应该分成 3行;//程序的可读性
int a = 1;
int b = 2;
int c = 3;
String name = "red_button";//必须以分号结尾 不写的话报错;必须是英文的分号;
char x = 'X';
double pi = 3.14;
// 以上是定义变量的格式;
}
}
二、作用域【非常 非常 重要 】
1、类变量:写在类里面的。 需要加个关键词 static ;静态的。
2、实例变量: 写在类中间。没有static 关键词;
3、局部变量:写在方法里面的。
- 这个代表一个类;就是在类里面写东西;
- 类里面有一个默认的main 方法【主程序方法】;
- 类里面除了方法外,还可以定义一些属性;(这个属性,现在可以理解为变量)
- 除了main方法外,还可以写其他方法;
局部变量注意点:
1、局部变量是在方法里面的;
2、比如在main 方法里 ;局部变量的声明周期是 从main 方法的{左边大括号开始;直到main方法的 右边大括号} 生命周期终止。
3、局部变量 必须声明和初始化值;
报错:Variable 'i' might not have been initialized;
发现这个i 输出不了;必须要初始化
给 i 一个具体的值 ,就可以输出 i 了;
public class Demo {
//属性:变量
//main 方法
public static void main(String[] args) {
//局部变量:必须声明和初始化值
int i = 10;
System.out.println(i);
}
//其他方法
public void add(){
}
}
注意:这个main 方法中的 i 不能 在其他地方用;比如不能在add 方法中使用;只能在 main 方法中使用;
报错: Cannot resolve symbol 'i'
代码块: 加了这static 关键词 作用域就非常的高了;
实例变量注意点:
1、 实例变量在方法的外面,类的里面
2、实例变量 的作用域更大了;它不在方法里面,它在类里,方法的外面,从属于对象的。
理解:
你写了String name; int age; 不用初始化赋值,你就可以用它了;怎么使用呢?
需要在main方法中把这个实例写出来;new Demo()相当于 把这个类拿到了。
直接生成Demo demo = new Demo();
public class Demo {
//属性:变量
//实例变量:从属于对象; 如果不自行初始化,这个类型的默认值
//所有的数值类型的初始化值是 0 0.0 [0 是整数][0.0 是小数]
//字符串默认初始化 值是 u0000
// 布尔值 默认是 false
// 除了基本类型 ,其余的 默认值 都是 null 都是空的;
String name;
int age;
//main 方法
public static void main(String[] args) {
//局部变量:必须声明和初始化值
int i = 10;
System.out.println(i); // 10
//new Demo(); // 快捷键:鼠标放到;前面然后按alt + 回车
// Demo demo = new Demo();
Demo demo = new Demo();
System.out.println(demo.age); // 0 age没有赋任何值 也输出了个0//
System.out.println(demo.name);// null;
}
//其他方法
public void add(){
System.out.println(i);
}
}
类变量 注意点:
1、 只要加了 static 的 关键字;就从属于类了;
2、类变量和实例变量基本是一样的 只不过是加了一个static 关键词;
报错:给个double 类型 int 会自动转换成 double类型的;
public class Demo {
// 类变量 static
static double salary = 2500;
public static void main(String[] args) {
// 类变量 static
System.out.println(salary);//2500.0
}
}
注意:如果把 static 去掉 ,就直接报错了;
报错:Non-static field 'salary' cannot be referenced from a static context
注意:
1、这个 static 是从属于这个Demo 这个类的;和这个 Demo 一起存在一起消失;到内存分析JVM 时 会重点分析 这个 static;
2、目前 先把方法、类变量 都先加 static ; 好去调用它 就不用去new 了;
三、常量
- 常量(Constant):初始化(initialize)后不能再改变值! 不会变动的值。
- 所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
final 常量名=值;
final double PI =3.14;
- 常量名一般使用大写字符。
- 常量需要的关键词是final
- 在一些代码中可以使用常量 来提高 代码的可读性。
public class Demo { //修饰符,static、final 不存在先后顺序 static final double PI = 3.14; public static void main(String[] args) { System.out.println(PI);//3.14 } }
四、变量的命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary(驼峰原则:除了第一个单词以外,后面的单词首字母大写)
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母 和下划线: MAX_VALUE
- 类名:首字母大写 和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun()