属性和局部变量的区别
区别 | 属性 | 局部变量 |
---|---|---|
位置 | 类内,方法外,与方法同级 | 在方法内部 |
作用范围 | 整个类 | 从定义行到直属的代码行结束 |
命名冲突 | 可以与局部变量重名,而且局部变量的优先级更高 | 同一作用范围内,不可重名 |
默认值 | 有 | 无 |
位置
public class Student{
//属性
private String name;//姓名属性
private int age;//年龄属性
public void study(int hours){
//hours是形参的同时也是局部变量
System.out.println("已经学习了"+hours+"小时);
String course = "高等数学";//局部变量course
}
}
作用范围
- 属性
即使属性在类的末尾定义,属性照样可以在他的定义上方使用
public class Student{
public void show(){
System.out.println("姓名:"+name+"\t年龄"+age);
}
private String name;//姓名属性
private int age;//年龄属性
}
- 局部变量
只能用于他的定义行开始到直属代码块结束
public class Student{
public static void main(String[] args){
int scores = 100;//scores局部变量分数
if(score>=90){
String result = "优秀";
System.out.println(result);
}
System.out.println("分数:"+scores);
//System.out.println(result);错误
}
}
命名冲突
- 属性
- 参数列表所定义的参数也是局部变量
- 当属性和局部变量重名时,优先指的是局部变量
- 想要使用属性,可以通过this调用
public class Student{
String name;
int age;
public Student(){
}
//参数列表所定义的参数也是局部变量
public Student(String name,int age){
//当属性和局部变量重名时,优先指的是局部变量
this.name = nmae;
//想要使用属性,可以通过this调用
this.age = age;
}
}
- 局部变量
同一作用范围内,不可以重名
public class Test{
public static void main(String[] args){
int a = 0;
//int a = 1;错误
}
}
默认值
- 属性
数据类型 | 默认值 |
---|---|
int | 0 |
double | 0.0 |
boolean | false |
String | null |
引用类型 | null |
- 局部变量
局部变量只有赋值以后才可以使用,赋值后的则是初始值。