我首先纠正一下 pp不是指针
它是对象的一个实例.
pp.s是类的属性
因为 你为 String s = "Hello "; 赋值为 "Hello "所以在
没有 this.s=s 的这句代码时属性s的值肯定是"Hello"
详细点给你解释一下吧:
public class A
{
String s = "Hello "; //类的属性
/*构造方法
*一般用来初始化
*此方法特点与类同名 A */
public A(String s)
{
/*此方法有一个参数 String s (参数s与属性s同名是个坏的习惯)
*由于参数与属性同名
*所以要初始化属性s,首先要先区分出参数s和属性s (this关键字可以作到)*/
System.out.println( "s = " + s);//这个s是参数s所以打印的值应该是 "HelloWorld! "
System.out.println( "1 - > this.s = " + this.s);//这个是属性s 值是 "Hello "
/*this翻译成中文就是 '这里 '的意思this代表的是这个类
*this.s=s的意识是:把参数s赋给类的s属性,
*(如果没有this你知道那个s是那个s吗?所以说参数s与属性s同名是个坏的习惯*/
this.s=s; //赋值后属性s变成 "HelloWorld! "
System.out.println( "2 - > this.s = " + this.s);//输出属性s此时打印 "HelloWorld! "
}
/*程序的入口*/
public static void main(String[] args)
{
A pp=new A( "HelloWorld! ");//new一个实例 系统自动调用构造函数;
System.out.println(pp.s);//打印属性s 此时值为 "HelloWorld! "
}
}
流程:1.程序的入口.
2.new pp 实例 自动的掉用构造函数 A(String s);
3.执行A方法的代码
4.执行System.out.println(pp.s);
1.读万卷书
2.行千里路
3.阅人无数