我首先纠正一下 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.阅人无数