黑马程序员技术交流社区
标题: 哪位大神能给我来个深刻的讲解那 [打印本页]
作者: zhuhaoming 时间: 2015-8-31 12:45
标题: 哪位大神能给我来个深刻的讲解那
这是乍滴了 ,老师写的代码都看不懂了.看来这块又点重学了...........
class Demo2_Final {
public static void main(String[] args) {
final int num = 10;
//num = 20;
System.out.println(num);
final Person p = new Person("张三",23);
//p = new Person("李四",24);
p.setName("李四");
p.setAge(24);
System.out.println(p.getName() + "..." + p.getAge());
method(10);
method(20);
}
public static void method(final int x) {
System.out.println(x);
}
}
/*
* A:案例演示
* 方法内部或者方法声明上都演示一下(了解)
* 基本类型,是值不能被改变
* 引用类型,是地址值不能被改变,对象中的属性可以改变
*/
class Person {
private String name; //姓名
private int age; //年龄
public Person(){} //空参构造
public Person(String name,int age) {
this.name = name;
this.age = age;
}
public void setName(String name) { //设置姓名
this.name = name;
}
public String getName() { //获取姓名
return name;
}
public void setAge(int age) { //设置年龄
this.age = age;
}
public int getAge() { //获取年龄
return age;
}
}
作者: 不想睡 时间: 2015-8-31 15:14
先打印10,之后换行打印李四,24,之后再换行打印10,再换行打印20,这里会导致报错的代码都注释掉了
首先final int num = 10; 被final修饰后,变量num就成为常量了,如果修改其值,比如 //num = 20;这段,打印的时候就会报错
其次final Person p = new Person("张三",23); Person p是引用类型,被final 修饰后地址值就不能发生改变了,但是对象的属性值可以发生改变,所以 //p = new Person("李四",24);这段代码会报错,因为p的地址值会发生改变,而p.setName("李四");和 p.setAge(24);就不会报错,所以打印结果是李四,24
method(10); 这段代码,它将值传过去后打印,打印完之后method这个方法就就弹栈了, 所以跟之后method(20);没有影响
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |