黑马c、全栈培训第24期压缩版13移动打车项目1-java基础1课程one day_第1页
黑马c、全栈培训第24期压缩版13移动打车项目1-java基础1课程one day_第2页
黑马c、全栈培训第24期压缩版13移动打车项目1-java基础1课程one day_第3页
黑马c、全栈培训第24期压缩版13移动打车项目1-java基础1课程one day_第4页
黑马c、全栈培训第24期压缩版13移动打车项目1-java基础1课程one day_第5页
已阅读5页,还剩165页未读 继续免费阅读

下载本文档

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

文档简介

目课程介简开发工开发环境配基础语基础数据类Java修饰Java循环控JavaStringBuffer和StringBuilderJavaJavaJavaJava流(Stream)、文件(File)和JavaJava重写(Override)与重载JavaJavaJavaJavaJava包Java

课程介一天搞定java基本要求具有一定编程的基础来快速了解java语简java1.6中文手需与类名一致),代码如下:publicpublicoWorldpublicstaticvoidmain(String{ o}}$$o执行命令解析以上我们使用了两个命令javacjavajavac命令用于将java源文件编译为class字节码文件,如:javacoWorld.classjava命令可以运行class字节码文件,如:java Java平台的总称。由JamesGosling和同事们共同研发,并在1995年正式推出。Java分为三系JavaSE(J2SE)(Java2tformStandardEdition,java平台标准版)JavaEE(J2EE)(Java2tform,EnterpriseEdition,java平台企业版)JavaME(J2ME)(Java2tformMicroEdition,java平台微型版)。本已经更名以取消其中的数字"2":J2EE更名为JavaEE,J2SE更名为JavaSE,J2ME更名为JavaME。主要Java语言是简单Jva语言的语法与C语言和++语言很接近,使得大多数程序员很容易学习和使用。另一方面,a丢弃了++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,而是。并提供了自动的废料收集,使得程序员不必为内存管理而担忧。Java语言是面向Jva语言全面支持动态绑定,而C+Java语言是分布Jvae应用的开发,在基本的Java编程接口(a),它提供了用于网络应用编程的类库,包括U、Lkeve。Jav(方法激活)机制也是开发分布式应用的重要。Java语言是健壮Jva的类型机制、异常处理、的自动收集等是Java。对指针的丢弃是JavaJav的安全检查机制使得JavaJava语言是安全Jva通被用在网络环境中,为此,Java提供了一个安全机制以防代码的攻了Java语言具有的许多安全特性以外,Java安全防范机制(类),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecuJav应用设置安全哨Java语言是体系结构中立Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格c的文件),然后可以在实现这个JavaJava语言是可移这种可移植性来源于体系结构中立性,另外,JavaJava系统本身也具有很强的可移植性,JavaJavJvaIJava语言是解释如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个a平台的任何系统中运行。在运行时,Jva平台中的Jva解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。Java是高性能与那些解释型的高级语言相比,Java的确是高性能的。事实上,Java速JJstn)编译器技术的发展越来越接近于C+。Java语言是多线JavaTh建。通常有两种方法来创建线程:其一,使用型构为Th一个实现了Th类派生出子类并方法,使用该子类创建的对象即为线程。值得注意的是Th接口,因此,任何一个线程均有它的方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。JavasynchdJava语言是动态Jva语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。Java开发工Linux系统或者Windows95/98/2000/XP,WIN7/8系统JavaJDK7(1)首先我们需要java开发工具包JDK, 在页面中你需要选择接受,并根据自己的系统选择对应的版本,本文Window64位系统为例J的安装根据提示进行,还有安装J的时候也会安装J安装JDK,安装过程中可以自定义安 等信息,例如我们选择安 C:\ProgramFiles(x86)\Java\jdk1.8.0_91(2)配置环境变安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置选择"高级"选项卡,点击"环境变量然后就会出现如下图所画面系统变量J_L若已存在则点击编辑,不存在则点击新建。变量设置参数如下:变量变量变量变量JAVA_HOMEPATHCLASSPATH后,你可以启动Eclipse来编写代码,它会自动完成java环境的配置。注意:如果使用1以上版本的JCL环境变量,也可以正常编译和运行Java测试JDK是否安装正所谓工欲善其事必先利其器,我们在开发很多,本文为大家推荐以下下几款开发工具:Eclipse(推荐):另一个免费开源的javaIDE,地址orgEclipseIDEforJavaDevelopers:载地址:基础语Jav类:类是一个模板,它描述一类对象的行为下面看一个简单的Java程序,它将打印字符 opublicpublicoWorld/*第一个Java*它将打印字符 opublicstaticvoidmain(String oWorld"o}}编写Java程序时,应注意以下几大小写敏感:Jav是大小写敏感的,这就意味着标识符与FstJvas。源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为a。(件名和类名不相同则会导致编译错误)。主方法:所有的Java程序由publicstaticvoidmain(String[]args)方法开始Java重本节我们重点研究对象和类的概念java中的对软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体件开,方作对部状改变象的相用通过来完java中的类可以看成是创建Java对象的模板通过下面一个简单的类来理解下Java中类的定义publicclasspublicclassDog{Stringbreed;intage;Stringvoid}void}void}}一个类可以包含以下类型变量和初始化都是在方法中,方法结束后,变量就会自动销毁。块。类变量:类变量也在类中,方法体之外,但必须为static类型每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。下面是一个构造方法示例publicclasspublicclassPuppy{public}publicPuppy(String}}创建对对象是根据类创建的。在Java:一个对象,包括对象名称和对象类型。初始化:使用new创建对象时,会调用构造方法初始化对象publicpublicclasspublicPuppy(StringSystem.out.println("PassedNameisname}publicstaticvoidmain(String下面的语句将创建一个PuppyPuppymyPuppy=newPuppy("tommy"}}编译并运行上面的程序,会打印出下面的结果PassedPassedNameis实下面的例子展示如何实例变量和调用成员方法publicclasspublicclassPuppy{intpublicPuppy(String//这个构造器仅有一个参数:nameSystem.out.println("PassedNameisname}publicvoidsetAge(intage){puppyAge=age;}publicintgetAge(System.out.println("Puppy'sageis:"+puppyAge);returnpuppyAge;}publicstaticvoidmain(String/*创建对象PuppymyPuppy=newPuppy("tommy"/*通过方法来设定age*/myPuppy.setAge(2);/*调用另一个方法获取age*/myPuppy.getAge(); 成员变量System.out.println("VariableValue:"+myPuppy.puppyAge;}}编译并运行上面的程序,产生如下结果PassedPassedNameis:tommyPuppy'sageis:2VariableValue:2源文件规节的部分,源文的。当个源中定个类,并且还有k语句时,要特别注意这些规则。一个源文件可以有多个非public源文件的名称应该和ccEEy。如果一个类定义在某个包中,那么package语句应该在源文件的首行如果源文件包含语句,那么应该放在cc语句应该在源文件中最前面。语句和c语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包。Java包主要用来对类和接口进行分类。当开发JavImportJavaJava语句就是用来提供一个合理的路径,使得编译器可以找到某个类。例如,下面令行将会命令编译器载入v_svimportimport一个简单的例在该例子中,我们创建两个类:Employee和EmployeeTest。首先打开文本编辑器,把下面的代码粘贴进去。注意将文件保存为Employee.java。Employee类有四个成员变量:name、age、designation和salary。该类显式了一个构造方法,该importimportjava.io.*;publicclassEmployee{intage;doublesalary;EmployeepublicEmployee(Stringname){=name;}设置agepublicvoidempAge(intempAge){age=empAge;}/*设置designation的值publicvoidempDesignation(StringempDesig){designation=empDesig;}/*设置salary的值publicvoidempSalary(doubleempSalary){salary=empSalary;}/**/publicvoidprintEmployee(){System.out.println("Name:"+name);System.out.println("Age:"+age);System.out.println("Designation:"+designation);System.out.println("Salary:"+salary);}}程序都是从方法开始执行。为了能运行这个程序,必须包含一个实例对象。类,该类实例化y类的实例,并调用方法设置变量的值。将下面的代码保存在Eyvimportimportpublicclasspublicstaticvoidmain(String/*EmployeeempOne=newEmployee("JamesSmith");EmployeeempTwo=newEmployee("MaryAnne");empOne.empDesignation("SeniorSoftwareEngineer");}}编译这两个文件并且运行EmployeeTest类,可以看到如下结果$$javac$vi$javac$javaEmployeeTestName:JamesSmithDesignation:SeniorSoftwareEngineer变量就是申请内存来值。也就是说,当创建变量的时候,需要在内存中申请空间。内存管理系统根据变量的类型为变量分配空间,分配的空间只能用来该类型数据。因此,通过定义不同类型的变量,可以在内存中整数、小数或者字符。a的两大数据类型:数据类v(四个整数型,两个浮点型)字符类型,还有一种布尔型。12byte类型用在大型数组约空间,主要代替整数,因为byte变量占用的空间只例子:bytea100,byteb50。o数据类型是3o数据类型也可以像那样节省空间。一个sho型变量所占空间的二分之一;默认值是例子:shorts1000,shortr20000。最大值是2,147,483,647(2^311);默认值是例子:inta100000intb200000。9232064726最大值是 -longa100000L,Longb200000L。默认值是例子:floatf1=234.5f。例子:doubled1123.4。例子:booleanonetrue。例子:charletter=‘A’。实例对于数值类型的基本类型的取值范围,我们无需强制去,因为它们的值都已publicpublicclassPrimitiveTypeTestpublicstaticvoidmain(String[]args)//System.out.println("基本类型:byte二进制位数:System.out.println("最小值:Byte.MIN_VALUE=Byte.MIN_V

System.out.println("最大值:Byte.MAX_VALUE=Byte.MAX_V

//System.out.println("基本类型:short二进制位数:System.out.println("最大值:Short.MAX_VALUE=Short.MAX

//System.out.println("基本类型:int二进制位数:System.out.println("最小值:Integer.MIN_VALUE=Integer

//System.out.println("基本类型:long二进制位数:System.out.println("最大值:Long.MAX_VALUE=Long.MAX_V

//System.out.println("基本类型:float二进制位数:System.out.println("最大值:Float.MAX_VALUE=Float.MAX

//System.out.println("基本类型:double二进制位数:System.out.println("最小值:Double.MIN_VALUE=Double.MSystem.out.println("最大值:Double.MAX_VALUE=Double.M}

//System.out.println("基本类型:char二进制位数://+(int)//+(int)}编译以上代码输出结果如下所示87基本类型:char二进制位数:16字"表示E之前的数字要乘以10的多少次方。比如3.14E3就是3.14×103=3140,3.14E-33.14x10-30.00314实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装java.lang.Void,不过我们无法直接对它们进行操作在Java中,类型的变量非常类似于C/C++的指针。类型指向一个对象,指向对象的变量是变量。这些变量在时被指定为一个特定的类型,比如Employee、Pubby等。变量一旦后,类型就不能被改变了。对象、数组都是数据类型。所有类型的默认值都是null一个变量可以用来与任何与之兼容的类型。例子:Sitesite=newSite("Runoob")。常量在程序运行时,不会被修改的量在Java中使用final关键字来修饰常量,方式和变量类似finalfinaldoublePI= bytebytea=68;chara=sho都可以用十进制、进制的方式来表示。当使用常量的时候,前缀intintdecimal=100;intoctal=0144;inthexa=0x64;和其他语言一样,Java""o"\"Thisisin字符串常量和字符常量都可以包含任何Unicode字符。例如charchara='\u0001';Stringa="\u0001";java语言支持一些特殊的转义字符序列Java变局部变量在方法、构造方法或者语句块中修饰符不能用于局部变量局部变量只在它的方法、构造方法或者语句块中可见;变量默认所以变量被后须经始化可以。1在以下实例中是一个局部变量。定义在方法中,它的作用域就限制在这个方法中。packagepackagepublicTest{publicvoidintage=0;age=age+7; 是:"+}publicstaticvoidmain(Stringargs[]){Testtest=newTest();}}以上实例编译运行结果如下小狗小狗 是:实例在下面的例子中age变量没有初始化,所以在编译时会出错publicpublicTest{publicvoidintage=age+ 是:"+}publicstaticvoidmain(Stringargs[]){Testtest=newTest();}}以上实例编译运行结果如下Test.java:Test.java:4:variablenumbermightnothavebeeninitializedage=age+7;^1实例变量在一个类中,但在方法、构造方法和语句块之外;实例变量在对象创建的时候创建,在对象被销毁的时变量应该被一法、方法语句块,外部通过这些方式获取实例变量信息;用修饰符可以使实例变量对子类可见;实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是ae用类型变量的默认值是l。变量的值可以在时指定,也可以在构造方法中指变量直接变量名。静态以及类中应该完全Oec。importimportjava.io.*;publicclassEmployee{publicStringprivatedoublepublicEmployee(StringempName){name=}publicvoidsetSalary(doubleempSal){salary=}publicprintEmp(){System.out.println("name:+name);System.out.println("salary:"+}publicstaticvoidmain(Stringargs[]){EmployeeempOne=new}以上实例编译运行结果如下name:name:Ransikasalary类变量也称为静态变量,在类中以stac字但必方法方法句无论一个类创建了多少个对象,类只拥有类变量的一静态变量除了被为常量外很少使用。常量是指为public/private,finalstatic类型的变量。常量初始化后不可改变静态变量在静态区。经常被为常量,很少单独使用sttc。静态变量在程序开始时创建,在程序结束时销毁。与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量public类型默认值和实例变量相似。数值型变量默认值是0,布尔型默认值是false,类型默认值是null。变量的值可以在的时候指定,也可以在构造方法中指定。此静态变量可以通过:ClassName.VariableName的方式变量不是public和final类型,其命名方式与实例变量以及局部变量名方式一致实例importimportjava.io.*;publicclassEmployee{privatestaticdoublepublicstaticfinalStringDEPARTMENT"开发人员";publicstaticvoidmain(Stringargs[]){salary=}}以上实例编译运行结果如下注意:如果其他类想要该变量,可以这样:Employee.DEPARTMENT修饰Java非修饰publicpublicclassclassName//}privatebooleanstaticfinaldoubleweeks=9.5;protectedstaticfinalintBOXWIDTH=42;publicstaticvoidmain(String[]arguments)}Jva中可以使用控制符来保护对类、变量、方法和构造方法的。Java支种不同的权限。默认的,也称为default,在同一包内可见,不使用任何修饰符。私有的,以private修饰符指定,在同一类内可见。共有的,以public修饰符指定,对所有类可见默认修饰符-不使用任何关键默认修饰符的和方对同包内是可。接的变量都隐式为cstac而接口里的方法默认情况下权限为。实例 如下例所示,变量和方法的可以不使用任何修饰符StringStringversion="1.5.1";booleanprocessOrder(){return}私有修饰符-私有修饰符是最严格的级别,所以被为vae方法只能被所属类,并且类和接口不能为vat。为私有类型的变量只能通过类中公共的getter方法被外部类。publicpublicclass{privateStringformat;publicStringgetFormat(){return}publicvoidsetFormat(String{this.format=}}Lo变量为私有变量,所以其他类不能直接得到和设置该变量的值。为了使其他类能够操作该变量,定义了两个c(返回format的值)和setFormat(String)(设置format的值公有修饰符-被为public的类、方法、构造方法和接口能够被任何其他类如果几个相互的c分布在不同的包中,则需要导入相应c包。由于类的继承性,类所有的公有方法和变量都能被其子类继承。以下函数使用了公有控制publicpublicstaticvoidmain(String[]arguments)//}Java程序的 方法必须设置成公有的,否则,Java解释器将不能运行该类受保护的修饰符-被为的变量、方法和构造器能被同一个包中的任何其他类,也能够被不同包中的子类。d修饰符不能修饰类和接口,方法和成员变量能够为,但是接口的成员变量和成员方法不能为d。子类能符法,能相使方法和变量。下面的父类使用了protected修饰符,子类重载了父类的openSpeaker()方法classclassyerprotectedbooleanopenSpeaker(Speakersp)}}class{booleanopenSpeaker(Speaker{}}如果把)方法为vate,那么除了dor之外的类将不能访问该方法。如果把)为c,那么所有的类都能够该方法。如果我们只想让该方法对其所在类的子类可见,则将该方法为。请注意以下方法继承的规则父类中为public的方法在子类中也必须为public父类中为的方法在子类中要么为么。不能为vat。父类中为private的方法,不能够被继承非修饰为了实现一些其他的功能,Java也提供了许多非修饰符static修饰符,用来创建类方法和类变量F修饰符,用来修饰类、方法和变量,修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。修饰符,用来创建抽象类和抽象方法静态变量Sc关键字用来独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。静态变量也被成为类变量。局部变量不能被为c静态方法Sc来立于的静法。方法使用非静变量。静态方法从参数列表得到数据,然后计算这些数据。classname.methodname的方式。如下例所示,static修饰符用来创建类方法publicpublicclassInstanceCounterprivatestaticintnumInstances=0;protectedstaticintgetCount(){return}privatestaticvoid{}{}publicstaticvoidmain(String[]{System.out.println("Startingwith"+InstanceCounter.getCount()+"instances");for(inti=0;i<500;++i){new}System.out.println("Created"+InstanceCounter.getCount()+"instances");}}以上实例运行编辑结果如下StartedStartedwith0instancesCreated500instancesFinal变量F变量能被显式地初始化并且只能初始化一次。被为的对象的不能指向不同的对象。但是对象里的数据可以被改变。也就是说的不能改变,但是里面的值可以改变。Fsta修饰符一起使用来创建类常量publicpublicTest{finalint=//下面 publicstaticfinalintBOXWIDTH=6;staticfinalStringTITLE="Manager";publicvoidchangeValue()value12;//将输出一个错误}Final类中的Final方法可以被子类继承,但是不能被子类修改。final方法的主要目的是防止该方法的内容被修改。如下所示,使用final修饰符方法。publicpublicclasspublicfinalvoid}}FinalFinal类不能被继承,没有类能够继承final类的任何特性publicpublicfinalclassTest}抽象类:抽象类不能用来实例化对象,抽象类的唯一目的是为了将来对该类 Caravan{Caravan{privatedoubleprice;privateStringmodel;privateString voidgoFast()// void}抽象方被成sc。任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是一个含若抽象,那类必须为类。类可包含抽象方法。抽象方法的以分号结尾,例如 实例 m()//}classSubClassextendsvoidm(){}}Java运算计算机的最基本用途之一就是执行数算,作为一门计算机语言,Jav一套丰富的运算符来变量。我们可以把运算符分成以下几组:其他运表格中的实例假设整数变量A的值为10,变量B的值为下面的简单示例程序演示了算术运算符。并粘贴下面的Java程序并保存Test.java文件,然后编译并运行这个程序{a=int=int=int=+b="++-b="+-*b="+*/a="+/%a="+%%a="+%="+="+查看d+与++d="+="+}}publicclassTestpublicstaticvoidmain(StringpublicclassTestpublicstaticvoidmain(Stringa+b=a-b=a*b=b/a=2b%a=0c%a=5====下表为Java支持的关系运表格中的实例整数变量A的值为10,变量B的值为下面的简单示例程序演示了关系运算符。并粘贴下面的Java程序并保存Test.java文件,然后编译并运行这个程序publicpublicclassTestpublicstaticvoidmain(String{inta=10;intb=20;System.out.println("a==b="+(a==b));System.out.println("a!=b="+(a!=b));System.out.println("a>b="+(a>b));System.out.println("a<b="+(a<b));System.out.println("b>=a="+(b>=a));System.out.println("b<=a="+(b<=a)}}以上实例编译运行结果如下aa==b=falsea!=b=truea>b=false<b=>=a=trueb<=a=false设a=60,b=13;它们的二进制格式表示将如下:AA=0011B=0000A&b=0000A|B=0011A^B=0011~A=1100下表列出了位运算符的基本运算,假设整数变量A的值为60和变量B的值为下面的简单示例程序演示了位运算符。并粘贴下面的Java程序并保存Test.java文件,然后编译并运行这个程序publicpublicclassTestpublicstaticvoidmain(String{inta=60;/*60=00111100intb=13;/*13=00001101*/intc=0;c=a& /*12=00001100System.out.println("a&b="+cc=a|/*61=00111101System.out.println("a|b="+cc=a^/*49=00110001System.out.println("a^b="+cc=/*-61=11000011System.out.println("~a="+cc=a<</*240=11110000System.out.println("a<<2="+cc=a>>/*15=1111System.out.println("a>>2="+cc=a>>>/*15=00001111System.out.println("a>>>2="+c}}以上实例编译运行结果如下aa&b=12a|b=61a^b=~a=-a<<2=a>>a>>>下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B下面的简单示例程序演示了逻辑运算符。并粘贴下面的Java程序并保存Test.java文件,然后编译并运行这个程序publicpublicclassTestpublicstaticvoidmain(String{booleana=true;booleanb=false;System.out.println("a&&b="+(a&&b));System.out.println("a||b="+(a||b));System.out.println("!(a&&b)="+!(a&&b));}}以上实例编译运行结果如aa&&b=falsea||b=true!(a&&b)=下面是Java语言支持的赋值运算符面的简单示例程序演示了赋值运算符。并粘贴下面的Java程序并保存Test.java文件,然后编译并运行这个程序publicclassTestpublicstaticvoidmain(String{inta=10;intb=20;intc=0;c=a+System.out.println("c=a+b="+c);c+=a;System.out.println("c+=a="+c);c-=a;System.out.println("c-=a="+c);c*=a;System.out.println("c*=a="+c);a=10;c=c/=aSystem.out.println("c/=a="+c);a=10;c=c%=aSystem.out.println("c%=ac<<=2;System.out.println("c<<=2c>>=2;System.out.println("c>>=2c>>=2;System.out.println("c>>=ac&=a;System.out.println("c&=2c^=a;

="+c="+c="+c="+c="+cSystem.out.println("c^=a ="+c);c|=a;System.out.println("c|= ="+c}}以上实例编译运行结果如下c=a+b=c+=a=ca=ca=ca=1ca=c2=c2=c2=ca=ca=ca=条件运算符也被称为三元运算符。该运算符有variablevariablex=(expression)?valueiftrue:valueifpublicclassTestpublicstaticvoidmain(Stringargs[]){inta,b;a=b=(a==1)?20:System.out.println("Valueofbis:"+b);b=(a==10)?20:30;System.out.println("Valueofbis:"+b}}以上实例编译运行结果如下ValueValueofbis:30Valueofbis:instanceOf该运算符用于操作对象实例,检查该对象是否是一个特定类型(instanceof运算符使用格式如下((Objectreferencevariable)instanceOf(class/interface如果运算符左侧变量所指的对象,是操作符右侧类或接口cse象,那么结果为真。下面是一个例子StringStringname=booleanresultnameinstanceOfString;由于name是String类型,如果被比较的对象兼容于右侧类型,该运算符仍然返回true 看下面的例子classclassVehiclepublicclassCarextendsVehicle{publicstaticvoidmain(Stringargs[]){Vehiclea=newCar();booleanresult=ainstanceofCar;System.out.println(result);}}以上实例编译运行结果如下当多个运算符出现在一个表达式中,谁先谁后呢?这就涉及到运算符的优先级别的问题。在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果差别例如,(+3)+(+2)2,这个表达式如果按加号最优先计算,答案就是8,如果按照乘号最优先,答案则是。x=7+3x为乘法运算符比加法运算符有较高的优先级,所以先计算3*。下表中具有最高优先级的运算符在的表的最上面,最低优先级的在表的循环控 语句:表达式{}语句:新部变该变类型和数素的匹配作用域限定在循环语句块,其值与此时数组元素的值相等。表达式:表达式是要的数组名,或者是返回值为数组的方法publicpublicclassTestpublicstaticvoidargs[]){int[]numbers={10,20,40,for(intxnumbers){System.out.print(x);}String[]names={"James","Larry","Tom","Lacy"};for(Stringname:names){System.out.print(name);}}以上实例编译运行结果如下JavaNumber一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte、intlong、doubleintinta=5000;floatb=13.65;bytec=0x4a;所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象Number这种由编译器特别支持的包装称为装箱,所以当内置数据类型被当作对象使用的时候,编译器会把内置类型装箱为包装类。相似的,编译器也可以把一个对象拆箱为内置类型。下面是一个使用Integer对象的实例publicpublicclasspublicstaticvoidmain(Stringargs[]){Integerx=5;x=x+}}以上实例编译运行结果如下x被赋为整型值时,由于x是一个对象,所以编译器要对xx能进行加运算,所以要对x进行拆箱。Number下面的表中列出的是Number子类实现的方法JavaCharacter 类用于对单个字符进行操作Character类在对象中包装一个基本charcharcharch=UnicodecharuniChar=char[]charArray={'a','b','c','d','e'提供了包装类c类提供了一系列方法来字符。你可以使用Ch构造方法创建c类对象,例如:CharacterCharacterch=new在某些情况下,Java编译器会自动创建一个Character对象例如,将一个cha类型的参数传递给需要一个Ch类型参数转换为c这种特征称为装箱,反过来称原始字符'a装箱到Character对象chCharacterch=原始字符'x用test//返回拆箱的值到'c'charc前面有反斜杠(\)当打印语句遇到一个转义序列时,编译器可以正确地对其进行解释。以下实例转义双publicpublicclassTestpublicstaticvoidmain(String }}Character对于方法的完整列表,请参考的java.lang.CharacterAPI规范JavaString字符串广泛应用在JavaJav中字符串属于对象,Java创建和操作字符串。创建字符串最简单的方式如下StringStringgreeting= o在代码中遇到字符串常量时,这里的值是"o 和其它对象一样,可以使用关键字和构造方法来创建Stringpublicpublicclasspublicstaticvoidmain(StringoArray={'h','e','l','l','o',oString=new oString}}以上实例编译运行结果如下SS对象,那它的值就无法改变如果需要对字符串做很多修改,那么应该选择使用Sr&r用于获取有关对象的信息的方法称为器方法类的一个器方法是方法,它返回字符串对象包含的字符数。下面的代码执行后,publicpublicclassStringDemopublicstaticvoidmain(String{Stringsite=intlen=site.length();(len}}String类提供了连接两个字符串的方法返回string2连接string1的新字符串。也可以对字符串常量使用concat()方法,如"My"Mynameis更常用的是使用'+'操作符来连接字符 o,"+"world"+结果如下publicpublicclassStringDemopublicstaticvoidmain(String{Stringstring1= System.out.println("1、string1}}以上实例编译运行结果如下 我们知道输出格式化数字可以使用printf()和format()方法。String类使用静态format()返回一个String对象而不是PrintStream对象fo能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。如下所示:System.out.printf(System.out.printf(""%f整型变量的值为%d,字符串变量的值为""is%s",floatVar,intVar,你也可以这样StringStringfsString.format("浮点型变量的的值为"%f整型变量的值为%d,字符串变量的值为""%s",floatVar,intVar,stringVar);String下面是String类支持的方法,详细,参看JavaStringAPI文档JavaStringBuffer和StringBuilder当对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类不同的是,e类的对象能够被多次的修改,并且不产生新的未使用对象。e有速度优势,所以多数情况下建议使用类。然而在应用程序要求线程安全的情况下,则必须使用publicpublicclasspublicstaticvoidmain(Stringargs[]){StringBuffersBuffer=newStringBuffer("test");sBuffer.append("StringBuffer");System.out.println(sBuffer);}}以上实例编译运行结果如下testtestStringStringBuffer以下是StringBuffer类支持的主要方下面的列表里的方法和String类的方Java数Java语言中提供的数组是用来固定大小的同类型元素你可以一个数组变量,如numbers[100]来代替直接100个独立变量 本将为大家介绍Java数组的、创建和初始化,并给出其对应的代码首先必须数组变量,才能在程序中使用数组。下面是数组变量的语法dataType[]dataType[]或dataTypearrayRefVar[];注意:建议使用dataType[]arrayRefVar的风格数组变量。dataType下面是这两种语法的代码示例doubledouble[]或double//Java语言使用new操作符来创建数组,语法如下arrayRefVararrayRefVar=new上面的语法语句做了两件事一、使用dataType[arraySize]创建了一二、把新创建的数组的赋值给变量arrayRefVar数组变量的,和创建数组可以用一条语句完成,如下所示dataType[]dataType[]arrayRefVar=new另外,你还可以使用如下的方式创建数组dataType[]dataType[]arrayRefVar={value0,value1,...,数组的元素是通过索引的。数组索引从0开始,所以索引值从0下面的语句首先了一个数组变量Ls,接着创建了一个包含元素的数组,并且把它的赋值给LspublicpublicclassTestArraypublicstaticvoidmain(String[]args)intsize=double[]myList=newdouble[size];myList[0]=5.6;myList[1]=myList[2]=myList[3]=myList[4]=myList[5]=myList[6]=myList[7]=myList[8]=myList[9]=doubletotal=for(inti=0;i<size;{total+=}System.out.println("}}以上实例输出结果为总和为:总和为:下面的描绘了数组myList。这里myList数组里有10个double元素,它的下标0到9o示该实例完整地展示了如何创建、初始化和数组publicpublicclassTestArraypublicstaticvoidmain(String[]{double[]myList={1.9,2.9,3.4,for(inti=0;i<myList.length;{System.out.println(myList[i]+"}doubletotal=for(inti=0;i<myList.length;{total+=}System.out.println("Totalis"+doublemax=for(inti=1;i<myList.length;{if(myList[i]>max)max=}System.out.println("Maxis"+}}以上实例编译运行结果如下TotalisMaxis该实例用来显示数组myList中的所有元素publicpublicclassTestArraypublicstaticvoidmain(String[]{double[]myList={1.9,2.9,3.4,for(doubleelement:{}}}以上实例编译运行结果如下数组可以作为参数传递给方法。例如,下面的例子就是一个打印publicpublicstaticvoidprintArray(int[]{for(inti=0;i<array.length;i++){System.out.print(array[i]+"");}}下面例子调用printArray方法打印出3,1,2,6,4和printArray(printArray(newint[]{3,1,2,6,4,publicpublicstaticint[]reverse(int[]{int[]result=newfor(inti=0,j=result.length-1;i<list.length;i++,--)result[j]=}return}以上实例中result数组作为函数的返回值Arraysv类能方便地操作数组,它提供的所有方法都是静态的。具有以下功给数组赋值:通过fill方法对数组排序:通过sort方法,比较数组:通过equals方法比较数组中元素值是否相等查找数组元素:通过yahjava.util包提供了Date类来封装当前的日期和时间。Date类提供两个构造函数来实例化Date对象。第一个构造函数使用当前日期和时间来初始化对象。Date(Date(第二个构造函数接收一个参数,该参数是从起的毫秒数Date(Date(longDate对象创建以后,可以调用下面的方法Java中获取当前日期和时间很简单,使用Date对象的toString()方法来打印当前日importimportpublicclassDateDemopublicstaticvoidmain(Stringargs[])初始化DateDatedate=new使用toString(}}MonMay0409:51:52CDTJava使用以下三种方法来比较两个日期使用getTime()方法获取两个日期(自经历的毫秒数值),然后比较Date(99,2,12).before(newDate(99,2,18))返回true。使用compareTo()方法,它是由Comparable接口定义的,Date类实现了这个接importimportjava.util.*;importpublicclassDateDemopublicstaticvoidmain(Stringargs[])DatedNow=newDate();SimpleDateFormatft=newSimpleDateFormat("Eyyyy.MM.dd'at'hh:mm:ssaSystem.out.println("CurrentDate:"+}}以上实例编译运行结果如下CurrentCurrentDate:Sun2004.07.18at04:14:09PM时间模式字符串用来指定时间格式。在此模式中,所有的I方法可以很轻松地格式化时间和日期。使用两个字母格式,它以timportimportjava.util.Date;publicclassDateDemo{publicstaticvoidmain(Stringargs[])DateDatedate=newStringstr=String.format("CurrentDate/Time:%tc",}}以上实例编译运行结果如下CurrentCurrentDate/Time:SatDec1516:37:57MST串要被格式化的参数的索引。索引必须紧跟在%后面,而且必须以$结束。例如importimportjava.util.Date;publicclassDateDemo{publicstaticvoidmain(Stringargs[])DateDatedate=newSystem.out.printf("%1$s%2$tB%2$td,"Duedate:",}}以上实例编译运行结果如下DueDuedate:February09,或者,你可以使用<标志。它表明先前被格式化的参数要被再次使用。例如importimportjava.util.Date;publicclassDateDemo{publicstaticvoidmain(Stringargs[])初始化DateDatedate=newSystem.out.printf("%s%tB%<te,"Duedate:",}}以上实例编译运行结果如下DueDuedate:February09,还有其他有用的日期和时间相关的类。对于的细节,你可以参考到Java 类有一些附加的方法,特别是parse(),它试图按照给 对象的格式化来解析字符串。例如importpublicclassDateDemopublicstaticvoidmain(Stringargs[])SimpleDateFormatft=newSimpleDateFormat("yyyy-MM-Stringinput=args.length==0?"1818-11-11":System.out.print(input+"ParsesasDatetryt=ft.parse(input);}catch(ParseException{System.out.println("Unparseableusing"+}}}以上实例编译运行结果如下$$java1818-11-11ParsesasWedNov1100:00:00GMT$javaDateDemo2007-12-2007-12-01ParsesasSatDec0100:00:00GMTJava休眠s使当前线程进入停滞状态(阻塞当前线程),让出的使用、目的是不让当前线程独自霸占该进程所获的资源,以留一定时间给其他线程执行的机会。以让休眠秒的或者的计的的任时间如,下面的程序会休眠importimportpublicclassSleepDemopublicstaticvoidmain(String{trySystem.out.println(newDate"\n"); //休眠3秒System.out.println(newDate"\n");}catch(Exception{System.out.println("Gotanexception!";}}}以上实例编译运行结果如下ThuThuSep1710:20:30CSTThuSep1710:20:33CST下面的一个例子表明如何测量时间间隔(以毫秒为单位importimportpublicclassDiffDemopublicstaticvoidmain(String{trylongstart=System.currentTimeMillis();System.out.println(newDate()+"\n");System.out.println(newDate()+"\n");longend=System.currentTimeMillis();longdiff=end-start;System.out.println("Differenceis:"+}catch(Exception{System.out.println("Gotan}}}以上实例编译运行结果如下FriFriJan0809:48:47CSTFriJan0809:48:50CSTDifferenceis:Java方面几个章节中我们经常使用到System.out.println(),那么它是那么什么是方法呢方法包含于类或对象方法在程序中被创建,在其他地方被一般情况下,定义一个方法包含以下语法修饰符返回值类型方法名修饰符返回值类型方法名(参数类型参数名return返回值}方法包含一个方法头和一个方法体。下面是一个方法的所有部:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访返回值类型:方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType是关键字 方法名:是方法的实际名称。方法名和参数表共同构成方法签名:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称方法体:方法体包含具体的语句,定义该方法的功能publicpublicstaticintage(int参数可以有多个staticstaticfloatinterest(floatprincipal,int注意:在一些其它语言中方法指过程和函数。一个返回非void类型返回值的方法称为实下面的方法包含2个参数num1和num2,它返回这两个参数的最大值/**/**publicstaticintmax(intnum1,int{intresult;if(num1>num2)result=num1;result=return}Java支持两种调用方法的方式,根据方法是否返回值来选择当方法返回一个值的时候,方法调用通常被当做一个值。例intintlarger=max(30,如果方法返回值是vo,方法调用一定是一条语句。例如,方法v面的调用是个语句: eto示下面的例子演示了如何定义一个方法,以及如何调用它publicpublicclassTestMax/**主方法publicstaticvoidmain(String[]{inti=5;intj=2;intk=max(i, umbetween"+i"and"+j+"is"+}/**publicstaticintmax(intnum1,int{intresult;if(num1>num2)result=num1;result=return}}以上实例编译运行结果如下 umbetween5and2is这个程序包含J方法和其它方法没什么区别。方法的头部是不变的,如例子所示,带修饰符cstaco类型值,方法名字是此外带个一个类型参数。表明参数是字符串数组。不管你与否自定义构造方法,所有的类都有构造方法,因为Jav。一旦你定义了自己的构造方法,默认构造方法就会失效实下面是一个使用构造方法的例子class{int{x}}你可以像下面这样调用构造方法来初始化一publicpublicclassConsDemopublicstaticvoidmain(String{MyClasst1=newMyClass();MyClasst2=newMyClass();System.out.println(t1.x+""+}}大多时候需要一个有参数的构造方法实下面是一个使用构造方法的例子class{intMyClass(inti{x=}}你可以像下面这样调用构造方法来初始化一publicpublicclassConsDemopublicstaticvoidmain(String{MyClasst1=newMyClass(10);MyClasst2=newMyClass(20);System.out.println(t1.x+""+t2.x);}}运行结果如下1010typeName...方法的可变参数的如下所示typeName...在方法中,在指定参数类型后加一个省略号 前。实publicpublicclassVarargsDemopublicstaticvoidmain(Stringargs[])printMax(34,3,3,2,printMax(newdouble[]{1,2,}publicstaticvoidprintMax(double...{if(numbers.length==0){System.out.println("Noargumentpassed");}doubleresult=for(inti=1;i<numbers.length;i++)if(numbers[i]>result)result=numbers[i];System.out.println("Themaxvalueis"+result);}}以上实例编译运行结果如下TheThemaxvalueis56.5Themaxvalueis3.0finalize()Java允许定义这样的方法,它在对象被收集器析构(回收)之前调用,这个方法在finalize()方法里,你必须指定在对象销毁时候要执行的操作finalize()一般格式是protectedprotectedvoid{}关键字protected是一个限定符,它确保 方法不会被该类以外的代码调用JavaJ实publicpublicclassFinalizationDemopublicstaticvoidmain(String[]{Cakec1=newCakec2=newCake(2);Cakec3=newc2=c3=}}classCakeextends{privateintid;publicCake(int{this.id=System.out.println("CakeObject"+id+"is}protectedvoidfinalize()throws{System.out.println("CakeObject"+id+"is}}运行以上代码,输出结果如下javaFinalizationDemoCakeObjectjavaFinalizationDemoCakeObject1iscreatedCakeObject2iscreatedCakeObject3iscreatedCakeObject3isdisposedCakeObject2isJava流(Stream)、文件(File)和JvaJava.io包中的流支持很多种格式,比如:基本类型、对象、本地化字符流可解为数据列。流表一个源数输出示向一个目标写数据。Jva为但本节讲述最基本的和流与/O功。过一例子习这功Java的控制台输入由System.in为了获得一个绑定到控制台的字符流,你可以把System.in包装在BufferedReaderbr=newBufferedReaderbr=newue对象创建后,我们便可以使用方法从控制台一个字符,方法一个字符串。从控制台多字符输从BufferedReader对象一个字符要使用read()方法,它的语法如下intintread()throws每次调用read()方法,它从输入流一个字符并把该字符作为整数值返回。当流结束的时候返回-1。该方法抛出IOException。下面的程序示范了用read()方法从控使用BufferedReaderimportpublicclassBRReadpublicstaticvoidmain(Stringargs[])throws{char//使用System.in创建BufferedReaderBufferedReaderbrnewBufferedReader(newSystem.out.println("Entercharacters,'q'toquit."); doc=(char)br.read();}while(c!=}}以上实例编译运行结果如下EnterEntercharacters,'q'toquit.123从控制台字符StringreadLine()throws从标准输入一个字符串需要使用BueStringreadLine()throws下面的程序和显示字符行直到你输入了单词"end"使用BufferedReaderimportpublicclassBRReadLinespublicstaticvoidmain(Stringargs[])throws{//使用System.in创建BufferedReaderBufferedReaderbrnewBufferedReader(newStringSystem.out.println("Enterlinesoftext.");System.out.println("Enter'end'toquit.");do{ }}}以上实例编译运行结果如下EnterEnterlinesoftext.Enter'end'toquit.ThisislineoneThisislineoneThisislinetwoThisislinetwoPrintStream定义,System.out是该类对象的一个。 定义write()的最简单格式如下所示voidvoidwrite(int该方法将byteval的低八位字节写到流实下面的例子用write()把字符"A"和紧跟着的换行符输出到屏幕mportmportSystem.out.write().publicclassWriteDemo{publicstaticvoidmain(String{intb;b=}}运行以上实例在输出窗口输出"A"AA注意:write()方法不经常使用,因为print()和println()方法用起来更为方便所述个流义为数据。输用于源,输用于向目标写数据。下图是一个描述输入流和输出流的类层次图。重要的流是FileInputStream和

下面将要讨论的该流用于从文件数据,它的对象可以用关键字new来创建。可以使用字符串类型的文件名来创建一个输入流对象来文件InputStreamInputStreamf=new 也可以使用一个文件对象来创建一个输入流对象来文件。我们首先得使用)方法来创建一个文件对象:FileFilef=newInputStreamf=newp,就使用的方来者进他的操除了InputStream外,还有一些其他的输入流,的细节参考下面该类用来创建一个文件并向文件中写数据Fm使用字符串类型的文件名来创建一个输出流OutputStreamOutputStreamf=new 也可以使用一个文件对象来创建一个输出流来写文件。我们首先得使用F创建一个文件对象:FileFilef=newOutputStreamf=new除了OutputStream外,还有一些其他的输出流,的细节参考下面下面是一个演示InputStream和OutputStream用法的例子importimportpublicclasspublicstaticvoidargs[]){bytebWrite[]=OutputStreamos=newFileOutputStream("test.txt");for(intx=0;x<bWrite.length;x++){os.write(bWrite[x]);//writesthe}InputStreamis=newintsize=for(inti=0;i<i++){System.out.print((char)is.read()+"}}}}输出到控制台上。以上代码由于是二进制写入,可能存在乱码,你可以使用以下代码////:fileStreamTest2.javaimportjava.io.*;publicclasspublicstaticvoidmain(String[]args)throwsIOExceptionFilef=newFileOutputStreamfop=new//OutputStreamWriterwriter=newOutputStreamWriter(fop,//

//关闭输出流,FileInputStreamfip=new

InputStreamReaderreader=newInputStreamReader(fip,StringBuffersb=newStringBuffer();while(reader.ready()){sb.append((char)}//关 }}Java继A是类的父类,而类是类的父类,我们也称的子类,类A继承而来的。Java。这两个关键字的使用决定了一个对象和另一个对象是否是A是一个Jav的类均是由c类继承而来的,所以Ob是所有类的祖先类,而除了bc外,所有类必须有一个父类。通过过extends关键字可以申明一个类是继承另外一个类而来的,一般形式如下//A.java//A.javapublicclassA{privateinti;protectedintpublicvoidfunc()}}/

温馨提示

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

评论

0/150

提交评论