您的位置:软件 > 开发者网络 > 开发工具 > Java > 正文
Java初学者容易混淆的几个问题
[文章信息]
作者:Javazealot
时间:2004-05-31
出处:论坛
责任编辑:方舟
[文章导读]
String对象是存储你不能改动的文本字符
串,相反,如果你希望改动,则应使用StringBuffer类作为替换
advertisement
热点推荐
· 天极网软件频道改版调查
· 25软件精选 Excel分页汇总
· 提升Win XP性能的20个特殊技巧
· 图解JBuilderX安装与实践
· Fireworks国画:葡萄小鸡图
[正文]

1 2  下一页

  1.String类和StringBuffer类

  它们都是处理字符串的类,但是它们有一个最大的区别,那就是。



  eg1:

......
//omit some code
String s1="You are hired!";
System.out.println(s1.replace(′h′,′f′));//用f把字串中的h替换了
System.out.println(s1);
......
//omit some code

  运行结果:

   You are fired!
   You are hired!

  结果分析:

  从结果,明显可知,s1的值并没有被改变,而第一行结果只是屏幕内容的替换.

  eg2:

......
//omit some code
StringBuffer s2=new StringBuffer("Hello from Java!");
s2.replace(6,10,"to");
System.out.println(s2);
......
//omit some code

  运行结果:

  Hello to Java!

  结果分析:

  显然,s2的值已改变.
 
  2.位逻辑与条件逻辑

  首先声明, 为了与位逻辑更好区分开来,我把通常所说的逻辑取了个别名叫做条件逻辑.

  它们都有各自的操作符,位逻辑操作符有:&(与运算),^(异或运算),|(或运算);条件逻辑操作符有:&&(并
且),||(或者)。

  位逻辑运算通常是针对两个数而言,实行位操作;而条件逻辑运算是针对两个条件表达式而言,实行条件操作.其实,位逻辑操作符一样可以实现条件操作,但是此时有一个重要的区别:用位操作符时,不管操作符两边的条件表达式成不成立,它都要通通进行运算判断,而条件逻辑操作符不一样了,如果通过左侧的操作数就可以进行它们需要的判断,那么它就不会再计算右侧的操作数了,这种情况叫短路.废话少说!且看下例.

  eg1:

......
//omit some code
double value=0;
if(value!=0 && 1/value<1000){
System.out.println("The value is not too small.");
}
else{
System.out.println("The value is too small.");
}
......
//omit some code

  运行结果:

  The value is too small.

  结果分析:

  照理说应会出现除数为0的错误,但是我刚才说了,由于条件逻辑操作符是短路操作符,显然,value!=0不成立,立即就可作出判断应执行else后的语句,所以它就不再会运算判断1/value<1000了.如果不懂请再看一
例:

   eg2:

......
//omit some code
double int1=0,int2=1,int3=1;
if(int1!=0 & (int2=2)==1){}
System.out.println("int2="+int2);
if(int1!=0 && (int3=2)==1){}
System.out.println("int3="+int3);
......
//omit some code

  运行结果:

   int2=2.0
   int3=1.0

  结果分析:

  我想不用我分析了,你应该懂了吧.

  3.实例变量与类变量

  可以通过两种方法在类中存储数据───作为实例变量和类变量.实例变量是特定于对象的,如果你有两个对象(即一个类的两个实例),每一个对象中的实例变量独立于另一个对象中的实例变量的;另一方面,两个对象的类变量均指向相同的数据,并因此面保存相同的值,换句话说,类变量被类中的所有对象共享.差点忘了,它们在形式上的区别,类变量在声明时比实例变量多一个static.

  eg:

class data
{
public int intdata=0;//显然,intdata在这儿是实例变量
}
public class exam
{
public static void main(String[] args)
{
data a,b;
a=new data();
b=new data();
a.intdata=1;
System.out.println("b.indata="+b.intdata);
}
}

  运行结果:

  b.intdata=0

  结果分析:

  可以看出,a.intdata的值虽然变了,但并没有影响b.intdata.但是如果在data类中声明intdata时,在其前面加上static就变成类变量了(即:public static int intdata=0;),则此时运行结果会变为:

  b.intdata=1

  这次a.intdata值的改变可把b.intdata影响了,事实上,对象a和b的类变量均指向相同的数据,所有值一样,这就是类变量的作用。


1 2  下一页

·"WAP天极之IT新闻资讯,50万元等你拿"    ·天极WAP之游戏狂图,50万元等你下载


发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容阅读排行榜
  • 通过Java Swing看透MVC设计模式
  • 用Java的New IO开发网络协议
  • 用Java Swing制作欢迎屏幕
  • 如何更好的使用JTextPane
  • Java+Oracle应用开发的几个问题
  • 盘符混乱咋办 拨乱反正有巧招
  • MotherBoard Monitor入门篇
  • MotherBoard Monitor进阶篇
  • 如何买到一部称心的品牌电脑
  • 关注!国内首款GeForce 6200显卡曝光
  • 《魔兽世界》角色扮演游戏壁纸
  • 天极缉拿假IE4.0为首的仿冒鼠
  • 《魔兽世界》Q版人物头像集
  • Advertisement

    天极无线
    待机彩图    >>更多
    多彩动画    >>更多
    美妙和弦    >>更多
    天使在唱歌
    壁虎漫步
    PrettyBoy
    LoveLoveLove
    我是你的小小狗
    单身情歌
    十面埋伏
    祝酒歌
    回心转意
    波斯猫
    太委屈
    S.H.E
    潘玮柏
    M2M
    蔡依林
    阿牛
    林志炫
    陈弈迅
    刀郎
    黑龙
    S.H.E
    陶晶莹
    情人玫瑰坊
    音乐风云
    新片速递
    神秘测试
    都市约会
    ·天极彩信天天精彩
    ·图铃梦工厂下载无限!
    ·找寻童真,卡通专题
    ·夏日激情交友社区!
    ·星座运程,预测人生

    CSEEK搜索