马士兵JAVA基础知识整理_第1页
马士兵JAVA基础知识整理_第2页
马士兵JAVA基础知识整理_第3页
马士兵JAVA基础知识整理_第4页
马士兵JAVA基础知识整理_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

东北石油大学计算机与信息技术学院 李勇勇Java语言基础知识整理一. 计算机语言的发展史及历史地位第一代语言 打孔机——纯机器语言 1.第二代语言 2.汇编第三代语言 3.1)C、Pascal、Fortran面向过程的语言2)C++面向过程/面向对象3)java跨平台的纯面向对象的语言4).NET跨平台语言4.java语言特点1)一种面向对象的语言2)一种平台无关的语言,提供程序运行的解释环境3)一种健壮的语言,吸收了c/c++语言的优点,但去掉了影响程序健壮性的部分(如:指针、内存的申请与释放等)。二.Java程序运行机制及运行过程1.java两种核心机制1)Java虚拟机(JavaVirtualMachine)(2)垃圾收集机制( GarbgeCollection)2.java运行过程源程序(*.java文件)—>java编译器—>字节码(*.class文件)—>类装载器—>字节码校验器—>解释器—>操作系统平台4.java虚拟机(1) java虚拟机可以理解为是一个以字节码为机器指令的

CPU。2)对于不同的运行平台有不同的虚拟机。3)Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”。垃圾收集机制1)不再使用的内存空间应回收—垃圾收集。2)在c/c++语言中,由程序员负责回收无用的内存空间。(3)Java语言消除了由程序员负责回收无用的内存空间的责任, 它提供了一种系统级线程跟踪存储空间的分配情况,检查并释放那些可以被释放的存储器空间。4)垃圾收集在java程序运行过程中自动进行,程序员无法精确进行控制和干预。三.JavaApplication初步1.java源文件以“ java”为扩展名。源文件的基本组成部分是类( class)。2一个源文件最多只有一个 public类,其他类的个数不限,如果源文件包括一个 public类,它必须按该类名命名。3.java应用程序的执行入口是 main()方法,有固定的书写格式:publicstaticvoidmain(String[]args){ }4.java语言严格区分大小写。5.java方法由一条条语句构成,每条语句已分号结束。1/26东北石油大学计算机与信息技术学院 李勇勇6.java语言有三种注释方式:1)//单行注释2)/*..*/多行注释3)/***用于多行注释,且可以被 doc工具解析*/四.J2SE基础语法1.标识符:java对各种变量、方法和类等要素命名时使用的字符序列。1)凡是可以自己起名字的地方都叫标识符,都要符合标识符的规则。2)标识符的命名规则:①标识符由字母、下划线” _”、美元符”$”或数字组成。②标识符应该以字母、下划线或者美元符开头。③java标识符大小写敏感,长度无限制。(4) java标识符选取应该“见名知意”且不可以和 java关键字重复。2.关键字:1)java中一些赋以特定含义,用作专门用途的字符串。2)所有java关键字都是英文小写字母。(3)goto和const虽然从未用过,但是也被留作 java的关键字。abstractdefalutifprivatethisboleandoimplementsprotectedthrowthrowsdoubleimportreturnbreaktryelseinstanceofbytepublicvolatileextendsintcaseshortwhilecatchfinalinterfacestaticvoidclasspackagesuperfinallynullswitchnewfloatcharsynchronizednativeforconsttransientcontinuelongstrictfpgoto4.java常量1)java的常量值用字符串表示,区分不同的数据类型。整形常量、实型常量、字符常量、逻辑常量、字符串常量。2)区分字符常量和字符串常量3)“常量”这个名字还会用在其他环境中用来表示值不变的变量。5.java变量1)java变量是程序中最基本的存储单元,其要素包括变量名、变量类型、作用域。2)java中每一个变量都属于特定的数据类型,在使用前必须对其进行申明。3)从本质上讲,变量其实是内存中一小块区域,使用变量名来访问这块区域,因此,每一个变量进行使用之前,必须对其进行申明,然后进行赋值,这样才可以使用。4)heap:new出来的东西存放;5)stack:局部变量存放在里面;6)datasegment:静态常量及字符串常量;7)codesegment:存放代码6.java变量的分类(1)按声明的位置划分:2/26东北石油大学计算机与信息技术学院 李勇勇①局部变量:方法或语句块内部定义的变量②成员变量:方法外面、类的里面定义的变量③类外面不能有变量的声明2)按所属数据类型划分:①基本数据类型变量②引用数据类型变量7java局部变量和成员变量1)方法体内部声明的变量(包括形参)称为局部变量。2)方法体内部是指与方法对应的大括号内部。3)在方法体外部,类体内部声明的变量是成员变量。8.数据类型的划分(1)基本数据类型:整数类型( byte、int、short、long)、浮点类型( float)、字符型( char)、布尔型(boolean)(2)引用数据类型:类( class)、接口(interface)、数组。9.逻辑型boolean1)boolean数据类型适合逻辑运算,一般用于流程的控制。2)boolean数据类型只允许取值为true或false,不可以用0或者非0代替true或者false.10.字符型char1)char型数据用来表示通常意义上的”字符”。2)字符常量为用单引号括起来的单个字符。3)java字符采取Unicode字符编码,每个字符占据两个字节,因此可以采用十六进制编码表示。4)java语言还允许使用转义字符'\'来将其后的字符转化为其他的含义。5)2进制、8进制、16进制的转化。11.整数类型(1)java各整数类型有各自的字段长度和表数范围,其不受具体操作系统的影响,以保证 java程序的可移植性。(2)java语言整形常量的三种表示形式:①十进制整数;②八进制整数:要求以 0开头;③十六进制整数:要求以 0x或者0X开头(4) java语言整形常量默认的类型为 int,声明long型常量时后面需要加上” l”或者”L”;类占用内存空表数范byte-128~127字short-2^15~2^15-1字int-2^31~2^31-1字-2^63~2^63-1long字节12.浮点类型1)与整形类似,浮点类型也有各自的字段长度和表数范围,不受平台影响。2)java浮点类型常量有两种表示方法:十进制形式和科学计数法形式3)java浮点型默认的常量类型为double,声明为float时需要后面加上”f”或者”F”;类型 占用内存空间 表数范围-3.403E38~3.403E38float字节3/26东北石油大学计算机与信息技术学院 李勇勇-1.798E308~1.798E308double字节813.基本数据类型转化boolean类型不可以转化为其他的数据类型(1)2)容量小的数据类型自动转化为容量大的数据类型。(Byte.short.char->int->long->float->double①int型进行计算②byteshortchar三者不会相互的转化,计算时三者都先转化为)容量大的数据类型转化为容量小的数据类型时,要加上强制类型转化符,这样可能造(3成精度降低或者溢出,使用时要格外注意。)有多种数据库类型进行计算时,应该将所有的数据类型转化为容量最大的那种数据类(4型,在进行计算。int。)实型默认为double;整形默认为(514.运算符--%++-*/(1)算术运算符:+!=>=<=)关系运算符:><(2||&&)逻辑运算符:!|&(3>>><<|^>>(4)位运算符:&!=)赋值运算符:(5*=/=)扩展赋值运算符:+=-=(6+7)字符串连接运算符:(15.赋值运算符和扩展赋值运算符:”两侧数据类型不一致时,可以使用默认类型转化或者强制类型转化。1)当”=(可以不使用强制类型转化符,只要不超过shortchar,2)可以将整形常量直接赋值给byte(其表数范围即可。16.字符串连接符:)两侧的操作数只要有一个是字符串类型,则会默认将另一个自动转化为字符串类型然1(后再进行运算。)当进行打印时,无论是什么类型都会被转化为字符串类型进行打印。(2表达式17.)表达式是符合一定语法规则的运算符和操作数的序列。(1)表达式的值是指对操作数进行运算得到的结果(2)表达式的类型是指表达式结果的数据类型(3)应该按照运算符从高到低的的优先级顺序进行运算(4)优先级相同的应该按照事先约定的结合方向进行运算(518.三目条件运算符X?Y:Z1)语法格式:(反之,整y;的值,如果xx的值为真,则整个表达式的值为(2)x为boolean类型,先计算z个表达式的值为语句语句、dowhile语句、19.iffor语句、whilebreak语句:用于终止某个语句块的结束,用于循环语句体中,可以强制退出循环。(1)未continue)2continue语句:用于循环语句中,用于终止某次循环过程,跳过循环体中(执行的循环,直接进行下一次的循环。switch语句:3()break穿透,推荐使用语句case①小心case②多个可以合并到一起4/26东北石油大学计算机与信息技术学院李勇勇③default可以省略,但是不推荐省略java中switch只能探测到int类型的值20.方法(1)java的方法类似与其他语言的函数,是一段完成特定功能的代码片段,声明格式:[修饰符1修饰符 2 ]返回值类型 方法名 {形式参数列表} {Java语句.}2)形式参数:在方法被调用的时候用于接收外部输入的数据。3)实参:调用方法时实际传给方法的数据。(4)返回值:方法被调用完后返还给调用他的环境的数据。(5)返回值类型:事先约定返回值的数据类型,如果没有返回值,则一定要给出 void。(6)java语言中使用下述形式调用方法:对象名 .方法名(实参列表)。7)实参的数目、数据类型和次序必须和所调用方法的形参列表相匹配。8)return终止方法的执行并且指定返回数据类型。9)java中函数调用中传递参数时,遵循值传递原则:基本类型传递的是数据值的本身,引用类型传递的是对对象的引用,而不是对象本身。21.递归调用:在方法执行过程中出现方法本身的调用。五.面向对象的设计思想1.从现实世界中客观存在的事物出发来构造软件系统, 并在系统构造的过程中尽可能的运用人类的自然思维方式。2.面向对象更加强调人类在日常的思维逻辑中经常采用的思想方法和原则, 如抽象、分类、聚合、多态、继承等。3.对象用计算机语言对问题域中的事物的描述,对象通过属性( attribute)和方法( method)来对应事物所具有的静态属性和动态属性。4.类是用于描述同一类型对象的一个抽象概念, 类中定义了这一类对象因具有的静态和动态属性。5.类可以看成是一类对象的模版,对象可以看作是该类的一个具体实例。六.类(对象)之间的关系(1)关联关系(2)继承关系(一般和特殊)如:XXX是一种XXX3)多态关系4)聚合关系(整体和部分)5)实现关系七.java与面向对象(1)对象是 java程序的核心,在 java中“万事万物皆对象” 。2)对象可以看作是静态属性(成员变量)和动态属性(方法)的封装体。3)类是用来创建同一类型对象的“模版”,在一个类中定义该类所因具有的成员变量和方法。4)j2sdk提供了很多类给编程人员,编程人员也可以自己定义类。(5)成员变量 =属性 方法 =函数八.为什么使用对象?1.面向对象编程—一组对象相互配合通过沟通完成特定功能。2.对象都有对外服务的接口,通过继承可以复用。3.对象隐藏内部服务的实现,通过聚合可以复用。5/26东北石油大学计算机与信息技术学院

