构造函数的变量命名

原创 2015年07月09日 08:57:26
class Person
{
	private String name;
	private int age;
	Person()
	{
		System.out.println("name="+name+",age="+age);
		cry();
	}
	Person(String n)//注意!!!!
	{
		name=n;
		System.out.println("name="+name+",age="+age);
		cry();
	} 
	public void cry()
	{
		System.out.println("cry....");
	}
}
class PersonDemo2
{
	public static void main(String[] args)
	{
	Person p1=new Person("lisi");
	p1.cry();
	}
}


代码注意部分构造函数的变量命名为n,但这样没有阅读性,因为此变量是代表姓名,所以我们命名为  name;

class Person
{
	private String name;
	private int age;
	Person()
	{
		System.out.println("name="+name+",age="+age);
		cry();
	}
	Person(String name)//!!!!!
	{
		name=name;//!!!!!
		System.out.println("name="+name+",age="+age);
		cry();
	} 
	public void cry()
	{
		System.out.println("cry....");
	}
}
class PersonDemo2
{
	public static void main(String[] args)
	{
	Person p1=new Person("lisi");
	p1.cry();
	}
}

结果却出现name=null;而不是lisi

Person(String name)    {name=name;}

而当我们把局部变量设为n时,却可以赋值,这是因为当命名为name时,构造函数并没有把局部变量的name值赋给成员变量;

原因:赋值时,构造函函数里先在局部变量中找变量,找到了就使用局部变量,若没找到则找成员使用,例如当局部和成员的都有name时,构造函数的就使用局部变量的name,而不会调用成员;

若要赋值,就应该把赋值对象标记一下,引用关键字  this

this:看上去,是用于区分局部变量和成员变量同名情况

class Person
{
	private String name;
	private int age;
	Person()
	{
		System.out.println("name="+name+",age="+age);
		cry();
	}
	Person(String name)
	{
		this.name=name;//////!!!!!
		System.out.println("name="+name+",age="+age);
		cry();
	} 
	public void cry()
	{
		System.out.println("cry....");
	}
}
class PersonDemo2
{
	public static void main(String[] args)
	{
	Person p1=new Person("lisi");
	p1.cry();
	}
}

显示lisi!!
this:就代表本类的对象,代表所在函数所属对象的引用;

简单说:哪个对象在调用this所在的函数,this就代表哪个对象。


 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

私有成员变量理解的补充

C++ 编译器是如何对类的私有成员变量进行符号解析的;
  • lanchunhui
  • lanchunhui
  • 2016年03月01日 12:48
  • 680

如何给变量命名-彻底告别变量命名的苦恼

变量名的力量 看完代码大全第11章『变量名的力量』,我想根据我们目前 最容易遇到的以及对于我们目前最需要重视的方面,提炼出一些书中的精华。在这经典之上再进行浓缩一下。 解释一个概...
  • AndyNikolas
  • AndyNikolas
  • 2017年01月29日 17:49
  • 3788

asp.net里的变量命名规则

变量名的长短应该只对编译器来说的,最终运行的时候都是内存地址了~ 应该不会影响性能,所以在编写程序的时候尽量要把变量命名的简捷易懂;变量名的命名规则其实就是为了帮助理解,便于后期的维护。不要贪图写代码...
  • lxl743p
  • lxl743p
  • 2008年05月29日 15:04
  • 250

C++程序变量命名推荐规范

变量的规范命名是为了增强代码的可读性和容易维护性。C++程序变量命名只有几条必须遵守的“死规则”,这些规则如下:  1.变量名只能是字母(A-Z,a-z)、数字(0-9)或下画线。  2.第一个字母不...
  • hrw0702
  • hrw0702
  • 2010年05月06日 16:04
  • 5576

推荐一个命名变量的神奇网站 CODELF

推荐一个命名变量的神奇网站 CODELF在我们写程序的时候,总是需要去给各种变量命名。于是各种命名大法都上来了,有拼音的,有首字母缩写的,各种各样。而我们推荐的命名肯定是英文的驼峰命名。今天给大家推荐...
  • FungLeo
  • FungLeo
  • 2017年09月25日 14:59
  • 1491

Shell 变量的命名 (二)

shellName=“hello,沐淼!” 注意:变量名和等号之间不能有空格; 首个字符必须为字母(a-z  A-Z)中间不能有空格,可以是下划线不能使用标点符号不能使用bash里的关键字 变量的...
  • mqf163
  • mqf163
  • 2017年05月11日 11:57
  • 1462

如何科学的为变量命名

一、变量命名的基本原则 1、变量命名的长度:控制在10至16个字符之间。 2、与语言无关的命名规则 标识全局变量:前面加上g_ 的前缀。在读到 g_RunningToatal 就会知道这个是全局变量。...
  • xiaokang123456kao
  • xiaokang123456kao
  • 2017年04月04日 18:47
  • 327

变量命名

1.    选择好的变量名称这好像是一个老生常谈的问题,但是code complete解析的非常细腻,还是让我们用代码来领会吧。看下面这段java代码:x = x - xx; xxx = aretha...
  • donkey2004112103
  • donkey2004112103
  • 2008年09月22日 09:49
  • 481

java变量命名规则

java:标识符可以包括这4种字符:字母、下划线、$、数字;开头不能是数字;不能是关键字   也可以是Unicode字符集中的字符,如汉字 final 错 1var1 错 _var2 ...
  • lin111000713
  • lin111000713
  • 2016年09月09日 09:38
  • 1088

杂学--变量命名神器codeif的学习和使用

There are only two hard things in Computer Science: cache invalidation and naming things.          ...
  • qq_33429968
  • qq_33429968
  • 2017年06月03日 16:17
  • 2097
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:构造函数的变量命名
举报原因:
原因补充:

(最多只允许输入30个字)