《java语言基础》word版

《java语言基础》word版

ID:22684967

大小:116.00 KB

页数:18页

时间:2018-10-30

上传者:U-25947
《java语言基础》word版_第1页
《java语言基础》word版_第2页
《java语言基础》word版_第3页
《java语言基础》word版_第4页
《java语言基础》word版_第5页
资源描述:

《《java语言基础》word版》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

Java基础一.Java平台概述1.Java特点A.简单:语言本身既容易学,又容易使用,而且功能强大。B.面向对象:Java是“纯”面向对象的语言。其特征是:没有全局变量和全局函数那样的概念。面向对象的编程更符合人们的思维方式。C.与平台无关:这是Java的最大优势,即所谓的”WriteOnce,RunAnywhere”,这个特点也称为“可移植性(universality)”。D.解释型:源代码编译之后生成“字节码”文件,然后由JVM解释执行E.多线程:内置多线程支持F.垃圾回收机制(garbagecollection):用以自动回收内存垃圾。G.安全性(security):Java特有的沙箱(Sandbox)机制保证了这种网络语言的安全性。同时它删除了C++语言中复杂而且容易造成错误的指针,它的JavaApplet在客户端运行时也受到限制,从而保证了程序运行的安全性。H.效率稍低。健壮性、安全性、平台无关性、可移植性等方面的提高总是要以牺牲性能为代价的,Java程序的解释执行的效率也要低于直接执行编译后的源码的效率。可谓“鱼与熊掌不可兼得”,但是Java采用了一些很好的措施来弥补这些性能上的差距2.Java的三种平台Java平台主要由java虚拟机(JVM,javavirtualmachine)和应用程序接口(javaapi,javaapplicationprograminterface)组成.JVM实际上是运行在操作系统上的一种程序,其主要作用是对java字节码进行解释并执行。目前有三个版本:Java2微型版(Java2MicroEdition,简称JavaME)Java2平台标准版(Java2StandardEdition,简称JavaSE)Java2平台企业版(Java2EnterpriseEdition,简称JavaEE).3.JDKJDK,即JavaDevelopKit,它是Java的基础。Java程序编译,运行依赖于它。JDK版本:JDKV1.2JDKV1.3JDKV1.4JDKV1.5,JDKV6.04.Java应用程序常用开发工具BorlandJbuilder2006,IBMEclipse,SunNetBeans二.Java数据类型1..基本数据类型8种基本数据类型类型描述boolean在内存中占2个字节。取值为:true,falsechar2字节(java使用Unicode字符集处理文字) 整型数:可以用十进制数八进制数(用0做前缀)十六进制数表示(用0X做前缀)int4字节(-2147483648~~2147483647)long8字节short2字节(-32768~~+32767)byte1字节(-128~~+127)浮点数(实型数)float4字节double8字节说明:A.char类型采用Unicode编码。一个汉字仍为一个字符。Char实际上也是整型量,Unicode表中的字符就是一个字符常量,必须用单引号括起,例如:’B’‘大’,’7’等B.要获得一个字符在Unicode字符集中的编码,必须用强制类型转换。例如:(int)’Y’如果要获得一个0-65535中的数所表示的Unicode表中相应位置的字符,必须使用char进行转换。例如:(char)203202.对象类型有多种形式,如String型对象,用于表示字符串,它是一个与字符串有关的类Strings1=”你好”;Strings2=newString(“Hello!”);3.类型转换:3.1.隐式类型转换byte-àshort-->int-àlong-àfloat-àdoublechar-->int-àlong-àfloat-àdouble3.2.强制类型转换intk=(int)3.7;//舍去小数intm=(int)Math.sqrt(2*365.0);//舍去小数3.3.String类型对象与基本数据类型间的运算String对象可以进行“+”(字符串拼接运算),其结果仍然为String,,即字符串+整数(实数)=字符串例如:intb=256;System.out.println(“b之值为:”+b+”。”);输出结果为:b之值为:256。一.字面量和变量(一)。字面量1.整数字面量任何整数值都是一个整数字面量。常用表示方法:十进制表示法(默认)(基为0--9)1,56,92八进制表示法(基为0--7),用前导0表示:0712,05,013十六进制表示法(基为0—9A-F)用前导0X表示:0x120xFB,0XFF2.浮点数字面量 表示有小数的十进制数。可以用标准计数法或科学计数法表示。Java中的浮点型字面量默认是double,要指定一个float类型,必须在字面量之后增加后缀F(或f),当然,double字面量也可以显式增加后缀D(或d)3.字符字面量java字符字面量编码为unicode.,是16位的值,可以转换为整数并可以用整数运算符,如+-运算符。字符字面量一般用单引号括起来,如‘A’‘大’.其它表示法如下表所示:字符转移序列\表示反斜杠’表示单引号”表示双引号r表示回车 表示换行f表示换页t表示水平制表符(对应键盘TAB键)b表示退格键ddd八进制字符uxxxx十六进制(unicode码)字符(XXXX)(二)。变量变量是基本的存储单元,由一个标识符,一个类型和一个可选的初始值组合而成。1.变量标识符的组成:变量标识符由字母,数字,下划线,$组成,但不能以数字开头,并且不能与java保留字相同。如:MyClassMy2,_width2.变量的声明:type<变量名>如:inta;3.变量初始化<变量名>=<初始值>如:intB=154StringmyName=”Jon”4.变量作用域java变量主要有三种作用域:类作用域,方法作用域和块作用域,类作用域变量在整个类的所有方法中均可使用;方法作用域变量仅在本方法中可用。块作用域,其标志为”{}”,仅在本块中可用。四.运算符和表达式:1.运算符类型运算符一元运算符++--+-()算术运算符*/%(取模)+-移位运算符<<(左移)>>(右移)>>>(左边空出的位用0填补)关系运算符<<=>>===!=位逻辑运算符(&(与)^(异或)|(或)~(求反) 按操作数的二进制逐位运算)短路逻辑运算符!(非)&&(与)||(或)条件运算符(三目运算符)?:赋值运算符=+=-=*=/=%=&=|=^=对象运算符instanceof说明:A.>>(右移)运算符运算法则:当被移动的数为正数,则左边填0,否则,左边填1左移”<<”相当于*2,右移”>>>”相当于/2.B.运算符instanceof用于判断某个对象是否为某个类的实例,返回值为boolean。例如Strings;Booleanb;则sinstanceofBoolean返回falsesinstanceofStrng返回trueC.短路逻辑运算符(&&(与)||(或)!(非))按照优先级计算,当计算到能够确定该逻辑表达式的值时,停止后面的运算。例如:A>=100&&B<999如果给定A=25,则A>=100为假,无论B的值为何值,此时整个逻辑表达式的值都为假。因此,B<999不再计算了。D.位运算是按二进制逐位进行的,可以用来提供速度。如:检查某数是否为奇数,Intn;StringyesNo=(n&1)!=0?‘是’:‘否’;E.异或运算常用于加解密。F.注意++--运算符它们。在变量之前和之后效果是不一样的。inti=5;myArray[--I%=10]=10;//10赋值给数组myArray哪一个元素呢?5,4,2.运算符优先级:最高最低()[].++--~!*/%+->><<>>>>>=<<===!=&^|&&||?:=+=-=*=/=%= 说明:使用园括弧可以强制改变优先级3.表达式由运算符将变量(包括字面量)连接而成的有意义的式子称为表达式。如:A+5;32*6+(34+7);B,A>=100&&B<999五.程序控制语句编程语言使用控制语句来产生执行流,从而完成程序状态的改变。Java控制语句包含选择,迭代,跳转。1.选择语句:1.1.if语句if(<条件>)<语句>[else<语句>]说明:A.<语句>可以是单条语句,也可以是多条语句,但必须用大括弧括起来。B.if语句可以嵌套,即if语句体包含if语句if(a<0)b=12;//没有else语句!if(a<0)b=12;else{x=x+5;y*=65+7;}//嵌套if语句if(I==100){if(j<20)a=b;if(k>100)c=d;elsea=c;}elsea=d;1.2.switch语句switch(<整型表达式>){casevalue1:<语句序列1>casevalue2:<语句序列2>。。。default:<缺省语句序列> }说明:1.<整型表达式>可以是:byte,short,int或char类型或枚举类型1.当表达式与某个case匹配时,则执行该case语句序列,只有所有的case都不匹配时,才执行default语句序列;如果没有任何匹配的case,同时又没有default语句,则什么也不做。3.在switch语句中可以使用break语句跳出switch体。4.Switch语句只能测试相等的情况,if语句可以测试表达式的任何情况5.通常在多分支的情况下使用switch语句。for(intI=0;I<12;I++){Switch(I){Case0:Case1:Case2:Case3:Case4:System.out.println(“小于5的整数”);Break;Case5:Case6:Case7:Case8:Case9:System.out.println(“大于5并且小于10的整数”);Break;Default:System.out.println(“大于等于10的整数”);}//endswitch}//endfor2.迭代语句又称循环语句。包含下列几种:while循环dowhile循环for循环2.1.while循环while(<布尔表达式>)语句;说明:2.1.1.<布尔表达式>必须为boolean2.1.2.语句如果为多条,则必须用大括弧括起来。2.1.3.语句可以为空。例如:intiSum=0;intI=10;while(I>0){ iSum+=I;i--;}intI=10,j=25;while(++I>--j);System.out.println(“I==”+i);2.2.dowhile循环do{//语句}while(<布尔表达式>)这个循环至少要执行一次,一般用于命令选择。Intn=10;do{System.out.println(“Tick“+n);}while(--n>0)2.3.for循环for(<初始化>;<条件>;<迭代>){//body;}说明:A.如果只有一条语句,则大括弧可以省略。B.在<初始化>部分可以声明变量,变量作用域仅在for内C.在<初始化>部分和<迭代>部分可以包含一条以上的语句,用”,”分隔.,变量作用域仅在for内。D.<初始化>,<条件>,<迭代>部分均可省略,这样可构成无限循环。例如:intnum;booleanisPrime=true;for(intI=2;I<=num/2;I++){if(num%I==0){isPrime=false;break;}}if(isPrime==true)System.out.println(“Prime”);ElseSystem.out.println(“NotPrime!”);3.for循环的for_each版本for(type<变量>:<集合变量>)语句块;说明: 1.用于对集合进行遍历。2.Type必须与<集合变量>中的元素类型相同。3.用于只向前的迭代。4.不能改变<集合变量>中元素的值。5.可以用于多维数组上的迭代例如:int[]num={1,2,3,4,5,9,7};intiSum=0;for(intx:num){if(x%2==0)iSum+=x;}intsum=0;intnums[][]=newint[5][3];//二维数组for(intI=0;I<3;I++)for(intj=0;j<5;j++)nums[I][j]=(I+1)*(j+1);for(intx[]:nums){for(inty:x){sum+=y;}}System.out.println(“Summation:”+sum);//数组查找4.跳转语句:java支持三种跳转语句:breakcontinuereturn,这些语句把控制转移到程序的另一部分。4.1.break语句有三种用途。终止switch语句中的语句序列,可以用于退出循环;可用于goto语句的一种替代形式。4.1.1.形式1:break用于跳出当前循环(跳出一层).4.1.2.形式2:break<标签>用于跳转到<标签>处。<标签>是一个带有冒号(:)后缀的标识符。且<标签>标识一块语句(用大括弧括起来),最重要的作用是从最内层循环退出Booleant=true;First:{second: {third:{System.out.println(“Beforethebreak.”);If(t)breaksecond;System.out.println(“thiswon’texecute.”);}System.out.println(“Beforethebreak.”);}System.out.println(“Thisisaftersecondblock..”);}//从最内层循环跳到最外层循环outer:for(intI=0;I<3;I++){System.out.println(“Pass“+I+”:”);For(j=0;j<100;j++){If(j==0)breakouter;System.out.println(j+“.”);}System.out.println(“Thiswillnotprint.”);}System.out.println(“Loopscomplete.”);4.2.continue语句4.2.1.形式1continue忽略该语句后面的所有语句,回到循环迭代处。4.2.1.形式2continue<标签>用于跳转到<标签>所在的那个循环语句的迭代处。例如:输出乘法9*9表outer:{for(intI=0;I<10;I++){for(intj=0;j<10;j++){if(j>I){System.out.println();//空行Continueouter;}//endifSystem.out.println(““+(I*j));}//endfor(j)}//endfor(i)System.out.println();}0 010240369…091827364554637281privatevoidContinue2(){outer:for(inta=1;a<=3;a++){for(intb=1;b<=2;b++){if(a<=2)continueouter;System.out.println(a+""+b);}//endfor(b)System.out.println("你好"+a);}//endfor(a)}//输出:3132你好3//求素数publicvoidOutputPrime(){finalintUpper2=10;outer:for(inta=2;a<=Upper2;a++){for(intb=2;b<=a-1;b++){if(a%b==0)continueouter;//a不是素数,则转到outer,处理下一个整数}//endfor(b)System.out.print(a+"");//输出素数a}}//输出结果:357//break<标签>publicvoidBreak2(){Randomr=newRandom();int[][]a=newint[3][5];//产生随机整数数组for(inti=0;i<3;i++){for(intj=0;j<5;j++) a[i][j]=r.nextInt(20);}inti,j=-1;intiSum=0;outer:for(i=0;i<3;i++){for(j=0;j<5;j++){iSum+=a[i][j];if(iSum>=50){breakouter;//直接跳到最外层循环}}//endfor(j)}//endfor(i)System.out.println(i+"---"+j+"和"+iSum);}4.3.return语句return[表达式]//从一个方法中返回(表达式的值)returnx+y*3;return(b==5);//返回布尔量return//练习:0.计算7+77+777+。。。的前10项之和。1.编写一个程序,用以判断一个5位数n各位数字的奇偶性,并求出他们的和。2.根据给出的三门课程的成绩,求出平均分,总分和评语(>70为优秀,其余为普通)3.假设数组A中的数据已按由小到大的顺序存放,设计一程序把数组A中相同的数据删得只剩一个,然后以每行4个数据的格式输出A数组.4给定一个二维数组B,编程找出每行的最大值,最小值,并将其保存到对应的二维数组s中即第0行中的最大值,最小值放入s[0][0],s[0][1],第1行中的最大值,最小值放入s[1][0],s[1][1]….1.根据下列数据特点,用函数为各元素赋值,生成一个字符型二维数组,然后输出数组各元素。ABCDEFGHIJCDEFGHIJKLEFGHIJKLMNGHIJKLMNOPIJKLMNOPQR2.根据下列数据特点,用函数为各元素赋值,生成一个字符型二维数组,然后输出数组各元素。1@2@3@4@5@2@3@4@5@6@3@4@5@6@7@4@5@6@7@8@5@6@7@8@9@ 5.创建一个整型数组f,它有25个元素,元素之间符合下列规律,然后输出它们f[0]=1,f[1]=2f[I]=f[I-2]+f[I-1](I>=2)6.根据上一题要求,编写一段程序输出f[n]的值(其中n为任意数)。要求使用数组和不使用数组完成。7.编写程序实现下列目的:在一个9位整数n(123456789L)中,将其各位上的数都按素数、合数、其它归类,并用字符’*’表示各类数出现的频率。输出结果如下:素数****合数****其它*8.编写程序输出1—100间的整数,并且满足条件:它是3的倍数,但不是5的倍数,也不是9的倍数。9.设计一个函数,输出下列结果***************10.输出100以内的所有素数11.一个数如果恰好等于它的因子之和,这个数称为”完数”,编写程序求1---m之间的所有”完数”。12.编写程序,输出满足1+2+3+…+n<=9999的最大正整数n.13.编写一个方法,输出11-1000之间满足下列条件的数:该数及该数的平方,3次方均为回文数(用两种算法实现)。14.设计一个方法,输入学生成绩,按下列条件输出等级。90<成绩<100优80<成绩<90良0<成绩<80中0<成绩<60差15.数组A中存放某地一段时间的大气污染指数,例如int[]pollute={1,4,6,10,2,3,5,11,15,23,12},试设计一个方法,找出污染指数大于等于8且连续出现5天以上的最长的连续天数。16.用代码生成汉字字库(从’一’到‘龟’),并将其写入文件中,每个汉字信息占一行(汉字编码,汉字),17.设计一个类,封装对Unicode子符集的操作。要求提供下列静态方法:publicstaticchargetChar(intunicode)//输入字符编码unicode,返回对应的字符publicstaticintgetUnicode(charnewChar)//输入字符newChar,返回对应的编码publicstaticchar[]getChineses(intcount)//返回前count个的汉字字符(编码最小的汉字的unicode码”一”等于19968)。六.数组数组是一组相同类型的元素的集合,类型可以是基本数据类型或引用类型数组在Java中是一个对象,不是基本数据类型。 数组可以是一维的也可以是多维的,其中二维数组每一行的元素可以相同也可以不相同。如果每一行的元素不相同,这样的数组又称为”锯齿”数组1.声明:1.1.一维数组声明。type[]<变量名>或type<变量名>[]如:int[]BObject[]obj;//对象数组。如:classStudent{}//声明类StudentstArray=newStudent[40];1.2.二维数组声明type[][]<变量名>或type<变量名>[][]如:double[][]X2.实例化2.1.一维数组实例化<变量名>=newtype[<长度>];int[]x;x=newint[20];或int[]y=newint[10];2.2.二维数组实例化可以将二维数组看成是一维数组的数组,即一维数组的每一个元素又是一个一维数组。<变量名>=newtype[<第一维长度>][];double[][]d;//实例化数组对象本身d=newdouble[3][2]//3行2列d=newdouble[3][];//锯齿数组d[0]=newdouble[5];d[1]=newdouble[3];d[2]=newdouble[15];3.初始化3.1.type[]x={<值列表>};int[]a={1,5,3,9,200};//a的长度由编译器根据初始值的个数确定3.2.type[]y=newtype[]{<值列表>};double[]m=newdouble[]{32.0,45.1,60};3.3.type[][]kk={{},{},{},…}float[][]ff={{1,2,3},{,5,3,2},{0,1,8},{1,1,3}}//定义4*3的二维数组3.4.锯齿数组type[][]A=null;A=newtype[长度][];//确定行长度A[0]=newtype[长度];//确定列长度例如:long[][]B;B=newlong[3][];//数组共有3行B[0]=newlong[2];//第0行有2个元素B[1]=newlong[4];//第1行有4个元素B[2]=newlong[7];//第2行有7个元素 4.数组元素的访问<数组名>[index]数组首元素的索引为0,其后的元素的索引依次为1,2,3,…例如:int[]m={2,190,5}m[1]读取索引为1的元素,m[0]=100将10写入索引为0的元素,5.数组常用属性:intlength表示数组长度。注意:数组一旦定义,其长度不能再改变!。例如double[]a=newdouble[5],如果访问a[5]=99则是非法的!说明:对于二维锯齿数组,可以使用length获得第index行的长度,从而可以动态访问它。例如:long[][]B;B=newlong[3][];//数组共有3行B[0]=newlong[2];//第0行有2个元素B[1]=newlong[4];//第1行有4个元素B[2]=newlong[7];//第2行有7个元素for(introw=0;row.java3.运行java应用程序3.1.切换到命令行方式 3.2.进入.class文件所在的包文件夹的上一级文件夹。然后键入:java[包名.]4.运行java程序的其它方式4.1.运行.class文件java[options]class[args...]例如:javamyHello"大连"//带参数"大连"运行myHello.class程序4.2.运行.jar文件java-jar[options]jarFile[args...]例如:java-jarmyHello.jar//运行myHello.jar程序4.3.常用[options]说明:4.3.1.指定类(.class)文件路径-cp–classpath4.3.2。设置java运行时堆大小-Xms设置java最小堆尺寸.-Xmx设置java最大堆尺寸例如java-jar-Xms256m-Xmx1024mLoadData.jar运行java程序LoadData.jar,并设置初始堆大小为512,最大堆大小为1024.类型包装器—WrapperClass在Java中使用基本数据类型来保存语言支持的基本数据类型,是出于性能方面的考虑,因为,使用对象类型会引起系统较大的开销。类型包装器提供了将基本数据类型封装在一个对象内部的机制。类型包装器有:Double,Float,Long,Integer,Short,Byte,Character,Boolean.一.字符包装器---Character构造函数:Character(charc)//ch用于指定要由创建的Character对象包装字符操作函数:charcharValue();获得包装器内的char的值:二.布尔量包装器---Boolean构造函数:Boolean(booleanboolValue)//boolValue只能取true,falseBoolean(StringboolString)操作函数:booleanbooleanValue();获得包装器内的boolean的值三.数字类型包装器这是使用最多的包装器,它们是Byte,Short,Integer,Long,Float,Double,所有数字类型的包装器都继承自Number抽象类。1.构造函数:Double(doubled)Float(floatf)Long(longl)Integer(intI)Short(shorts)Byte(byteb) 2.操作函数:doubledoubleValue()floatfloatValue()longlongValue()intintValue()shortshortValue()bytebyteValue();四.Integer类型包装器1.构造函数:Integer(intvalue)Integer(Strings)throwsNumberFormatException//s为非数字时,抛出异常2.方法:bytebyteValue()shortshortValue();intintValue()longlongValue();//上述函数将当前类型转换为相应的类型publicstaticintparseInt(Strings)throwsNumberFormatException将串s转换为10进值整数,s为非数字时,抛出异常publicstaticintparseInt(Strings,intradix)throwsNumberFormatException将字符串s按指定的进制(解释)radix转换为10进制整数s为非数字时,抛出异常publicstaticStringtoBainaryString(intn)将n转换为二进值字符串publicstaticStringtoHexString(intn)将n转换为十六进值字符串publicstaticStringtoOctalString(intn)将n转换为八进值字符串publicstaticStringtoString(intn)将n转换为十进值字符串

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