李勇勇4.面向对象可以使我们达到这些年苦苦追求的境界。5.组件—比对象更高层次上的抽象。九.面向对象1.java类的定义(1)类的定义主要有成员变量和方法这两个方面。(2)声明成员变量的格式: [<modifiers>]type <attr_name>[=defaultValue]如:privateintid;privateintmoney=20;3)声明方法的格式:[<modifiers>]<modifiers><return_type><name>[<argu_list>]{[<statements>]}如:publicintgetAge(){returnage;}2.成员变量(1)成员变量可以是java数据类型中任何一种数据类型(基本数据类型和引用数据类型)。(2)在定义成员变量时可以对其进行初始化,如果对其不进行初始化,则java使用默认的初始化值。(3)成员变量的整个范围为整个类体。变成员byteshortintlongfloatdoublebooleanchar所有引量类型输InputReader用类型入StreaWriter流m输Outp出utStre流am取值 0 0 0 0L 0.0F 0.0D false ‘╜ふ?' null3.引用1)java语言中除了基本的数据类型之外其余的都称之为引用类型。2)java中的对象是通过引用对其进行操作的。4.如何在内存中区分类和对象?1)类是静态概念,在代码区。2)对象是new出来的,位于堆内存。类的每个成员变量在不同的对象中都有不同的值(除静态变量),而方法只有一份,只在执行的时候占据内存。5.对象的创建和使用1)必须使用new关键字创建对象。2)使用对象(引用).成员变量或者引用对象的成员变量。3)使用对象(引用).方法(参数列表)来调用对象的方法。4)同一类的每个对象有不同的变量存储空间。5)同一类的每个对象共享该类的方法。6)非静态方法是针对每个对象进行调用。6.构造方法(构造函数)1)使用new+构造方法创建一个新的对象。2)构造函数是一个定义在Java类中用来初始化对象的函数。3)构造函数与类同名且没有返回值。(4)创建对象时,使用构造函数初始化对象的成员变量。(5)当没有指定构造函数时,编译器会自动给类添加形如类名(){}的构造函数。7.约定俗成的命名规则1)类名的首写字母大写2)变量名和方法名的首写字母小写3)运用驼峰标识8.方法的重载(1)方法的重载是指在一个类中可以有相同的名字, 但是参数不同的多个方法。 调用时会 6/26东北石油大学计算机与信息技术学院 李勇勇根据不同的参数表选择相应的方法。9.构造方法的重载(1)与普通方法一样,构造方法也有重载。10.this关键字(1)在类的方法定义中使用this关键字代表使用该方法的对象的调用。(2)当必须指出当前使用方法的对象是谁时要使用this关键字。3)有时使用this关键字可以处理方法中的成员变量和参数重名的情况。4)this可以看作是一个变量,他的值是当前对象的引用。11.static关键字(1)在类中,用

