一个类中申明的实例成员即使是在该类的内部被自己申明的方法调用也是需要先实例化才可以调用的。
那为什么在一个方法内部申明的局部实例变量却不需要先实例在调用呢。这好像有点违反规则。尽管问题看上去显而易见,但是仔细想想,谁能给出一个相对合理的解释呢(要有说服力,不要就事论事)
对 爱仙剑的小子的补充
void print()
{
int i = 10;
cout<<i;
}
是绝对可以的,实例成员是指申明是不带static的,静态成员是指申明时带static的。很明显,上面那个实例成员i,是不必通过包含它的类的实例对象来调用的。
突然发现还有一个例子:
class Test
{
int x;
static y;
void F()
{
x = 1; //实例方法内可以直接引用实例成员,而不必通过(new Test()).x
y = 1; //实例方法内也可以直接引用静态成员
}
}
...但是如果把一个变量封装到一个类中,在实例化对象时却没这问题。为 ...
int num1;\/\/声明局部变量,在方法内部所以是局部变量,没有使用,所以可以不用赋初值,如果使用的话必须赋初值。int num2;int num3=3;\/\/声明局部变量,用来作为返回值,使用了,所以要初始化,否则不能通过编译。\/\/System.out.println(num2);错误因为num2没有初始化就使用。return num3;} } publ...
JAVA局部变量尚未初始化是什么意思每次都说if(nian)这个不能用
JAVA中的局部变量使用前需要进行初始化,也就是赋值,你在main方法中定义了连个变量,但是没有给它们赋值,所以就会报错,编译不通过;可以先赋值,也可以增加Scanner 从控制台进行接收
C#关键字的用法
静态变量在各实例间共享,如果是public静态变量,则其它类可以不通过实例化访问它们;静态方法称为类的方法,因此不用实例化即可调用(面向过程)一个对象的方法可以访问对象的数据成员,尽管不属于方法的局部变量;一个类的方法只能访问自己的局部变量。例:不正确的引用 class StaticError{ String mystring="h...
我只申明一个变量,但不初始化,也就是不赋值,在运行时它是否占据内存空间...
只要你定义了变量,系统就会为它分配内存空间。初值可以不用你自己赋值,系统会在执行该声明语句的时候赋予初值。你说的不用是对的,但是得看初值你能否用到,如过有特殊意义的话,你就应该自己赋值。
C# 关于局部变量的性能问题
用传引用会更好些,全局变量会降低封装性,因此尽量少用全局变量。你可以这样写:private void Check(ref Rect RRR){ \/\/以下省略 }
C# 中如何判断变量是否被赋值
string确实是引用类型,因此若只声明而不赋值,它是不能为外界引用的,原因就在于类未被实例化为对象。而int、boolean等是值类型,如果未被赋值,就不能被使用,如果直接使用,那C#编译器是会报错的。除非你把int、boolean作为某个类的成员变量,如果只声明却不赋值,那么在类实例化时,编译器会把这些...
C# 为什么我将局部变量赋给全局变量后全局变量始终为0
1)局部变量只在本函数范围有效,在此函数以外是不能使用这些变量;全局变量的有效范围是从定义变量的位置开始到本源文件结束。2)局部变量是程序运行到该函数时给该变量分配内存空间,函数结束则释放该内存空间;全局变量是程序运行时事先分配内存空间,当程序结束时释放内存。参考资料:http:\/\/zhidao.baidu...
java中main方法所在的类的实例化问题
为什么没有实例化,因为你这个类没有被使用到,如果这个类本身包含其他方法,并且你在main里面要调用到,那么这个类肯定需要实例化才能调用 main方法的局部变量怎么调用?跟其他方法一样,局部变量在main方法内可以任意调用。什么情况才会实例化main方法所在的类,只要你要使用这个类里面的非静态方法、非静态...
C#声明的变量怎么不让用啊?
这里错了,你把Dayd 这个局部变量 定义到括号里面,却在括号外面调用,当然访问不到了。if (Day < 10){ string Dayd = "0" + Day.ToString();} string Inputimes = dtResult.Year + "-" + this.Monthd + "-" + this.Dayd; \/\/这里我无法访问到if括号里定义的的东西的。修改到括号...
C#为什么可以返回局部变量的引用
1)局部变量只在本函数范围有效,在此函数以外是不能使用这些变量;全局变量的有效范围是从定义变量的位置开始到本源文件结束。2)局部变量是程序运行到该函数时给该变量分配内存空间,函数结束则释放该内存空间;全局变量是程序运行时事先分配内存空间,当程序结束时释放内存。