一、变量
1、变量名必须是合法的标识符,合法的标识符是由字母或数字或下划线组成,并且可以是字母或者下划线开头,其中字母是大小写敏感的(例如:定义的时候是小写,使用的也是小写,要一致)
public static void main(String[] args) {
String s1_;
int _1;
char a2;
}
2、变量初始化的实质---->拥有自己的内存空间,开辟空间
public static void main(String[] args) {
Person p1;//声明,不开辟空间
p1 = new Person();//初始化,只有在第一次赋值时,开辟空间
p1 = new Person();//重新赋值,不开辟
}
3、变量分为局部变量(在方法中定义)和全局变量(不在任何方法中定义),在相同作用域下,不能声明相同的变量,即不能重名
public class Test1 {
public int age;
public String name;//name、age是全局变量
{
int b =10; //在块作用域中的变量,只能在{}中使用。b是局部变量
}
public static void main(String[] args) { //p1、p1、p3、m都是局部变量,在main方法中
Person p1 = new Person();
Person p2 = new Person();
p1.age = 10;
p2.age = 20;
int p3 = 30;
String m ="abcd";
p1.name = "张三";
p2.name = "李四";
}
}
class Person{
public int age;
public String name;//name、age是全局变量
public void m1() {
int a =10; //a是局部变量
System.out.println("我是Persion类的m1方法");
}
public static void m2() {
System.out.println("我是Persion类的m1方法");
}
}
4、全局变量分为对象属性(独立空间)和类属性〈共享空间),对象可以访问对象属性和类属性,类只能访问类属性(例如:建一个方便面工厂的类,对象属性:面重量,面饼形状,包装,生产日期... 【每个都不相同】,类属性:厂长,地址【只有一个,相同共享】)
public class Test {
public static void main(String[] args) {
Person p1 = new Person();
p1.age = 10;
p1.name = "张三";
System.out.println(p1.age);
System.out.println(p1.country);//对象可以访问 对象属性和类属性
//System.out.println(Person.age);//出错
System.out.println(Person.country);//类只能访问类属性
}
}
class Person{
//对象属性
public int age;
public String name;
//类属性
public static String country="中国";//静态常量池中
}
5、局部变量是在栈区开辟空间的,全局变量是在堆区或静态常量池中开辟空间
6、全局变量因为有默认值,所有可以不用初始化,整型默认是0,字符型默认是空,布尔型默认是false,浮点型默认0.0,引用类型默认是null
public class Abc {
public static int a;
public static char b;
public static boolean c;
public static float d;
public static String e;
public static void main(String[] args){
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
}
}
7、局部变量没有默认值,所以在使用之前,必须赋值
public static void main(String[] args){
//int a;//出错
int a = 0;//要打印出a,必须赋值
System.out.println(a);
}
二、常量
1、常量名必须是合法的标识符,常量名一般使用全大写,如果是多个单词,则用下划线连接
public final int NUMBER_NUMBER =10;
2、常量是使用final关键字修饰,只能被赋值一次,一旦被赋值,就不能再修改
public class Abc {
public final int NUMBER =10;
public void m1() {
//NUMBER++;//报错
System.out.println(NUMBER);
}
}
3、常量也分全局常量和局部常量
public class Abc {
public final int NUMBER =100;//全局常量
public void m1() {
final int b ;//局部常量
}
}
4、全局常量必须初始化赋值,局部常量可以不初始化,但是在使用之前必须赋值
public class Abc {
//public final int NUMBER;//出错
public final int NUMBER =100;
public void m1() {
final int b ;
b=10;//使用前,必须赋值
System.out.println(b);
}
}