static

声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说 static成员变量只有一份。(2)用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可以访问非 static方法。3)静态方法不再是针对某个对象调用,所以不能访问非静态成员。4)可以通过对象引用或者类名(不需实例化)访问静态成员。12.package和import语句(1)为便于管理大型软件系统中数目众多的类, 解决类的命名冲突问题, java引入包(package)机制,提供类的多重类命名空间。(2)package语句作为 java的第一条语句,指明该文件中类所在的包。 (若缺省该句,则为无名包)。 如:packagepkg1[.pkg2[ ]](3)java编译器把包对应于文件系统的目录管理, package语句中用”.”来指明包(目录)的层次。(4)如果将一个类打包,使用该类时,需要使用该类的全名, java编译器才会找到该类 .5)也可以使用import在文件开头引入要使用的类。6)可以不需要使用import语句直接引入java.lang的包中的类。(7)如果要将一个类放入包中,在这个类原文件第一句需要写 package。(8)必须保证该类的 class文件位于正确的目录下。①该类的源码可能会产生影响②删除或者转移到另外的目录9)另外的类想访问的话①写全名②引入*具体类名③访问位于同一包中的类不需要引入(10)必须class文件的最上层包的父目录位于classpath下(11)执行一个类需要写全包名13.j2sdk主要包的介绍1)java.lang—包含java语言的一些核心类,String,Math,Integer,System,Thread,提供常用的类。(2)java.wat—包含了构成抽象窗口工具集( abstractwindowtookits构建和管理应用程序的图形用户界面( GUI)。

)的多个类,这些类被用来3)java.applet—包含applet运行所需要的一些类。4)—包含一些与网络相关操作的类。5)java.io—包含多种能提供输入/输出功能的类。6)java.util—包含实用的工具类,如定义系统特性,使用与日期日历相关的函数。7/26东北石油大学计算机与信息技术学院 李勇勇7)打包的格式java–cvfxx.jar*.*14.类的继承与权限控制(1)java中使用 extends关键字来实现类的继承机制,语法规则如下:<modifier>class<name>[extends<superclass>]{ }(2)通过继承,子类自动拥有 基类所有的成员(成员变量和方法) 。3)java只支持单继承,不支持多继承。①一个子类只能有一个基类,一个基类可以派生出多个子类。4)java权限修饰符public,private,protected置于类的成员定义之前,用来限定其他对象对该类对象成员的访问权限。修饰符 类内部 同一包 子类 任何地方Yes privateYesdefaultYesprotectedYesYesYesYesYesYespublicYes(5) 对于class的权限修饰只可以用 public和defaultpublic类可以在任何地方都被访问。②default只可以被同一个包中的类访问。15.方法的重写1)在子类中可以根据需要对于从基类中继承来的方法进行重写。2)重写方法必须和被重写方法具有相同的名称,参数列表和返回值类型。3)重写方法不能使用比被重写方法更严格的访问权限。16.super关键字:在 java类中使用 super关键字来引用基类的成分。17.继承中的构造方法(1)子类的构造过程中必须调用基类的构造方法。(2)子类可以在自己的构造方法中使用 super(argu_list)来调用基类的构造方法。①使用this(argu_list)调用本类中另外的构造方法。②如果调用 super,必须写在基类的构造方法的第一行。3)如果子类的构造方法中没有显示的调用基类的构造方法,则系统默认的调用基类无参的构造方法。4)如果子类中既没有显示的调用基类的构造方法,而基类中又没有无参的构造方法,则编译出错。18.Object类(1)Object类是java中所有类的根基类。(2)如果在类的声明中未使用

extends

