2022年java面向对象程序设计基础知识总结 .docx
精品_精品资料_1、含有 main 方法的类称为主类,一个.java 文件中可以有多个类, 但只能有一个主类.2 、 转义字符:对于 和 , 需在前面加上 ,即用 char a =' ,b='' 表示. n 表示回车换行. t 表示水平制表. b 表示退格.v 表示水平制表. r 表示回车. a 表示警铃3 、 标识符: Java 程序中自定义的类名、方法名、参数都是标识符, Java 语言中规定标识符由字母(区分大小写)、数字、下划线、 $自由组合而成,但不能以数字开头,标识符长度不限.4 、 基本数据类型:分 4 大类 整数( byte : 1字节/int :4 字节/short:2 字节/long :8 字节)、 浮点数 ( float : 4字节/double:8 字节)、 字符型 ( char:2 字节)、 布尔型 ( boolean:1字节).5 、 整形变量留意: 16 进制数以 0x 开头, 8 进制数以 0开头.6 、 浮点型变量留意:假如数字未加任何字母,就默认为double类型,赋值时须留意数据类型匹配问题.7 、 数组的定义: char array1.和 char array2.都可以.8 、 双目运算符: + - * /对于整形和浮点数有效( float x = 1f/3f.的运行结果是 x=0.33333334) ,但%只对整形运算.9 、 规律运算符:规律运算是对布尔型变量进行运算,结果也是布尔型. 表示异或运算( ab表示 a 和 b 真假不同时,值为真). && 和|是短路的(对于 a&&b,假如 a 为假,就不再运算b 的值), & 和| 是非短路的, a 和 b 的值都要运算.10 、 位运算符: & 位与、 |位或、 位反、 位异或、 << 左移、 >> 右可编辑资料 - - - 欢迎下载精品_精品资料_移、>>>无符号右移 忽视了符号位扩展, 0 补最高位 .11 、 位运算留意: JAVA 进行移位运算中由于 int 是占 32 位,进行移位的数是 32的模 ,long 占8 字节也就是 64 位,所以移位的数是 64 的模, byte 、short进行右移位运算,会自动转换成int 类型.12 、 左移运算: value << num:左移 num位, 丢弃最高位, 0 补最低位,假如移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模 依据被移位数的类型而定模的大小.运算规章 : a.当左移的运算数是 int 类型时,每移动 1位它的第 31 位就要被移出并且丢弃. b. 当左移的运算数是 long类型时,每移动 1位它的第 63 位就要被移出并且丢弃. c.当左移的运算数是 byte 和 short类型时,将自动把这些类型扩大为 int 型.d. 在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以 2 的1 次方,左移 n 位就相当于乘以 2的 n次方13 、 右移运算: value >> num:符号位不变,左边补上符号位.运算规章 : a.按二进制形式把全部的数字向右移动对应的位数,低位移出舍弃,高位的空位补符号位,即正数补零,负数补1 .b. 当右移的运算数是 byte 和 short类型时,将自动把这些类型扩大为int型. 14 、 三目运算符(条件表达式): x.y:z.表示 x 为真时,表达式的值是 y 的值,否就取 z 的值. int x=1,y=2,z=3. int i = x<0.y:z.就i 的取值就是 3.15 、 java 中供应了四种转移语句: break 、continue、return、throw可编辑资料 - - - 欢迎下载精品_精品资料_break: 在 Java 中, break 语句有 3种作用.第一,你已经看到,在switch语句中,它被用来终止一个语句序列.其次,它能被用来退出一个循环.第三,它能作为一种“先进”的goto语句来使用( break label . 标签 label 是标识代码块的标签.当这种形式的break 执行时,把握被传递出指定的代码块.被加标签的代码块必需包围break 语句,但是它不需要是直接的包围break 的块.这意味着你可以使用一个加标签的 break语句退出一系列的嵌套块.但是你不能使用break语句将把握传递到不包含 break语句的代码块 ).16 、 continue:类似 break ,不带标签的 continue是终止当前循环结构,转而直接进入下一轮循环.而continue label.就是把程序直接转到 label 所指向的那一个循环结构的下一轮循环,而不管被它嵌套的及 continue语句所在的循环结构运行到了哪一轮.17 、 方法的调用及参数的传递:一个是传值(要求实际参数必需是简洁类型的变量),一个是传递 的址数组.18 、 类与对象:类是对对象的抽象 ,而对象是对类的具体化或实例化.19 、 类头说明:类名第一个字母大写并表达该类的功能或特点.类的修饰符分两种:一是拜望把握符,如public .一是 类型说明符 ,类型说明符只有两个: abstract和 final .20 、 类的拜望把握符:一个是 public ,可以被全部的类拜望和引用,其他包用 import语句引入后可调用.一个是默认的,也就是没有把握符,也称为友好的 friendly, 包中的类能用而不能被其他包可编辑资料 - - - 欢迎下载精品_精品资料_中的类拜望或使用( import引入也不行). 留意: import语句引入的类必需是 public修饰的类, Java 规定一个 .java 文件可以有多个类,但必需有一个而且最多有一个public类,因而文件中的其他类只能是友好拜望把握符.21 、 属性和方法的拜望把握符 : public 、private (私有拜望把握 符,只能被该类自身所拜望或调用)、protect (爱惜拜望把握符,它可被同一个包中的其他类、不同包中的该类的子类及自身调用)、 private protect(只能被该类自身及该类的子类拜望和引用)、默认拜望把握符(具有包内拜望性,只能被同一个包中的其他类拜望或引用,不在同一个包中的类不能拜望它,即使用import语句引入也不行)22 、 static : 只能修饰属性和方法,修饰的属性和方法不用实例化, 可以用类直接调用.23 、 多个修饰符放在一起使用: abstract不能与 final共同修改一个类. abstract不能与 private,static,final和 native共同修饰一个方 法. abstract类中不能有私有属性和方法.24 、 另一种创建对象的方法:假设一个类名为Text ,它有一个方法名为 print ,就可以直接用下面的语句创建对象并其方法:new Text.print.不过这个对象是无名,所以不能被再次调用.25 、 构造函数:构造函数名字必需与类名完全相同,没有返回值也不用 void 指明,仍可以通过重载实现不同的初始化方法.26 、 Java 答应类的嵌套 :因此类的默认拜望把握符有两个:一个是可编辑资料 - - - 欢迎下载精品_精品资料_友好类 default ,一个是类中类,一个友好类编译后能后生一个独立的.class 文件,如 Input.class ,而类中类却产生Judge$Imput.class,所以只能被包含它的类使用.27 、 命令行参数: main 方法是通过 String args这个字符串数组来接收命令行参数的.28 、 继承:一个子类只能继承一个父类,这样继承关系就形成了一棵树.继承能够使子类拥有父类非私有的属性和方法.子类通过super来调用父类的属性和方法.29 、 多态: 指一棵继承树的类中可以有多个同名但不同方法体以及不同形参的方法.分两种情形掩盖和重载.掩盖是在子类中直接定义和父类同样的属性和方法,而重载是指在同一个类定义中有多个同名的方法,但有不同的形参.掩盖:子类与父类的关系,是在子类中直接定义和父类同样的属性和方法,但重新编写了方法体,即子类与父类的形参与返回值都相 同,但内部处理不同. 通过调用它的对象来准备调用哪个方法.重载:同一个类内部多个方法间的关系,是指在同一个类定义中有多个同名的方法,但不同的形参,而且每个方法有不同的方法体,调用时依据形参的个数和类型来准备调用的是哪个方法.通过形参表来准备调用哪个方法.30 、 在 Java 技术中,另一个必需要求有重载存在的缘由是构造函数.31 、 继承了父类的属性表示子类被创建时另外开创了新的空间来存可编辑资料 - - - 欢迎下载精品_精品资料_储从父类继承而来的属性,其初值应当是父类中属性的初值,但之后双方的相同属性彼此相互独立.32 、 final修饰的方法不能被子类掩盖,但可以被重载.abstract修饰的方法必需被子类掩盖.33 、this 的使用 :this 关键字(只能在方法内部使用)可以为调用了自己的方法的那个对象生成相应的的址,可以像对待其他任何对象的 址一样对待.public class Leaf private int i=0.Leaf increment i+ .return this. / 将当前对象的的址作为返回值返回void printSystem.out.println"i= "+i.public static void mainString argsLeaf x = new Leaf.x.increment.increment.increment.print. / 多次调用方法/ increment,返回的都是对象 x 的的址, i 值表示调用次数可编辑资料 - - - 欢迎下载精品_精品资料_34 、super的作用:它并不是父类对象的的址,它特的用来指代父类,也就是说 super 的含义是被修饰的属性和方法将使用父类的定义,而非子类本身的定义,因此子类的对象想使用它父类中的同名属性和方法时 ,就可以使用 super .35 、构造函数:假如定义了多个构造函数,创建对象时必需使用其中之一,由于系统不再定义默认的空构造函数了.构造函数的简化 调用:用构造函数间的 调用可以实现定义的简化, 就是先调用定义好的构造函数完成部分属性的初始化,再加上其他属 性的赋值.public class Leaf private String lname.private int lnum.Leafint numlnum = num.Leafint $num,String $namethis$num. / 调用上一个构造函数,等同于lnum = $num.lname = $name.public static void mainString args Leaf x = new Leaf20,"good".可编辑资料 - - - 欢迎下载精品_精品资料_System.out.println"lnum= "+x.lnum+" lname= "+x.lname.Leaf y = new Leaf22.System.out.println"lnum="+y.lnum.调用其他构造函数时,必需加上this代替函数名,但这时的 this 不代表的址,只用来表示构造函数的名称,也就是类名.留意要在实际参数名前加上 $作为开参名,这样既区分于实际参数名,又能反映形参的含义.构造函数的继承: A、子类只能继承父类的默认构造函数,即无形参构造函数,并且在创建对象时先调用这个构造函数对对象进行初始化, 再调用子类自己定义的构造函数.B、假如父类没有默认构造函数,子类将不能从父类继承到任何构造函数,并且子类也不能定义自己的无参数构造函数.C、假如子类想调用父类的非默认构造函数,必需使用super来实现.例如调用父类的构造函数并加入自己的定义: NormalStudent$stuFlag,$sName,$sSex,$reduceFlag super$stuFlag,$sName,$sSex./ 此处调用的是父类的构造函数对形参$stuFlag,$sName,$sSex初始化.reduceFlag = $reduceFlag.可编辑资料 - - - 欢迎下载精品_精品资料_D、子类的构造函数的形参表只能使用父类构造函数中用过的形参表, 或者是对它的扩展. 例如父类的构造函数只有一个: Superint i, String s,那么它的子类只能定义这样的构造函数:subbieint i,String s,char c等.36 、最终类成员 A 用 final修饰的方法是不能被该类的子类所重载的方法.B、用 final 修饰的简洁变量相当于常量,不管这个变量是属性仍是自变量,这时相当于编程者用一个名称来代替一个常量.假如类的属性是常量,那么它的各个对象的这个值确定相同,所以final 通常和static 放在一起修饰属性,以节省内存空间.另外final 的修饰的简洁变量通常是全部字母大写,以表示它是常量.37 、静态变量、动态变量区分A、对于静态变量在内存中只有一个拷贝(节省内存),JVM 只为静态支配一次内存,在加载类的过程中完成静态变量的内存支配,可用类名直接拜望(便利),当然也可以通过对象来拜望(但是这是不举荐的). B、对于实例变量,每创建一个实例,就会为实例变量支配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵敏).38 、对象在继承关系中的转变:A、子类实例可以被当作父类的一个对象使用,而父类实例不能被当作子类的一个对象使用.子类对象可赐予父类对象,父类对象赐予子类对象就出错B、假如一个父类对象通过赋值指向的的址是子类对象所在的的址,按可编辑资料 - - - 欢迎下载精品_精品资料_照前一条规章,这个对象仍然是父类的对象.但它可以通过强制类型转换变成子类对象,这种转换只能用在对象间赋值时,不能单独使用强制转换.以上规章可以这样懂得:子类对象所占的内存在一般情形下比父类对象所占的内存空间大,父类对象中的成员都可以在子类对象的的址中找到对应部分,所以可以把子类对象当作父类的一个对象用.而相反时,子类对象的成员并不愿定能在父类对象的址中找到对应部分,这样就可能造成成员丢失.而强制类型转换就是由于父类对象本身就与子类对象的的址相对应(从子类转换而来 ,当然可以把这个对象转换成子类的对象,而不造成成员的丢失.public class ObjectConvert public static void mainString argsSuperClass superA = new SuperClass,superB.Subbie subA = new Subbie,subB./ 用子类对象作为实际参数传递给应是父类对象的形参new ObjectConvert.useSubAsSupersubA.superB = subA./ 把子类对象赐予父类对象System.out.println"superB.getX"+superB.getX./ 假如输出中仍用方法getY 将出错./System.out.printlnsuperB.gety./ subB = superA./ 把父类对象赐予子类对象将出错/ 把指向子类对象的址的父类对象superB强制转换成子类对象,并赐予subB subB = SubbiesuperB.System.out.printlnsubB.getX+" "+subB.getY./ 子类对象仍相当于是原先的子类对象subApublic void useSubAsSuperSuperClass x System.out.printlnx.getX+".".可编辑资料 - - - 欢迎下载精品_精品资料_class SuperClass private int x = 100.public int getXreturn x .class Subbie extends SuperClass private int y = 200.public int getYreturn y .39 、抽象类:抽象类的属性和方法是它的子类的公共属性和方法的集合.A、用 abstract修饰的方法是抽象方法,全部的抽象方法都必需在抽象类中, 抽象方法只有方法头而无方法体.定义格式如下: abstract返回值类型 方法名 形参 .B、抽象类可以包含抽象方法和一般方法,继承它的非抽象子类必需实现其全部的抽象方法(留意是掩盖而不是重载),对于抽象类中的一般方法的继承和一般的继承一样,只要该方法是非private的就可以继承.C、抽象类的实例:抽象类不能有实例,但有一种情形例外,就是定义一个抽象类的对象名(引用)指向它的非抽象子类的对象.这也就是38B 中介绍的情形,这时的抽象类实例只含有父类全部的方法,而没有子类新增加的方法.可以这样懂得:一个对象名或方法名相当于一个指针,父类的对象指向了子类的实例对象,因此父类对象的方法找到了指针的目标,就是子类对象中的同名方法,而对于子类对象中私可编辑资料 - - - 欢迎下载精品_精品资料_有的方法 C,父类对象中没有指针指向 C ,也即父类对象根本不知道有方法 C 的存在,所以父类对象不能调用子类对象方法C.D、抽象类可以有抽象方法也可以没有抽象方法.但是假如一个类有抽象方法,那这个类只能定义为抽象类.E、假如是抽象类实现一个接口,那么抽象类中可以不具体实现接口的方法保持其抽象性 ,而由其子类去实现.40 、接口:接口在语法上和类很相像, 它的属性都是常量(用 final 修饰),方法都是抽象方法( abstract ),没有方法体 ,接口间也可以形成继承关系.定义:public interface接口名 extends父接口名 1 ,父接口名 2 , public static final属性数据类型 属性名 1 = 值. / 必需给出属性值public abstract native返回值类型 方法名(形参表) throw例外名列表 .说明: 1、puiblic表示它可以被不同包中的类或接口使用,没有用 public表示它是友好的( default ),具有包内拜望性. Interface的修饰符只能为 public或默认( default ).2 、子接口将继承全部父接口的全部属性和方法3 、接口的属性必需是public static final(静态常量) 修饰的 ,可编辑资料 - - - 欢迎下载精品_精品资料_这是被系统默认的,所以可以不写,但一般写出final (所以接口的属性必需给出属性值)4、 接口的方法系统默认为 public abstract的,一般不写修饰符5、一个接口可以没有任何接口体,但大括号不能省略,这种接口一般是接口继承结构中一个最顶层的父接口接口与抽象类的区分:接口中不能有非抽象的方法,但抽象类中可以有一个类能实现多个接口,但只能有一个父类接口与继承无关,所以无关的类可以实现同一个接口.接口的实现: 必需在类的定义时用关键字implements来声明一个类声明实现某个接口后必需实现该接口的全部方法(包括该接口的全部父类的方法),被实现的方法和接口定义的方法有完全一样的方法名、返回值和形参表.被实现的方法的拜望把握符必需显式的使用public修饰,由于接口的方法都是 public的.41 、适配器:当我们只需要使用某个接口中的少部分方法时,可以继承与之相对应的抽象类(抽象类不用实现全部的方法?).java 类库为全部的接口都供应了与之相对应的抽象类,我们称之为适配器.? 42 、例外:java 答应我们声明抛出一个并没有发生的例外,可将其作为一个“占位符”来懂得.A、java 供应了一个名为 Throwable的类,全部的例外都必需是它或它子类的实例. Throwable有两个子类: Error 和 Exception ,其中可编辑资料 - - - 欢迎下载精品_精品资料_Error 代表编译期和系统错误,我们一般不用特意捕获它们.Exception是可以从任何标准 Java 库的类方法中聘请的基本例外类, 它们亦可以从我们自己的方法或者在运行期偶发大事中抛出.java 定义的例外类都是 Exception的子类. -B、catch 的括号内定义的对象名必需是try 块中可能抛出的例外类的同一个类或父类、甚至祖先类.因此说用catchException e能捕获全部例外就不奇怪了.C、反常的继承结构:基类为Throwable,Error 和 Exception继承Throwable,RuntimeException和 IOException等继承 Exception ,具体的 RuntimeException继承 RuntimeException.D、 Error 和 RuntimeException及其子类成为 未检查反常 ?( unchecked),其它反常成为已检查反常( checked )E、例外在继承关系中的特殊性:子类方法只能抛出被父类方法所能抛出的例外所属的例外类或它的衍生类,假如父类方法未定义成抛出例外,那么子类掩盖方法也不能抛出例外,假如父类方法声明抛出例 外,子类方法可以不声明抛出例外.但是,父类的构造函数假如声明抛出例外,就子类的构造函数也必需声明抛出,子类也可以抛出根本不存在的例外.43 、RuntimeException介绍1) 、NullPointerException(值为空):见的最多了,其实很简洁, 一般都是在 null 对象上调用方法了.String s=null.可编辑资料 - - - 欢迎下载精品_精品资料_boolean eq=s.equals"". / NullPointerException 这里你看的特殊明白了,为什么一到程序中就晕了? public int getNumberString strifstr.equals"A" return 1.else ifstr.equals"B" return 2.这个方法就有可能抛出 NullPointerException,我建议你主动抛出反常,由于代码一多,你可能又晕了.public int getNumberString str ifstr=nullthrow new NullPointerException"参数不能为空 " ./你是否觉得明白多了ifstr.equals"A" return 1.else ifstr.equals"B" return 2.2) 、NumberFormatException:继承 IllegalArgumentException, 字符串转换为数字时显现.比如 int i= Integer.parseInt"ab3".3) 、ArrayIndexOutOfBoundsException:数组越界.比如 inta=new int3. int b=a3.4) 、StringIndexOutOfBoundsException:字符串越界.比如 String s="hello". char c=s.chatAt6.5) 、ClassCastException:类型转换错误.比如 Object obj=new可编辑资料 - - - 欢迎下载精品_精品资料_Object . String s=Stringobj.6) 、UnsupportedOperationException:该操作不被支持.假如我们期望不支持这个方法,可以抛出这个反常.既然不支持仍要这个干吗?有可能子类中不想支持父类中有的方法,可以直接抛出这个异常.7) 、ArithmeticException:算术错误,典型的就是0作为除数的时候.8) 、IllegalArgumentException:非法参数,在把字符串转换成数字的时候经常显现的一个反常,我们可以在自己的程序中好好利用这个 反常.44 、Java 基本类库介绍:Class 类:它是一个特殊的类,它的对象将相伴每个类,当一个类 X 被编译后,就有一个特殊的对象(class 对象)产生,它隐匿在 X.class 文件中, Class 对象是由编译系统自动生成的.Class.forNameString className,这个方法是静态方法,所以用 Class 直接调用,方法的返回值是形参指示的类的Class 对象.类的加载都是在对象创建的时候进行.45 、String 与 StringBufferString类用于处理那些值不会发生转变的字符串.而StringBuffer(变长字符串)类用于那些可能发生变化的字符串的处理.可编辑资料 - - - 欢迎下载