| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1224 人关注过本帖
标题:入门级的几个琐碎问题求解
只看楼主 加入收藏
NiceGirl
Rank: 2
等 级:新手上路
威 望:4
帖 子:909
专家分:0
注 册:2006-6-18
收藏
得分:0 
类成员变量自动初始化

曾经以为百般艰难,蓦然回首,才发现已飞渡千山。。!
2006-08-09 11:18
chengsencs
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2006-7-24
收藏
得分:0 

楼上的似乎没有理解我的意思。请看如下程序:
public class BooleanTest
{
public static void main(String[] args)
{
int a = 20;
int b = 30;
boolean x, y,z;
x = (a > b);
y = (a < b);
z = ((a + b) == 50);
System.out.println("x=" + x);
System.out.println("y=" + y);
System.out.println("z=" + z);
}
}
如果我把
x = (a > b);
y = (a < b);
z = ((a + b) == 50);
删去,则运行时出现:

BooleanTest.java:12: variable x might not have been initialized
System.out.println("x=" + x);
^
BooleanTest.java:13: variable y might not have been initialized
System.out.println("y=" + y);
^
BooleanTest.java:14: variable z might not have been initialized
System.out.println("z=" + z);
^
3 errors

也就是说没有对x,y,z进行初始化。所以我的意思是是否
x = (a > b);
y = (a < b);
z = ((a + b) == 50);
也算作初始化?还有没有除了这种方法和直接赋初值之外的其他初始化方法?
谢谢。

2006-08-09 12:04
无理取闹
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:53
帖 子:4264
专家分:0
注 册:2006-7-26
收藏
得分:0 
局部变量要在声明的同时自己初始化

win32汇编
病毒 加密
目前兴趣所在
2006-08-09 12:11
chengsencs
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2006-7-24
收藏
得分:0 
楼上的也没有明白我的意思!!!
我的意思是初始化都包括哪几种方式?
x = (a > b);
y = (a < b);
z = ((a + b) == 50);
这属于初始化的那种方式呢?不像是直接声明初值吧?
2006-08-09 12:27
NiceGirl
Rank: 2
等 级:新手上路
威 望:4
帖 子:909
专家分:0
注 册:2006-6-18
收藏
得分:0 
楼主过于拘泥于小的细节了,局部变量声明后,必须利用赋值语句对变量进行显式初始化
例如 int a; //这里只是声明变量
a = 1(1可以是个值,也可以是个有返回值的表达式); 这里可以叫赋值,也可以叫初始化,因为a之前没有值
接着:
a=5+6 这里只能叫赋值了,因为a在这句话之前已经有值。

曾经以为百般艰难,蓦然回首,才发现已飞渡千山。。!
2006-08-09 13:12
chengsencs
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2006-7-24
收藏
得分:0 
呵呵。多谢。不是我拘泥小节,只是我经常忘记进行局部变量的显式初始化,所以老师说你只要每次声明完局部变量后加上“int a=1;int b=1;......”就行了,感到很菜。所以有此一问。
谢谢。
2006-08-09 14:18
chengsencs
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2006-7-24
收藏
得分:0 
再来一题。
“静态方法(例如main方法)中要访问全局变量,除了将全局变量变为类变量(加static)外,还有什么方法?”


答案看不懂,大概意思是在main方法中,声明一个与类名相同的变量,然后通过句柄调用这个全局变量。
能不能解释一下?
谢谢。
2006-08-09 14:39
NiceGirl
Rank: 2
等 级:新手上路
威 望:4
帖 子:909
专家分:0
注 册:2006-6-18
收藏
得分:0 

就是构造这个类的实例,用对象的引用去调用
class Test {
int a;
public static void main(String[] args) {
Test obj = new Test();
System.out.println(obj.a);
}
}


曾经以为百般艰难,蓦然回首,才发现已飞渡千山。。!
2006-08-09 16:38
chengsencs
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2006-7-24
收藏
得分:0 

能不能说的详细一些?解释一下什么是利用句柄调用这个全局变量?还有这个被调用的变量与声明的与类名相同的对象之间有什么关系?
还有几个地方不是很明白,希望获得解答。
以此程序为例:
public class GlobalVar
{
int a = 10;
double b = 20;
public static void main(String[] args)
{
GlobalVar globalVar = new GlobalVar(); 7
System.out.println("the value a = " + globalVar.a);
globalVar.print(); 9
System.out.println("after changed the value a = " + globalVar.a);
}
public void print()
{
System.out.println("the global variable a = " + a + ", b = " + b);
a=30;
System.out.println("the global variable a = " + a + ", b = " + b);

}
}

第7行声明了一个GlobalVar类型的对象,第9行用这个对象的句柄调用print()方法,请问:被调用的这个方法和这个GlobarVar类型的对象有什么关系?似乎看起来这个print()方法并没有作用于这个对象。那为什么可以用这个对象的句柄来调用?
谢谢。

2006-08-09 23:39
快速回复:入门级的几个琐碎问题求解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025869 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved