




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2章JavaJavaclass{}classTest{publicstaticvoidmain(String]args){System.out.println(“MyfirstjavaclassTest{publicstaticvoidmain(String]args){System.out.println(“Myfirstjava功能。Java里的注释根据不同的用途分为三种类型:intc10/*intc10int /*……*/中可以嵌套”注释,但不能嵌套 **”如:下面的注释是的/*intc=10;*/intx=5;序代码总量的20%-50%。Java中的包、类、方法、参数和变量的名字,可由任意顺序的大小写字母、数字、下划线(_)和符号($)组成,但标识符不能以数字开头,不能是关键字。oJava0123456780123456789abcdefABCDE0x8a0Xff0X9A012345601230450989Lf(Fd(D),用指数表示也可以。注意:由于小数常量的默认类型为doublefloatf(F),用以区分。如:2e3f 3.84d '8''\t'字符常量要用两个单引号括起来,Javaunicodeunicode码值加上\u来表示对应的字符。"oWorld""123" e e\nXXX",它的运行结果是: 0,y内存单元,这样就完成了y=x+3的运算。
整数类型(byte,shortint,
与其他编程语言不同的是,Java表2.1。这也是Java跨平台的一个特性。 8 -7双精度浮点型的取值范围见表2.2:字符占两个字节,是unicode编码的。义,比如你看到的文字、图像和听到等都是使用数字形式来表示的。生活中的数值也可以代表其他意义,如1234可以代表,存款额,电报信息等。根据上下线索,我们能够知道这些数如:97对应字符'a',我们使用charch=97将字符'a'赋值给变量ch。98对应的是字符'b',当在内存里面躺着一个99时,请问,它对应键盘上的哪个字母呢?大家都能够猜出就是字符'c'。charch='x'Java八个字节,而Java只为float的变量分配节的空间,要将八个字节的内容装入节的floatbyteintx=bbintintb;a=(byte)b程序publicclass{
publicstaticvoidmain(String[]{bytebinti=266;b=(byte)iSystem.out.println("bytetointis"+""+b)}}bytetointisclass{publicstaticvoidmain(String[]{byteb=b=(b-}}Test.java:6:possiblelossofprecision :intrequired:b=(b-^1byteb=(byte)(b-byteshortcharint第二,如果一个操作数是long型,计算结果就是long型;第三,如果一个操作数是float型,计算结果就是floatclass{publicstaticvoidmain(String{byteb=50;charc='a';shorts=1024;inti=50000;floatf=5.67f;doubled=.1234;doubleresult=(f*b)+(i/c)-(d*s);System.out.println((f*b)+"+"+(i/c)+"-"+(d*s));System.out.println("result="+result);}}doubleresult=(f*b)+(i/c)-(d*数据,读者再想想System.out.println('a'+1)在屏幕上的打印结果与System.out.println(""+'a'+1)在屏幕上的打印结果有什么不同呢?前者将字符'a'198,后者将一个空字符串与字符'a'相连后再与整数1相连形成一个新的字符串“a1。{int{}}程序publicclass{publicstaticvoidmain(String[]{intx={intq=96;//xq都可用System.out.println("xis"+x);System.out.println("qis}q=x; System.out.println("xis"+x);}}使用这个变量,q=xq脚下留心:C和C{intx={intx=xx4;x}xx5;//x795}都是对第二个x的操作,不会影响到第一个x。第一层大括号里面的代码对x的操作,都是对第一个x的操作,跟第二个x没有任何关系。会认为变量x已在第一层大括号中被定义,不能在第二层大括号被重复定义。程序publicclass{publicstaticvoidmain(String[]{intx;//int System.out.println("xis}}假设我们有一个游戏程序,在程序运行过程中,我们要不断地发射弹。发射弹的动作都需要使用一段百行左右的程序代码,我们在每次发射弹的地方都要重复加入这一段百行程序代码,程序会变得非常臃肿,程序的可读性也就非常差。假如我们要修改发射弹的程序代码,需要修改每个发射弹的地方,很可能就会发生遗漏。几乎所有的编程语言中都要碰到这个问题,各种编程语言都将发射弹的程序代码从原来的主程序中单独拿出来,做成一个子程序,并为这到主程序中接着往下执行。在Java中,这程序叫函数。3个由*组成的矩形,publicclass{publicstaticvoidmain(String[]{for(inti=0;i<3;i++){for(int{}}for(inti=0;i<2;i++){for(int{}}for(inti=0;i<6;i++){for(int{}}}}程序publicclass{publicstaticvoiddrawRectangle(intx,int{for(int{for(int{System.out.print("*}}}publicstaticvoidmain(String[]{}}个整数类型的参数,一矩形的宽度,另一这个矩形的高度。有时候,函数还需要返回{
“returnvoid作为返回值类型,意思是“不知道是什么类型,可定义函数时又非要填写一个返回值类型,就用它充数吧publicclass{publicstaticintgetArea(intx,int{return}publicstaticvoidmain(String[]{intarea=getArea(3,5);System.out.println("firstAcreageis"+area);System.out.println("secondAcreageis"+getArea(2,4));}}函数名(12,….)变量=函数名(1,实参2,….)intareagetArea(3,5);语句。System.out.println("secondAcreageis"+程序:Func4.javapublicclassFunc4{publicstaticintgetArea(intx,int{return-1;returnx*y;}publicstaticvoidmain(String[]{intarea=getArea(3,5);System.out.println("firstAcreageis"+area);System.out.println("secondAcreageis"+getArea(2,4));}}起码要求。很多程序错误都是由参数引起的,我们应该充分理解并有效地使用类似上面的方Func4.javaintarea=getArea(3,5);这getArea(intx,inty)这个函数的内部去执行,先把实参(3,5)分别x*y;把结果赋值给整型变量area。这就是函数的参数传值整个过程。的和程序publicclass{publicstaticvoidmain(String[]{intisum;doublefsum;}publicstaticintadd(intx,int{reutrn}publicstaticintadd(intx,inty,int{return}publicstaticdoubleadd(doublex,double{return}}Java+3-b=4;--+加-减2*乘/除1%0--+"串对象,如:"x"+123;的结果是"x123"。由于Java运算符有从左到右的优先顺序,这里请特别注意一下++aa++以及--aa--的区别,b=++a是a先自增,a自己变了后才赋值给b,而b=a++是先赋值给b,a后自增。”部分。猜一下这三句代码的结果:intx=3510;x=x/1000*1000;System.out.println(x),再运行一下,看看结果。再想一下为什么?你猜想的结果可能是3510,但实际运行结果是3000,其实ifelseforintx=0;{x=}这样,x的取值0与9之间循环=-x=y=z=5<>"o"instanceofJava,则不用这样处心积虑,即使写成if(x=3),编译器也会报错,因为Java的条件判断只接受比如b=false;然后用if(b=true);这一句,编译器就不会报错了,显然与你的愿望背道而驰。&|^!参与计算。如果使用后者连接,当“&&”的左边为false,则将不会计算其右边的表达式。publicclass{publicstaticvoidmain(String[]{intx=0;intif(x!=0&&System.out.println("y=}}第二个表达式的值,这就是“短路”。如果两个表达式之间用“&”来连接,而且恰好又碰到OR运算符叫逻辑或,由“|”或“||”连接两个表达式,只要运算符两边任何一个表达式为真,该组合就会返回true值。只有参加运算的两位不同,^运算的结果才为1,否则就为0。<<>>C0,也有的系统是填入1,这也是C语言不跨平台的一个小的方面。言中没有无符号的数据类型)用“>>”移位时,如果最是0,左边移空的就填入0,如果过“>>>”移位的整数最高为是0还是1,左边移空的填入0。程序publicclass{publicstaticvoidmain(String[]{int inty=0x >>1=”+Integer.toHexString(x)); >>>1=”+Integer.toHexString(y));}} >>1= >>>1在上面的程序中,我们用0x 我们很容易看出它的二进制形式1000,0000,0000,0000,0000,0000,0000,0000。为了直观,对移位后的结果,我们也用十六进制来显示,Java提供的 1100,0000,00000000,0000,0000,0000,0000 0100,0000,00000000,0000,0000,0000,0000入hex,没有发现有价值的提示,如图2.6:如图2.7例如:a>>33a>>1结果是一样的,a>>32a原来的数字。的2的nn2的n次方。请思考:屏8位的二进制数据表示,那么屏幕上最多能显示多少种颜色?这其实就2的x次方的问题。答案:y1<<.[]();,~(数据类型*/+<<>><><===&^|=*=/=<<=>>=>>>=&=^=inta2;intba3*a;语句的执行过程,用括号改变运算符的优先级,如第二句修改成intb=(a+3)*a;后,程序先执行括号中的a+3ab,b10。inta=2;intba3*a++;这样的语句,b8。inta=2;intba3*a;这样的语句,b果是11。intx=0;if(x==1)intx=0;x1“x=1”,否则将打印出还有一种更专业的写法:变量 表达式?语句1:语句y=x>0?x:-x>0xyx不大于0,就把-x赋值给值给变量y,否则将计算冒号后面的表达式,并把结果赋值给变量y,这样的写法在C语言中经常intx=0;{}{}
System.outprintln("No");ifelseif(x==2)elseif(x==3)if(x==if(y==System.out.println("x=1,y=
System.out.println("x=1,y!=if(y==System.out.println("x!=1,y=System.out.println("x!=1,y!=if(x==if(y==System.out.println("x=1,y=System.out.println("x=1,y!=elseif(xif(y==System.out.println("x!=1,y=System.out.println("x!=1,y!=if(x=={if(y==System.out.println("x=1,y=}
System.out.println("x=1,y!=elseif(x{if(y==System.out.println("x!=1,y=}
System.out.println("x!=1,y!=if(x=={if(y==System.out.println("x=1,y=System.out.println("x=1,y!=}elseif(x{}
if(y==System.out.println("x!=1,y=System.out.println("x!=1,y!=xx12…3…i{casecase2:case3:System.out.println("Sorry,Idon'tKnow}上面代码中,default也不要的都归它。switchint,byte,char,short语句,例如删除System.out.print("x=2")后面的break语句,程序运行的结果将是:。casecasecaseSystem.out.println("youareverybad”);System.out.println("youmustmakegreatefforts”);casecase没有break,就会继续执行”这个原理吗?intx=1;{}intx=3;行后面的代码,Java编译器又不会报错。所以你可能要浪费许多时间来调试也不知道错在哪。{}但尽管条件不成立,dowhile循环中的代码还是执行了一次:程序publicclass{publicstaticvoidmain(String[]{intx=3;{}{}}}for(int{}…在这里,我们介绍一下for语句后面小括号中的部分,这部分内容又被“;” 加2和每次减2的情景。intx=1;{}{}{}前(最内)循环(while,do.forSwitch)的下一条语句。如果有标号,控制会被传递给当前方法{{break}}里面的while循环。for语句中的第三部分,然后进入下一次循环的比较,是奇数就打印i:程序publicclass{publicstaticvoidmain(String[]{for(int{}}}intx0;intintx98;intintx[]=new上述语句的意义相当于一下子就定义了一百个int变量,变量的名称分别为intsum+=x[i];我们在函数中定义的一些基本类型的变量和对象的变量都是在函数的栈内存中分配,当我堆内存用来存放由new创建的对象和数组,在堆中分配的内存,由Java虚拟机的自动回存中的首地址,栈中的这个变量就成了数组或对象的变量,我们以后就可以在程序中使用栈中放掉)。这也是Javaintx[]=new对象的,x就是一个数组的变量,其的数组的元素个数不定,就象我们定义一个基本intintx[]newint[100];就是将右边的数组对象赋值给左边的数组引intx[];//x2.8用变量不就是C语言中的指针变量吗?数组对象不就是指针变量要指向的那个内存块吗?是的,Java内部还是有指针的,只是把指针的概念对用户隐了。指向任何数组对象,我们只需要将常量nullxx=null内存状态如图2.10所示。执行完x=null;语句后,原来通过newint[100]产生的数组对象不再被任何变量所,程序publicclass{publicstaticvoidmain(String[]{intx=newint[100];{}}}int[]x;//方括号([])位于变量名之前。x=newint[100];intia[]intia[]=new才可以数组中的每个元素,下面的代码将会导致运行时出错,如图2.11。publicclass{publicstaticvoidmain(String[]{inta[]=null;}}何内存块所以还无法其中的元素。intia[]=new果我们不使用了ia[5],如下面的程序:程序publicclass{publicstaticvoidmain(String[]{intia[]=newint[]{1,2,3,4,5};}}ception要想避免“数组越界异常”这样的错误,须要知道数组长度。数组对象的publicclass{publicstaticvoidmain(String[]{intia[]=newint[]{1,2,3,4,5};for(inti=0;i<ia.length;i++){}}} 到的棋盘,如图2.13所示:int表示定义了一个数组变量xx,第一个元素变量为xx[0],第n个元素变量为xx[n-1]。xx求每个元素都是一个数组变量,并没有要求它们所数组的长度是多少,也就是每个数组的长度可以不一样,我们还是的程序代码。int[][]xx=new数组变量,分别为intxx[0][],int[]xx[1],int[]xx[2]。你完全可以把xx[0]想成是一个普通的变量名,只是正好是x、x、[、0、]这五个字母的组合罢了,另外,作者是故意对intxx[0][],int[]xx[1]这两个数组变量用不一样的方式书写,如果你还记得前面讲过的一维数于读者通过对比而真正理解作者“把xx[1]想成是一个普通的变量名”的思想。由于xx[0],xx[1],xx[2]都是数组变量,必须对它们赋值,指向真正的数组对象,才可以xx[0]=newxx[1]=new的内存分配情况如图2.15所示:xx[0][1]=intxx[][]=newint[][]intxx[3][2]3,2},{1,3},{7,5}};//编译出错使用System.arraycopy(source,0,dest,0,图程序publicclass{publicstaticvoidmain(String[]{intia[]=newintib[]=newfor(int}}程序importpublicclassArrSort{publicstaticvoidmain(String[]{intia[]=newint[]{1,2,4,8,3};for(inti=0;i<ia.length;i++)}}第2章Java编程基 Java的关键 Java中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 风筝飞上天教学设计-2023-2024学年小学综合实践活动六年级下册浙科技版
- 氢能重卡在跨境空运市场的应用前景与2025年市场分析报告
- 工程维修劳务外包方案(3篇)
- 安全生产迎查培训课件
- 工程团队奖励方案范文(3篇)
- 数学竞赛三试题及答案
- 东莞数学竞赛试题及答案
- 卫生监督竞赛试题及答案
- 五一建模竞赛试题及答案
- 安全生产责任培训感悟课件
- GB/T 40344.4-2025真空技术真空泵性能测量标准方法第4部分:涡轮分子泵
- 2025秋统编版八年级上册语文教学计划
- 飞书使用培训课件
- DB42T 900-2013 公路隧道监控量测技术规程
- 《现代供电技术》课件(共八章)
- 2025年公共设施管理行业研究报告及未来发展趋势预测
- 高一语文学法指导(绝对经典)
- 双胎妊娠护理查房
- 2025年浙江省中考语文试题卷(含答案解析)
- 2025年副科级警察面试题及答案
- 2025 呼吸内科查房肺康复评估工具课件
评论
0/150
提交评论