您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 电子商务 > 第二章开始学Java语法
第二章开始学Java语法任何一种程序语言,都有一些最基础的东西,这就是这门语言要处理什么样的数据,以及如何按着相应的规则组织和处理这些数据。千里之行,始于足下,本章将通过实例,用通俗的语言来讲述蕴涵在Java里的面向对象思想,通过学习我们可以发现:面向对象思想不是枯燥晦涩的教条,而是可以帮助我们更有效开发代码的指导工具。音乐家可以通过驾驭复杂的和声等技巧来创作优美动听的旋律,作家也从没有把把复杂浩瀚的语法条目当成他们创作的障碍,同样地,Java的语法细节也仅仅是开发项目的工具,希望大家在掌握初步的语法后,立即从面向对象思想和项目开发的需求的角度来观察语法定义的动机,学以致用,而不应该过多地“从故纸堆中找学问”,刨根问底地研究“这个类有多少方法”等类的细节性的问题。2.1基本数据类型与操作符基本数据类型的数据是构建Java程序大厦的砖瓦,我们在欣赏蕴涵Java大型项目里优秀架构和精密的内部实现细节时,不应该忽略Java语言里的基本类型数据。2.1.1基本数据类型Java的基本数据类型分为4大类:整数、浮点数、字符型、布尔型。其中,整数包括byte、int、short、long,浮点数包括float、double。由于用不同位数(bit)来存放,它们所表示的精度和范围也有所不同,同时也有各自相应的默认值。如表2-1所示。表2-1Java的基本数据类型关键字位数范围默认值byte8-27~27-10short16-215~215-10int32-231~231-10long64-263~263-10float323.4e-038~3.4e+0380.0fdouble641.7e-308~1.7e+3080.0dchar8\u0000~\uffff\u0000boolean8true或falsefalse整数型:byte、int、short、long。通常情况下整数型数据都是用十进制来表示,同样他们也可以表示成十六进制或八进制。十六进制以0x开头,如0x1F的十进制数值为31。八进制以0开头,如017的十进制数值为15。请大家注意,整数型变量在进行赋值时,要注意有可能会发生因为精度不够而造成数据溢出的错误,例如:byteb;//byte类型的数据最大为127,10000由于数据溢出而不通过编译b=10000;在Java语言里,浮点数型有float、double。浮点型数据用于表示小数。浮点型常量有两种表示方式:一般表示法和科学计数法。如一般表示法345.64的科学计数法为3.4564E2。默认情况下,浮点数常量为double,我们也可以在相应的数字后面添加相应的字母,f或F表示float类型浮点数,d或D表示double类型浮点数,如123.4f和123.4d前者用32位空间存储后者用64位存储。这里需要强调的一点是,在我们使用整数型数据和浮点型数据的过程中并不是用越大的数据类型存放数据就越好,因为这样不仅有可能会造成一定的空间浪费而且还会提高相应得计算时间,因此我们应在确保不发生数据溢出的前提下选择合适类型来存放相应的数据。在Java语言里,字符型用char表示。它用来表示单个字符,它有两种赋值方式:单引号(而不是双引号)括起来的单个字符,用整数表示的unicode编码值。例如:charc1=’a’;//表示97所对应的unicode编码acharc2=97;Java语言里,布尔型是boolean。用来表示真和假,它只有两个值true和false。2.1.2基本操作符操作符就是用来计算数据的符号,我们可以把数据通过操作符组合起来得到相应的结果。按着操作符所操作数据的个数可以分为:一元、二元、三元,这一点比较好理解。按着操作符的功能可以分为:算术、赋值、关系、逻辑、位运算等操作符。接下来我们详细为大家介绍各种操作符的功能:算术操作符是用来描述整数和浮点数类型数据的运算规则的一组操作符。单目运算操作符包括“-”,“++”,“--”,它们都只能对一个操作数进行计算。“-”为求反符号,它表示计算操作数的相反数。“++”,“--”分别是自增和自减符号,它们会计算操作数的加一或减一的值,在使用这两个符号的时候需要大家注意操作符和操作数的位置对表达式结果的影响,例如:inti=5;intj=5;intk;//i的值为6,表达式i++的值为6,k的值为18k=i++*3;//i的值为6,但表达式++i的值为5,k的值为15k=++j*3;注意:i++指表达式运算完后再给i加一,而++j指先给j加一然后再运算表达式的值。双目运算操作符包括“+”,“-”,“*”,“/”,“%”,它们可以对两个操作符进行计算,分别对应于加,减,乘,除,求余运算。需要注意的是前四种符号可以在整数和浮点数之间进行计算,而求余运算只能在整数之间运算。赋值操作符包括“=”和一些扩展的赋值操作符,如:“+=”,“-=”,“*=”,“/=”,“%=”。其中,”=”表示把等号右边表达式的值赋给等号的左边,而一些扩展的赋值操作符是一种简写形式,它们表示把左操作数按着相应的运算符号的规则与右操作计算所得到的结果又符给了左操作数的那个变量,例如:inti=5;//等同于a=a+6,故最终a的值为11a+=6;关系操作符用于比较两个表达式的大小关系,计算的结果为布尔类型数据的true和false。如果表达式关系成立则结果为true,否则为false。关系操作符包括“==”,“!=”,“”,“”,“=”,“=”,分别表示等于,不等于,大于,小于,大于等于,小于等于。需要注意的是:关系操作符中的“==”表示的比较操作符两边的操作数是否相等,而赋值操作符“=”表示把左操作数的值赋到右操作数中去。这里,值得注意的是用来判断两个操作对象是否相等的”==”操作符,它主要用在if,while和for循环里的条件判断里。比如,有如下语句:inti=10;intj=10;if(i==j){//doaction1…}由于i和j相等,所以在if语句里,会执行doaction1部分的代码。逻辑操作符用于对布尔类型数据的计算,得到的结果也是布尔类型的数据,包括“&”,“&&”,“|”,“||”,“^”,“!”,分别表示逻辑与,逻辑与,逻辑或,逻辑或,逻辑异或,逻辑非。除了“!”是一元操作符以外其余的都为二元操作符。逻辑与表示只有当左右操作数都为true时表达式结果才为true,否则为false;逻辑或表示左右操作数中只要有一个为true时表达式结果就为true,否则只有两个操作数都为为false时表达式结果才为false;逻辑异或表示当左右操作数不同即相异时表达式结果为true,否则如果左右操作数相同时表达式结果为false;逻辑非表示求操作数相反的值,即true为false,false为true。“&”与“&&”和“|”和“||”虽然名称相同,但是使用时却有差别,例如:inti=1;intj=2;booleanb1;booleanb2;//i5为false,j5为false,表达式的值为falseb1=(i5)&(j5);//只要知道i5为false就可以确定表达式的值为falseb2=(i5)&&(j5);“&”与“|”要根据左右操作数的最终结果计算表达式的值,而“&&”与“||”如果可以根据左操作数的值能确定表达式结果就不会继续计算右操作数的值。位运算操作符是以二进制的方式操作数据,并且操作数和结果都是整数类型的数据,包括“~”,“&”,“|”,“^”,“”,“”,“”,分别表示位反,位与,位或,位异或,带符号位右移,左移,无符号位右移。位反,位与,位或,位异或表示把左右操作数按着其二进制的表达形式对每个位的1或0进行相应的逻辑操作,再把新得到二进制数据转化成十进制数从而得到表达式的最终结果。后三种操作符表示把左操作数转化成二进制数据,然后按着右操作数的大小进行相应方向的移动,再把新得到二进制数据转化成十进制数从而得到表达式的最终结果,但需要注意的是同样是向右移动“”表示带着符号位即最高位的1或0向右移动,而“”表示无论符号位是1还是0,都用0对最高位补位,如表2-2所示。表2-2位移运算i二进制补码i2i2i27001000110000110000001000100010001-1711101111101111001111101100111011其它的重要操作符有:1.条件操作符“(?:)”,它是唯一的一个三元操作符。使用方式如:i?j:k,其中i表达式的结果为布尔类型,如果i为true表达式结果为j,否则为k。2.括号操作符“()”,用于优先表达式的计算顺序。2.1.3操作符优先级操作符的优先级决定了处理表达式计算的先后顺序,还有一个重要的特性就是结合性,它们共同决定了表达式按着何种方式来进行各种计算最终得到相应的结果,对于初学者来说建议使用括号来明确指定运算顺序。各种操作符的优先级和结合性如表2-3所示。表2-3操作符的优先级和结合性操作符优先级结合性[],()1.2右~,!,++,--3右*,/,%4左+,-5左,,6左,=,,=7左==,!=8左&9左^10左|11左&&12左||13左?:14右=15右大家不必硬记这些优先级,可以通过针对容易混淆的地方加括号就可以了,比如有如下的表达式:!i==j,首先是判断两个值是否一样,然后是个取非的操作,我们可以改写成:!(i==j),虽然!的优先级比==要低,加不加括号的效果是一样的,但是如果我们加了括号,看起来就更清除了。2.1.4对象型的数据类型在Java语言里,以类的形式,定义了一些对象类型的数据类型,并且在其中封装了针对这种类型数据的一些操作方法,其中,我们经常会用到的有:基本数据类型的封装类和描述字符串的String类。下表2-4描述了基本数据类型对应的封装类。表2-4基本数据类型对应的封装类基本数据类型对应的封装类booleanBooleancharCharacterbyteByteshortShortintIntegerlongLongdoubleDoublefloatFloat各数据类型对应的封装类里,不仅包括了基本数据类型的数据,由于它们更是类,所以会封装了一些实用的方法,比如我们在如下的代码里,通过Integer类封装的doubleValue方法,把Integer类型的数据转换成double。Integerk=newInteger(10);k.doubleValue();封装类等于基本数据类型加针对基本数据类型的操作,它们是对象,这点对我们来说至关重要。在Java语言里,描述字符串的String类有着很重要的用途,在这个类里,同样是定义了针对字符串的一些操作,通过下面的StringTest.java代码,我们可以看到String类的一些常用方法。publicclassStringTest{publicstaticvoidmain(String[]args){Strings1=HelloWorld;Strings2=newString(HelloWorld);//输出字符串的长度System.out.println(thelengthofs1is+s1.length());//得到第三个字符,索引位置从0开始charindex2=s1.charAt(2);System.out.println(index2);//比较两个字符串错误的做法if(s1==s2){System.out.println(ThetwoStringareequal!);}else{System.out.println(ThetwoStringarenotequal!);}//比较两个字符串正确的的做法if(s1.equals(s2)){System.out.println(ThetwoStringareequal!);}else{System.out.println(ThetwoStringarenotequal!);}//连接字符串s1=s1.concat(!);Sys
本文标题:第二章开始学Java语法
链接地址:https://www.777doc.com/doc-2186540 .html