关键字来指明其基类,则默认基类为

Object

类。19.toString方法(1)Object类中定义类

publicStringtoString

()方法,其返回值为

String

类型,描述当前的对象的有关信息。(2)在进行 String与其他数据类型的连接操作时,将自动调用该类对象的

toString()方法。(3)可以根据需要在用户自定义类型中重写

toSring()方法。20.equals()方法 —Object

类中定义(1)publicBooleanequals(Objectobj)

提供对象是否相等的逻辑。(2)Object

equals

方法定义为:

x.equals(y)当

x和

y是同一对象的应用时返回

true

否则返回false。(3)j2sdk提供了一些类,如

String,Date

等,重写了

Object

类中的

equals方法,调用这些

8/26东北石油大学计算机与信息技术学院

李勇勇类的equals方法,x.equals(y),当x和y所引用的对象是同一类的对象且属性内容相等时(并不一定是相同对象),返回true否则返回false。(4)可以根据需要在用户自定义类型中重写 equals()方法。21.对象转型(casting)(1)一个基类的引用类型变量可以指向其子类对象。(2)一个基类的引用不可以访问子类对象新增加的成员(成员变量和方法) 。3)可以使用引用变量Instanceof类名来判断该引用型变量所指向的对象是否属于该类或者该类的子类。(4)子类的对象可以当作基类的对象来使用称作向上转型( upcasting),反之称为向下转型downcasting)。22.动态绑定;在执行期间而非编译期间判断所引用对象的实际类型,根据其实际类型来调用相应的方法。23.抽象类(1)用abstact

类来修饰一个类时,这个类叫做抽象类,用

abstract

来修饰一个方法时,这个方法叫做抽象方法。2)含有抽象方法的类必须声明为抽象类,抽象类必须被继承,抽象方法必须被重写。3)抽象类不能被实例化。4)抽象方法只需要声明,不需要实现。24.final关键字1)final变量的值不可以改变:final的成员变量和局部变量(形参)。2)final方法不能被重写。3)final类不可以被继承。25.接口1)接口(interface)是抽象方法和常量值的定义的集合。2)从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含方法和常量的定义,而没有方法和变量的实现。3)多个无关的类可以实现同一个接口。4)一个类可以实现多个无关的接口。5)与继承关系类似,接口与实现类之间存在多态性。(6)接口中声明属性默认为publicstaticfinal的,也只能是publicstaticfinal的。(7)接口中只能定义抽象方法,而这些方法默认为public的,也只能是public。8)接口可以继承其他接口,并添加新的属性和抽象方法。十.异常处理1.异常的概念1)java异常是java提供的用于处理程序中错误的一种机制。2)所谓错误是指在程序运行过程中发生的一些异常事件。3)设计良好的程序,应该在异常发生时提供处理这些错误的方法,使得程序不会因为异常的发生而阻断或者产生不可预见的结果。4)java程序执行过程中如果出现异常事件,可以生成一个异常类的对象,该异常事件封装了异常的信息,并将被提交给 java运行时系统,这个过程称作抛出( throw)异常。5)当java运行时系统接收到异常对象时,会寻找能处理这一异常的代码,并把当前异常对象交给其处理,这一过程称作捕获(catch)异常。2.异常的分类1)Throwable9/26东北石油大学计算机与信息技术学院 李勇勇ExceptionErrorRuntimeException(2)Error:错误,由java虚拟机生成抛出,包括动态连接失败,虚拟机错误等,程序不对其做处理。3)Exception:所有异常类的父类,其子类对应了各种各样的异常事件,一般需要用户显示的声明或者捕获。4)RuntimeException:一类特殊的异常,其产生比较频繁,处理麻烦,如果显示的声明或者捕获对于程序的可读性和运行效率影响很大,因此由系统自动检测并将把他们交给缺省的异常处理程序。(用户不必对其处理)Exceptioninjava.langClassNotFoundExceptionIOExceptionInterruptedExceptionRuntimeExceptionArithmeticException NullPointerExceptionIndexOutofBoundsExceptionArrayIndexOutofBoundsExceptionStringIndexOutofBoundsException3.异常的捕获和处理(1)try代码片段包含可能产生例外的代码。(2)try代码片段后跟一个或者多个catch代码段。(3)每个catch代码段声明其能处理的一个特定异常的类型并提供处理该异常的方法。(4)当异常发生时,程序会终止当前的流程,根据获取异常的类型去执行相应的catch代码段。(5)finally段的代码无论发生异常与否都会执行。4.try语句(1)try{..}语句指定一段代码,该段代码就是一次捕获并处理异常的例外代码。(2)在执行过程中,该代码可能会产生并抛出一种或者几种类型的异常对象,它后面的catch语句要分别对这些异常做对应的异常处理。(3)如果没有例外出现,则catch的代码片段都将被略过不执行。5.catch语句(1)在catch语句块中是对异常进行处理的代码,每个try语句可以伴随一个或者多个catch语句,用于处理产生的不同类型的异常对象。(2)在catch中声明的异常对象(catch(SomeExceptione))封装了异常事件发生的信息,在catch语句块中可以使用这个对象的方法来获取这些信息。(3)getMessage()方法:用来得到有关异常事件的信息。printStackTrace()方法:用来跟踪异常事件发生时执行堆栈的内容。6finally语句1)finally语句为异常处理提供了统一的出口,使得在控制流程在转到其他程序的其他部分以前,能够对程序的状态做出统一的管理。(2) 无论

try

所指定的程序语句块是否抛出异常,

finally

所指定的语句块都要被执行。(3) 通常在

finally

语句块中可以进行资源的清除,如:关闭打开的文件,删除临时的文件等。7java

的异常处理机制使得异常事件,沿着被调用的顺序往前寻找,只要找到符合该异常

10/26东北石油大学计算机与信息技术学院

