选择显示字体大小

java初学者容易混淆的几个问题

xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 

.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的值已改变.

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的类变量均指向相同的数据,所有值一
样,这就是类变量的作用.

4.实例方法,类方法,构造器方法

我们通常所说的方法系指实例方法,就像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());/*通过传递参数调用构造器新建一
个对象,再通过对象调用方法得到数据*/
}
}

5.接口与类

类是对一类特定对象的规格说明,我们可以类定义创建对象,通过创建对象来组合所有属于该类的组件,而
接口不能这样做.而接口实质上就是一个常量和抽象方法的集合,要使用一个接口,就需要在类中实现这个接
口,然后作为类定义的一部分,编写接口中声明的每一个方法,接口中的方法永远是public,abstract,接口中的
常量永远是public static和final,因此不需要为它们说明属性.
因为在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)
{
this.number=number;
}
void setstring(string str)
{
this.str=str;
}
void int getnumber(){}//可以为一个空实现.
void string getstring(){}
}
//在类中必须实现接口中声明的所有方法.(当然也可不必,但是要用到适配器类或用抽象类)

 

 


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons