Java初学者容易混淆的几个问题.doc_第1页
Java初学者容易混淆的几个问题.doc_第2页
Java初学者容易混淆的几个问题.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java初学者容易混淆的几个问题.String类和StringBuffer类 它们都是处理字符串的类,但是它们有一个最大的区别,那就是,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的值已改变.位逻辑与条件逻辑 首先声明, 为了与位逻辑更好区分开来,我把通常所说的逻辑取了个别名叫做条件逻辑. 它们都有各自的操作符,位逻辑操作符有:&(与运算),(异或运算),|(或运算);条件逻辑操作符有:&(并 且),|(或者). 位逻辑运算通常是针对两个数而言,实行位操作;而条件逻辑运算是针对两个条件表达式而言,实行条件操 作.其实,位逻辑操作符一样可以实现条件操作,但是此时有一个重要的区别:用位操作符时,不管操作符两边的 条件表达式成不成立,它都要通通进行运算判断,而条件逻辑操作符不一样了,如果通过左侧的操作数就可以进 行它们需要的判断,那么它就不会再计算右侧的操作数了,这种情况叫短路.废话少说!且看下例. eg1: . /omit some code double value=0; if(value!=0 & 1/value1000) 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/value1000了.如果不懂请再看一 例: 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结果分析: 我想不用我分析了,你应该懂了吧.实例变量与类变量 可以通过两种方法在类中存储数据作为实例变量和类变量.实例变量是特定于对象的,如果你有两个对 象(即一个类的两个实例),每一个对象中的实例变量独立于另一个对象中的实例变量的;另一方面,两个对象的 类变量均指向相同的数据,并因此面保存相同的值,换句话说,类变量被类中的所有对象共享.差点忘了,它们在 形式上的区别,类变量在声明时比实例变量多一个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(); data=1; System.out.println(b.indata=+data); 运行结果: data=0结果分析: 可以看出,data的值虽然变了,但并没有影响data.但是如果在data类中声明intdata时,在其前 面加上static就变成类变量了(即:public static int intdata=0;),则此时运行结果会变为: data=1 这次data值的改变可把data影响了,事实上,对象a和b的类变量均指向相同的数据,所有值一 样,这就是类变量的作用.实例方法,类方法,构造器方法 我们通常所说的方法系指实例方法,就像c语言中的函数一样,其具体方法我就不用说了,在这里我主要是 用它来区分类方法和构造器方法.类方法与实例方法最大的区别是:在形式上类方法多一个static,在用法上,不必创建对象就可直接调用类方法(而实例方法却一定要先创建对象,再通过对象调用). eg: class add static int addem(int op1,int op2) return op1+op2; public class xxf public static void main(String args) System.out.println(addem(2,2)=+add.addem(2,2); /直接用类名作为对象调用类方法 注: 也可按通常的方法,即先创建对象,再调用方法,不过,这时static就无任何意义了. 再说说构造器方法,它是用来初始化对象中的数据的一种方法,创建很容易,只需在类中加上一个与这个类 同名的方法,不需要在前面加任何访问说明符或者返回类型,另外,构造器也一样可以向方法一样传递参数. eg: class data private String data1;/事先声明 data(String s) data1=s; /*通过接收数据来初始化变量.(注:不能在构造器内 声明变量,事先在外就要声明.)*/ public String getdata() return data1; public class xxf public static void main(String args) System.out.println(new data(I love you).getdata();/*通过传递参数调用构造器新建一 个对象,再通过对象调用方法得到数据*/ .接口与类 类是对一类特定对象的规格说明,我们可以类定义创建对象,通过创建对象来组合所有属于该类的组件,而 接口不能这样做.而接口实质上就是一个常量和抽象方法的集合,要使用一个接口,就需要在类中实现这个接 口,然后作为类定义的一部分,编写接口中声明的每一个方法,接口中的方法永远是public,abstract,接口中的 常量永远是public static和final,因此不需要为它们说明属性. 因为在Java(Java培训)中不支持多重继承,但是,可以用接口来实现类似的功能,这是接口的重要作用之一. eg: interface anyone /定义一个接口 final double PI=3.1416; void setNumber(int number); int getNumber(); interface anyother /定义另一个接口 void setString(String str); String getString(); class xxf implement anyone,anyother /定义一个类,并使用两个接口 int number; String str; public xxf() void setNumber(int number

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论