李勇勇种类的异常处理事件。使用自定义异常1)通过继承java.lang.Exception类来声明自己的异常类。(2) 在方法适当的位置定义异常类的实例,并用 throw抛出异常。3)在方法的声明部分用throws语句声明该方法可能要抛出的异常。4)重写方法要抛出与原方法一致的异常或者不抛出异常。十一.数组数组的概述1)数组可以看成是多个相同数据类型的组合,对这些数据的统一管理。2)数组变量属引用类型,数组也可看成是对象,数组中的每个成员都相当于对象中的成员变量。3)数组中的数据类型可以是任何的数据类型,包括基本数据类型和引用数据类型。2.一维数组(1)一维数组的声明方式:typevar[]或者type[]var(2)java语言中声明数组时不能指定数组的长度(数组中元素的个数)。3.数组对象的创建(1)java语言中使用 new关键字创建数组对象,格式为:数组名 =new数组元素类型 [数组元素个数 ](2)元素为引用数据类型的数组中的每一个元素都需要对其进行实例化。4.数组的动态初始化数组的定义与数组的元素分配空间和赋值的操作分开进行数组的静态初始化定义数组的同时就为数组分配空间和赋值。数组元素的默认初始化(1)数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后, 每个元素也被按照成员变量的规则被隐式初始化数组元素的引用1)定义并用new关键字为其分配空间后,才可以引用数组中的每个元素,数组元素的引用方式为:①arrayName[index]:index为数组元素的下标,可以是整形常量或者整形表达式。②数组元素下标从0开始:长度为n的数组合法下标取值范围为:0~n-1(2)每个数组都有一个length属性指明其长度。8.二维数组1)可以看作是数组的数组。2)java中多维数组的声明和初始化都应该从高维到低维的顺序进行。3)静态初始化和动态初始化9.数组的拷贝1)使用java.lang.System的静态方法,publicstaticvoidarraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength)(2)可以用于数组 src从地srcPos项元素开始的 length个元素拷贝到目标数组从 destPos项开始的length个位置。(3)如果源数据数目超过目标数组边界会抛出 IndexOutofBoundsException 异常。十二.常用类1.String类11/26东北石油大学计算机与信息技术学院 李勇勇1)java.lang.String类代表不可变的字符序列。2)“XXXX”为该类的一个对象。3)Strig类的常见构造方法:String(Stringoriginal)创建一个

String

对象为

original

的拷贝String(char[]value)用一个字符数组创建一个

String

对象String(char[]value,intoffset,intcount)用一个字符数组从

offset

开始的

count

个字符序列创建一个

String对象。publiccharcharAt(intindex)

返回字符串中第

index

个字符publicintlength() 返回字符串的长度publicintindexOf(Stringstr) 返回字符串中出现

str的第一个位置publicintindexOf(Stringstr,intformatIndex)返回从字符串中 formatIndex 开始出现 str的第一个位置publicbooleanequalsIgnoreCase(Stringanother)比较字符串与 another是否一样(忽略大小写)publicStringreplace(charoldChar,charnewChar)在字符串中用 newChar代替oldChar字符publicbooleanstartsWith(Stringprefix)判断字符串是否以 prefix开头publicbooleanendsWith(Stringsuffix)判断字符串是否以 suffix结尾publicStringtoUpperCase()返回一个字符串为该字符串的大写publicStringtoLowerCase()返回一个字符串为该字符串的小写publicStringsubstring(StringbeginIndex)返回该字符串从 beginIndex开始到结尾的子字符串publicStringsubstring(StringbeginIndex,StringendIndex)返回该字符串从 beginIndex开始到 endIndex结束的子字符串publicStringtrim()返回将该字符串去掉开头和结尾空格后的字符串。(4)静态重载方法: publicstaticStringvalueOf()可以将基本类型数据转化为字符串方法publicString[]split(Stringregex)可以将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组。2.StringBuffer类1)java.lang.StringBufffer代表可变的字符序列。2)StringBuffer和String类似,但StringBuffer可以对其字符序列进行变换。3)StringBuffer类的常见构造方法;StringBuffer()创建一个不包含字符序列的”空”的

StringBuffer

对象。StringBuffer(Stringstr)创建一个

StringBuffer

对象,包含与

String

对象

str相同的字符序列。(4)重载方法

publicStringBufferappend(

)可以为该

StringBuffer

对象添加字符序列, 返

12/26东北石油大学计算机与信息技术学院

李勇勇回添加后的该 StringBuffer对象的引用。5)重载方法publicStringBufferinsert()可以为该StringBuffer对象在指定的位置插入字符序列,返回修改后的该StringBuffer对象的引用。(6) 方法publicStringBuffer delete(int start,intend)

可以删除从

start

开始到

end-1为止的一段字符序列,返回修改后的该

StringBuffer

对象的引用。(7) 和String

类含义类似的方法publicintindexOf(Stringstr)publicintindexOf(Stringstr,StringformatIndex)publicStringsubstring(intstart)publicStringsubstring(intstart,intend)publicintlength()(8)方法publicStringBufferreverse()用于将字符序列逆序, 返回修改后的该 StringBuffer对象的引用。基本数据类型包装类1)包装类(如Integer,Double等)这些类封装了一个基本数据类型的数值,并为其提供了一系列的操作。2)以java.lang.Integer为例:构造方法Integer(int value) Integer(String s)3)以下方法以java.lang.Integer为例:publicstaticfinalintMAX_VALUE 最大的int型整数publicstaticfinalintMIN_VALUE 最小的 int型整数publiclonglongValue()返回封装数据类型的 long型值publicdoubledoubleValue()返回封装数据类型的 double型值publicintdoubleValue()返回封装数据类型的 int型值publicstaticintparseInt(Strings)throwsNumberFormatException将字符串解析成Int型数据,返回该数据publicstaticIntegervalueOf(Strings)throwsNumberFormatException返回Integer对象,其中封装的整形数据为字符串 s所表示。4.Math类(1)java.lang.Math提供了一系列方法用于科学计算, 其方法的参数和返回值类型一般为 double型。abs绝对值acos,asin,atan,cos,sin,tansqrt平方根pow(doublea,doubleb)a 的b次幂log自然对数expe为底指数max(doublea,doubleb)min(doublea,doubleb)random()返回0.0到1.0的随机数longround(doublea)double 型的数据转化为 Long型(四舍五入)13/26东北石油大学计算机与信息技术学院 李勇勇toDegrees(doubleangrad)弧度转化为角度toRadians(doubleangdeg)角度转化为弧度5.File类1)java.io.File代表系统文件名(路径和文件名)。2)File类的常见构造方法:publicFile(Stringpathname)以pathname为路径创建 File对象,如果,pathname是相对路劲,则默认的当前路径在系统属性user,dir中存储。publicFile(Stringparent,Stringchild)以parent为父路径,以child为子路径创建File对象。3)File的静态属性Stringseparator存储了当前系统路径的分隔符。4)通过File对象可以访问文件的属性:publicbooleancanRead()publicbooleancanWrite()publicbooleanexists()publicbooleanisDirectory()publicbooleanisFile()publicbooleanisHidden()publiclonglastModified()publiclonglength()publicStringgetName()publicStringgetPath()(5) 通过File对象创建空文件或目录(在该对象所指的文件或者目录不存在的情况下)publicbooleancreateNewFile()throws IOExceptionpublicbooleandelete()publicbooleanmkdir()publicbooleanmkdirs()// 创建在路径中的一系列目录java.lang.Enum枚举类型(1)枚举类型:①只能够取特定值中的一个。②使用enum关键字③是java.lang.Enum类型十三.容器j2sdk所提供的容器的API位于java.util包中。容器API图构如下:Collection(interface)Set(interface) List(interface)HashSet LinkedList ArrayListMapHashMap3.collection接口定义了存取一组对象的方法,其子接口 set和List定义了存储方式。1)set中的数据对象无序且不重复。2)list中的数据对象有序且可以重复。14/26东北石油大学计算机与信息技术学院 李勇勇Map接口定义了存储“键(Key)—值(value)映射对”的方法。Collection接口中定义的方法:intsize();boolean isEmpty();void clear();boolean contains(Objectelement)booleanadd(Objectelement)boolean remove(Objectelement)Iteratoriterator()boolean containsAll(Collectionc)booleanaddAll(Collectionc)booleanremoveAll(Collectionc)booleanretainAll(Collectionc)Object[]toArray()容器类对象在调用remove,contains等方法时需要比较对象是否相等,这会涉及到对象类型的equals方法和 hashCode方法;对于自定义的类型,需要重写 equals方法和hashCode方法以实现自定义的对象相等的规则。相等的对象应该具有相等的 hashcodes。7.Iterator

接口(1)所有实现

Collection

接口的容器类都有一个

iterator

方法用以返回一个实现了

Iterator

接口的对象。2)Iterator对象称为迭代器,用以方便实现对容器内部元素的遍历。3)Iterator接口定义的方法:booleanhasNext()判断游标右边是否有元素Objectnext()返回游标右边的元素并且将游标移动到下一个位置Voidremove()删除游标左边的元素,在执行完 next之后此操作只可以执行一次(4)Iterator对象的remove方法是在迭代过程中删除元素的唯一的安全方法。8.增强的 for循环1)增强的for循环对于遍历collection和array的时候特别方便。2)缺陷:①数组:不能方便的访问下标值。②集合:与使用Iterator相比,不能方便删除集合中的内容,在内部也是调用(3)总结:除了简单遍历并读出其中的内容外,不建议使用增强for。

Iterato。8.set接口(1)set接口是

collection

的子接口,

set

接口没有提供额外的方法,但是实现

set

接口的容器类中的元素是没有有顺序的,而且不可以重复。2)set容器可以与数学中的“集合”概念相对应。3)j2sdkAPI中所提供的set容器类有HashSet,TreeSet等。9.List接口(1)List接口是collection的子接口,实现 List接口的容器类中的元素是有顺序的并且可以重复的。2)List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。15/26东北石油大学计算机与信息技术学院 李勇勇3)j2sdk所提供的List容器类有LinkedList,ArrayList等。Objectget(int index)Objectset(intindex,Objectelement)Objectremove(intindex)int indexOf(Objecto)intlastIndexOf(Objecto)10类java.util.Collections 提供了一些静态方法实现了基于voidsort(List)

List容器的一些常用算法。对List容器内的元素排序voidshuffle(List)对List容器内的元素进行随机排列voidreverse(List)对List容器内的元素进行逆序排列voidfill(List,Object)用一个特定的对象重写整个容器voidcopy(Listdest,Listsrc)将srcList容器的内容拷贝到 destList容器中intbinarySearch(List,Object)对于顺序的 List容器,采用折半查找法查找特定的对象。11.Comparable接口1)所有可以排序的类都实现了java.lang.Comparable接口,Comparable接口中只有一个方法,publicintcompareTo(Objectobj) 该方法:返回0表示 this==obj返回正数

表示

this>obj返回负数

表示

this<obj(2)实现

Comparable

接口的类通过实现

compareTo()方法从而确定该类对象的排序方式。12.如何选择数据结构衡量标准:读的快慢和改的快慢1)Array读的快改的慢2)Linked读的慢改的快3)Hash两者之间13.Map接口(1)实现Map接口的类用来存储键值对。(2)Map接口实现的类有HashMap和TreeMap。(3)Map类中存储的键值对通过键来标识,所以键值不可以重复。14.Auto-boxing/unboxing1)在合适的时候自动打包解包①自动将基础类型转化为对象②自动将对象转化为基础类型15.JDK1.5泛型(1)起因:JDK1.4以前类型不清楚①装入集合中的类型都被当作 Object对待,从而失去自己的实际类型。②从集合中取出时往往需要转型,效率低,容易产生错误。(2)解决办法:16/26东北石油大学计算机与信息技术学院 李勇勇①在定义集合的时候同时定义集合中对象的类型。②可以在定义 Collection时指定。③也可以在循环时使用 Iterator指定。3)好处:增强程序的可读性和稳定性。十四.流1.在java程序中,对于数据的输入和输出操作以流( stream)方式,将将 j2sdk提供了各种各样的流类,用以获取不同的数据,程序中通过标准的方法输入或者输出数据。2.输入/输出流的分类(1) java.io包中定义了多个流类型(类或抽象类)来实现输入 /输出功能,可以从不同的角度对其进行分类。2)按照数据流的方向不同分为输入流和输出流。3)按照数据处理单位不同分为字节流和字符流。4)按照功能不同划分为节点流和处理流。5)J2sdk所提供的所有流类型位于java.io包内,分别继承自以下四种抽象流类型。字节流 字符流 3.节点流和处理流1)节点流为可以从一个特定的数据源(节点)读写数据。2)处理流是“连接”在已经存在的流(节点流或者处理流)之上,通过对数据的处理为程序提供更强大的读写能力。4(.1)InputStream:继承InputStream的流都是用于向程序中输入数据, 且数据的单位为字节 (8bit)(2)OutputStream:继承OutputStream的流都是用于程序中输入数据, 且数据的单位为字节 (8bit)(3)Reader:

继承

Reader

的流都是用于向程序中输入数据,且数据的单位为字符(

16bit)(4)Writer:

继承

Writer

的流都是用于程序中输入数据,且数据的单位为字符(

16bit)5.节点流类型 字符流 字节流FileInputStreamFileReader File(文件)FileOutputStreamFileWriterCharArrayReaderMemoryArrayByteArrayInputStreamCharArrayWriterByteArrayOutputStreamMemoryStringStringReader—StringWriterPipedReaderPipedInputStream (管道)PipePipedWriterPipedOutputStream缓冲流1)缓冲流要套接在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法。2)j2sdk提供了四种缓冲流BufferedReaderBufferedWriterBufferedInputStream17/26东北石油大学计算机与信息技术学院 李勇勇BufferedOutputStream(3)缓冲输入流具有支持父类的mark和reset方法。(4)BufferedReader提供了readLine()用于读取一行字符串(以\r或者\n分隔)5)Bufferedwriter提供了newLine用于写入一个行分隔符(6)对于输出的缓冲流,写出的数据 会现在内存中缓冲,使用 flush方法将会使内存中的数据立刻写出。7.转换流1)InputStreamReader和OutputStreamWriter用于字节数据和字符数据之间的转换。2)InputStreamReader需要和InputStream套接。3)OutputStreamWriter需要和OutputStream套接。(4)转换流可以在构造的时候指定其编码集合。8.处理流处理类型字符流字节流BufferingBufferedReaderBufferedInputStreamBufferedWriterBufferedOutputStreamFilteringFilterReaderFilterWriterFilterInputStreamFilterOutputStreamConvertingbetweenbytesInputStreamReaderandcharactersOutputStreamWriterObjectserializationObjectInputStreamObjectOutputStreamDataConversionDataInputStreamDataOutputStreamCountingLineNumberReaderLineNumberInputStreamPeekingaheadPushBackReaderPushBackInputStreamPrintingPrintWriterPrintStream数据流1)DataInputStream和DataOutputStream分别继承自InputStream和OutputStream,他们都是处理流。需要分别套接在InputStream和OutputStream的类型的节点流之上。(2)DataInputStream和DataOutputStream 提供可以存取与机器无关的 java原始类型数据(如int,double)等原始类型数据。3)DataInputStream和DataOutputStream的构造方法:DataInputStream(InputStreamDataOutputStream(OutputStream

in)out)10.Print

流1)PrintStream和PrintWriter都属于输出流,分别针对字节和字符。2)PrintStream和PrintWriter提供了重载的print。3)PrintStream和PrintWriter的输出操作不会抛出异常,用户通过检测错误状态获取错误信息。4)PrintStream和PrintWriter有自动flush功能。5)println方法用于多种类型数据的输出。11.Object流1)直接将Oject写入或者读出①TestObjectIO.java18/26东北石油大学计算机与信息技术学院 李勇勇transient关键字③serializable关键字④externalizable关键字十五.java多线程机制线程的基本概念1)线程是一个程序内部的顺序控制流。2)线程和进程的区别①每个进程都有独立的代码和数据空间(进程上下文) ,进程间的切换会有较大的开销。②线程可以看作是轻量级的进程,同一类进程共享代码和数据空间,每个线程都有独立的运行栈和程序计数器(PC),线程切换开销小。③多进程:在操作系统中可以同时运行多个任务(程序) 。④多线程:在同一应用程序中有多个顺序流同时执行。3)java的线程是通过java.lang.Thread来实现的。4)VM启动时会有由一个主方法(publicstaticvoidmain())所定义的线程。5)可以通过创建Thread的实例来创建新的线程。6)每个线程都是通过某个特定的Thread对象所对应的run()方法来实现操作的,方法run()称为线程体。7)通过调用Thread类的一个start()方法来启动一个线程。线程的创建和启动(1)第一种①定义线程类实现Runnable接口。②ThreadmyThread=newThread(target)//target 为Runnable接口类型。Runnable中只有一个方法:publicvoidrun():用以定义线程运行体。④使用Runnable接口可以为多个线程提供共享的数据。⑤在实现 Runnable接口的类的 run方法定义中可以使用 Thread的静态方法。publicstaticThreadcurrentThread(): 获取当前线程的引用(2) 第二种①可以定义一个

Thread

类的子类重写

Thread

类的

run

方法classMyThreadextendsThread{publicvoidrun()

{ }}②生成该类的对象MyThread myThread=newMyThread()线程状态转化19/26东北石油大学计算机与信息技术学院 李勇勇线程控制的基本方法方法功能isAlive()判断线程是否还活着,即判断线程是否还未终止。getPriority()获取线程优先级数值setPriority()设置线程优先级的数值Thread.sleep()将当前线程睡眠指定毫秒数join()调用某线程的该方法,将当前线程与该线程“合并”,即等待该线程结束,在恢复当前线程的运行。yield()让出cpu,当前线程进入就绪队列等待调度。wait()当前线程进入对象的waitpool。notify()/notifyAll()唤醒对象waitpool中的一个或者所有的等待的线程。5.sleep方法(1)可以调用 Thread的静态方法:publicstaticvoidsleep(longmillis)throwsInterruptedException使得当前的线程睡眠(暂时停止执行 millis毫秒数)(2)由于是静态方法, sleep可以直接由类名调用 :Thread.sleep( )6.线程的优先级别(1)java提供一个线程调度器来控制程序中启动后进入就绪状态的所有线程。线程调度器按照线程的优先级决定应调度哪个线程来执行。2)线程的优先级用数字表示,范围1~10,一个线程的缺省优先级是5.Thread.MIN_PRIORITY=1;Thread.MAX_PRIORITY=10;Threa.NORM_PRIORITY=5;(3)使用下述方法设置 或者获取线程对象的优先级intgetPriority()voidsetPriority(intnewPriority)线程同步(1)在Java语言中,引入对象互斥锁概念,保证共享数据操作的完整性,每个对象都对应于一个可称为“互斥锁”的标记,这标记保证在任何一时刻,只有一个线程访问该对象。(2)关键字synchronized来与对象的互斥锁联系,当某个对象 synchronized修饰时,表明该对象在任何一个时刻都只能由一个线程访问。(3) synchrronized还可以放在方法声明中,表示整个方法是同步方法。20/26东北石油大学计算机与信息技术学院 李勇勇8.wait和sleep的区别1)wait时别的线程可以访问锁定的对象。2)调用wait方法时必须锁定该对象。3)Sleep时别的线程也不可以访问锁定对象。十六.网络编程1.网络基础概念(1) 计算机网络把分布在不同地区的计算机与专门的外部设备用通信线路互连成一个规模大、 功能强的网络系统。从而使更多的计算机可以方便的相互传递信息,共享软件,硬件,数据信息等资源。(2) 计算机网络的主要功能资源共享信息传输与集中处理均衡负荷与分布处理综合信息服务2.网络通信协议及接口(1) 网络通信协议计算机网络中实现通信必须有一些约定即通信协议, 对速率,传输代码, 代码结构,传输控制步骤,出错控制等制定标准。(2) 网络通信接口为使两个节点之间可以通话,必须在他们之间建立通信工具(接口) ,使彼此之间可以进行信息交换。接口包括两部分:硬件装置:实现节点之间的信息传输;软件装置:规定双方进行通信的约定协议。通信协议分层思想(1)为什么要分层由于节点之间联系很复杂, 在制定协议时, 把复杂成分分解成一些简单的成分, 再将他们符合起来,最常用的符合方式是层次方式,即同层间可以通信,上一层可以调用下一层,而与再下一层不发生关系,各层互不影响,利于系统的开发和扩展。(2) 通信协议的分层规定把用户应用程序作为最高层,把物理通信线路作为最底层,将期间的协议处理扽为若干层,规定每层处理的任务,也规定每层的接口标准。参考模型OSI参考模型 TCP/IP参考模型应用层 应用层表示层 会话层 传输层 传输层 网络层网络层 物理+数据链路层数据链路层 物理层5.数据封装 21/26东北石油大学计算机与信息技术学院 李勇勇数据拆分 6.IP协议7.)协议是网际层的只要协议,支持网间互联的数据报通信,InternetProtocolIP1)((他提供的主要功能有:无连接数据报传送;数据报路由选择和差错控制。协议和

UDP协议

8.TCP)协议是专门设计用在不可靠的因特网上提供

()

TCPtransmissioncontrolprotocol1

(连接是字

TCP端到端的字节流通信的协议,可靠的,他是一种面向连接的协议。

节流而非报文流。

22/26东北石油大学计算机与信息技术学院

李勇勇(2) UDP(userdataprotocol)协议向应用程序提供一种发送封装的原始 IP数据报的方法,而且发送时无需建立连接,是一种不可靠的连接。9.Socket1)两个java应用程序可以通过一个双向的网络通信连接实现数据交换,这个双向连接的一端称为一个Socket。(2)Socket通常用来实现client-server连接。(3)包中定义了两个类,Socket和ServerSocket,分别用来实现双向连接的client端和server端。(4)建立连接时所需的寻址信息为远程计算机的IP地址和端口号(PortNumber)TCP端口和UDP端口是分开的。②每一个65536个端口。10.TCPSocket通信模型十七.GUI编程1.AWT(1)

AWT(abstractwindowtoolkit

)包括了很多类和接口,

用于

javaapplication

的GUI(GraphicsuserInterface)编程。(2) GUI的各种元素由

java来实现。(3) 使用

AWT所涉及的类一般都在

java.awt

这个包里。(4) Container和Component是两个核心类。Container&Component/26东北石油大学计算机与信息技术学院 李勇勇(1) java图形用户界面的最基本组成部分是 Component,Component 类极其子类对象都用来描述以图形化的方式显示在屏幕上,并能与用户进行交互的 GUI元素。(2)一般的Component对象不可以独立的显示出来,必须将“放在“某一 Container对象中才可以显示出来。(3) Container是Component的子类,Container子类对象可以容纳其他的 Component对象。4)Container对象可以通过使用add()添加其他的Component对象。(5) Container是Compon

温馨提示

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

评论

0/150

提交评论