java基本编程技巧.ppt

上传人:max****ui 文档编号:6359935 上传时间:2020-02-23 格式:PPT 页数:82 大小:3.06MB
返回 下载 相关 举报
java基本编程技巧.ppt_第1页
第1页 / 共82页
java基本编程技巧.ppt_第2页
第2页 / 共82页
java基本编程技巧.ppt_第3页
第3页 / 共82页
点击查看更多>>
资源描述
JAVA基本编程技巧 主讲老师 第一章 java编程基础 Java的基本语法 1 java是严格区分大小写的java是一种自由格式的语言java程序有三种注释方式 java中的标识符java中的包 类 方法 参数和变量的名字 可由任意顺序的大小写字母 数字 下划线 和美元符号 组成 但标识符不能以数字开头 不能是关键字 合法的标识符 indentifierusernameuser name userName username 非法的标识符 class98 3HelloWorld Java的基本语法 2 java的关键字 注 java无sizeof goto const关键字 但不能用gotoconst作为变量名 java中的常量 1 整型常量十进制 12 十六进制 0 x12 八进制 012 长整型常量13L单精度浮点数5 1f 4f 2e3f 0f双精度浮点数5 1 4 2e 3 0d布尔常量true和false java中的常量 2 字符常量 a 8 u0027 r 表示接受键盘输入 相当于按下了回车键 n 是换行 t 是制表符 相当于table键 b 是退格键 相当于BackSpace 是单引号 而 是双引号 是一个斜杠 字符串常量 HelloWorld 123 Welcome nXXX null常量null常量只有一个值 用null表示 表示对象的引用为空 变量的概念与作用 变量就是系统为程序分配的一块内存单元 用来存储各种类型的数据 根据所存储的数据类型的不同 有各种不同类型的变量 变量名代表这块内存中的数据 intx 0 y y x 3 执行这两条语句的过程中 内存分配及变化情况 X在被取值前必须被初始化 java的变量类型 数据类型 基本数据类型 引用数据类型 数值型 字符型 char 布尔型 boolean 整数类型 byte short int long 浮点类型 float double 类 class 接口 interface 数组 变量字节大小及有效取值范围 byte占用一个字节 数字大小为 27 27 1short占用两个字节 数字大小为 215 215 1int占用四个字节 数字大小为 231 231 1long占用八个字节 数字大小为 263 263 1float占用四个字节 数字大小为1 4E 45 3 4E 38 1 4E 45 3 4E 38 用二进制的指数形式表示一个浮点数的格式 如 101 22 101 2 3double占用八个字节 数字大小为4 9E 324 1 7E 308 4 9E 324 1 7E 308 char占两个字节 数字大小为0 216 1 是unicode编码 字符的本来面目 我们为什么可以直接将一个数字赋给字符变量 Boolean占一个字节 其取值只有两个 true和false 类型转化 自动类型转换 也叫隐式类型转换 强制类型转换 也叫显式类型转换 类型转换的原理及什么时候要用强制类型转换表达式的数据类型自动提升所有的byte型 short型和char的值将被提升到int型 如果一个操作数是long型 计算结果就是long型 如果一个操作数是float型 计算结果就是float型 如果一个操作数是double型 计算结果就是double型 分析System out println a 1 与System out println a 1 的区别 变量的生命周期与作用域 变量要先定义 后使用 但也不是在变量定义后的语句一直都能使用前面定义的变量 我们可以用大括号将多个语句包起来形成一个复合语句 变量只能在定义它的复合语句中使用 publicclassTestScope publicstaticvoidmain String args intx 12 intq 96 x和q都可用intx 3 错误的定义 Java中不允许有这种嵌套定义System out println xis x System out println qis q q x 错误的行 只有x可用 q超出了作用域范围 System out println xis x 函数的重载 函数的重载就是在同一个类中允许同时存在一个以上的同名函数 只要它们的参数个数或类型不同即可 如 publicclassTest publicstaticvoidmain String args intisum doublefsum isum add 3 5 isum add 3 5 6 fsum add 3 2 6 5 publicstaticintadd intx inty reutrnx y publicstaticintadd intx inty intz returnx y z publicstaticdoubleadd doublex doubley returnx y 算术运算符 赋值运算符 比较运算符 逻辑运算符 和 区别的实例分析 publicclassShiftTest publicstaticvoidmain String args intx 0 x80000000 inty 0 x80000000 x x 1 y y 1 System out println 0 x80000000 1 Integer toHexString x System out println 0 x80000000 1 Integer toHexString y 运行结果如下 0 x80000000 1 c00000000 x80000000 1 40000000十六进制与二进的对比0 x8000000016 1000 0000 0000 0000 0000 0000 0000 000020 xc000000016 1100 0000 0000 0000 0000 0000 0000 000020 x4000000016 0100 0000 0000 0000 0000 0000 0000 00002 运算符的优先级 if语句的选择结构 if 表达式 语句 if 表达式 语句1 else语句2 if 表达式1 语句1 elseif 表达式2 语句2 elseif 表达式2 语句3 else语句n 每个语句可以是使用 组成的复合语句变量 布尔表达式 语句1 语句2 If语句还可以嵌套使用if 表达式1 if 表达式2 语句1 else语句2 esleif 表达式2 语句3 else语句4 嵌套时最好使用 确定层次界限 举例说明 switch语句的选择结构 Switch 表达式 case常量表达式1 语句1 case常量表达式2 语句2 case常量表达式n 语句n default 语句n default语句是可选的 它接受除上面接受值的其他值 通俗的讲 就是谁也不要的都归它 case后面可以跟多个语句 这些语句可以不用大括号括起来 switch语句判断条件可接受int byte char short型 不可以接受其他类型一旦碰到第一次case匹配 就会开始顺序执行以后所有的程序代码 而不管后面的case条件是否匹配 后面case条件下的代码都会被执行 直到碰到break语句为止 我们可以利用这个特点来用同一段语句处理多个case条件 while循环语句 While 表达式 语句 intx 1 while x 3 System out println x x x 脚下留心 while表达式的括号后面一定不要加 do while循环语句 do语句while 表达式 publicclassTestDo publicstaticvoidmain String args intx 3 while x 0 System out println ok1 x inty 3 do System out println ok2 y while y 0 do while循环语句 编写一个程序 这个程序不断地读取从键盘上输入的字符 直到读到字符 q 时 程序结束 提示 调用System in read 可以读取到一个从键盘上输入字符对应的整数 通过这个程序 你一定能体会到在什么样的情况下 用do while循环语句比while循环语句方便 for循环语句 for 表达式1 表达式2 表达式3 语句for intx 1 x 10 break System out println x x x break语句 break语句可以中止循环中的子语句和switch语句 一个无标号的break语句会把控制传给当前 最内 循环 while do for或Switch 的下一条语句 如果有标号 控制会被传递给当前方法中的带有这一标号的语句 如 st while true while true breakst continue语句 continue语句只能出现在循环语句 while do for 的子语句块中 无标号的continue语句的作用是跳过当前循环的剩余语句块 接着执行下一次循环 用continue语句的打印出0到10之间的所有奇数的程序例子 for inti 0 i 10 i if i 2 0 continue System out println i 数组 静态数组intia 1 2 3 4 int ia newint 3 4 5 inta 5 声明数组时 不能指定其长度 编译时将出错使用数组时要注意的问题空指针异常如何得到数组长度数组越界异常 多维数组 如何理解多维数组 类似我们的棋盘 java中并没有真正的多维数组 只有数组的数组 Java中多维数组不一定是规则矩阵形式 定义一个多维数组int xx xx newint 3 xx 0 newint 3 xx 1 newint 2 多维数组 多维数组中元素的引用方式 如 x 1 2 规则矩阵数组可以在一条语句中产生 如 intxx newint 2 3 多维数组的静态初始化 如 int xx 3 2 7 1 5 6 与数组操作相关的函数 使用System arraycopy 函数拷贝数组用Arrays sort来排序数组 第二讲 JAVA面向对象 上 类的定义 classPerson intage voidshout System out println oh mygod Iam age age是类的属性 也叫类成员变量 shout是方法也叫类的成员函数 shout方法可以直接访问同一个类中的age变量 如果一个方法中有与成员变量同名的局部变量 该方法中对这个变量名的访问是局部变量 而不再是成员变量 对象的产生 Personp1 newPerson 执行完后的内存状态 对象的产生 当一个对象被创建时 会对其中各种类型的成员变量自动进行初始化赋值 除了基本数据类型之外的都是变量类型都是引用类型 如上面的Person及前面讲过的数组 对象的使用 创建新的对象之后 我们就可以使用 对象名 对象成员 的格式 来访问对象的成员 包括属性和方法 classTestPerson publicstaticvoidmain String args Personp1 newPerson Personp2 newPerson p1 age 30 p1 shout p2 shout 上面程序运行的内存布局如下图 对象的生命周期 对象的比较 运算符与equals 方法的区别怎样比较两个数组对象的内容是否相等 匿名对象 我们也可以不定义对象的句柄 而直接调用这个对象的方法 这样的对象叫做匿名对象 如 newPerson shout 如果对一个对象只需要进行一次方法调用 那么就可以使用匿名对象 我们经常将匿名对象作为实参传递给一个函数调用 实现类的封装性 如果外面的程序可以随意修改一个类的成员变量 会造成不可预料的程序错误 就象一个人的身高 不能被外部随意修改 只能通过各种摄取营养的方法去修改这个属性 在定义一个类的成员 包括变量和方法 时 使用private关键字说明这个成员的访问权限 这个成员成了类的私有成员 只能被这个类的其他成员方法调用 而不能被其他的类中的方法所调用 实现类的封装性 为了实现良好的封装性 我们通常将类的成员变量声明为private 再通过public的方法来对这个变量进行访问 对一个变量的操作 一般都有读取和赋值操作 我们分别定义两个方法来实现这两种操作 一个是getXxx Xxx表示要访问的成员变量的名字 用来读取这个成员变量操作 另外一个是setXxx 用来对这个成员变量赋值 一个类通常就是一个小的模块 我们应该让模块仅仅公开必须要让外界知道的内容 而隐藏其它一切内容 我们在进行程序的详细设计时 应尽量避免一个模块直接修改或操作另一个模块的数据 模块设计追求强内聚 许多功能尽量在类的内部独立完成 不让外面干预 弱耦合 提供给外部尽量少的方法调用 用总统指挥一支军队的例子来说明这种效果 类的封装所带来的优点 隐藏类的实现细节 让使用者只能通过事先定制好的方法来访问数据 可以方便地加入控制逻辑 限制对属性的不合理操作 便于修改 增强代码的可维护性 编程试验 我们在一个类中定义了一个private类型的成员变量 接着产生了这个类的两个实例对象 请问第一个对象的方法中 能否以 第二个对象 成员 的格式访问第二个对象中的那个private成员变量 构造函数的定义与作用 构造方法的特征它具有与类相同的名称 它不含返回值 它不能在方法中用return语句返回一个值注意 在构造方法里不含返回值的概念是不同于 void 的 在定义构造方法时加了 void 结果这个方法就不再被自动调用了 构造方法的作用 当一个类的实例对象刚产生时 这个类的构造方法就会被自动调用 我们可以在这个方法中加入要完成初始化工作的代码 这就好像我们规定每个 人 一出生就必须先洗澡 我们就可以在 人 的构造方法中加入完成 洗澡 的程序代码 于是每个 人 一出生就会自动完成 洗澡 程序就不必再在每个人刚出生时一个一个地告诉他们要 洗澡 了 构造方法的重载 和一般的方法重载一样 重载的构造方法具有不同个数或不同类型的参数 编译器就可以根据这一点判断出用new关键字产生对象时 该调用哪个构造方法了 产生对象的格式是 new类名 参数列表 重载构造方法可以完成不同初始化的操作 如 p3 newPerson Tom 18 语句 会做这样几件事 创建指定类的新实例对象 在堆内存中为实例对象分配内存空间 并调用指定类的构造方法 最后将实例对象的首地址赋值给引用变量p3 p3 newPerson Tom 18 的内存状态变化过程分析 构造方法的一些细节 在java每个类里都至少有一个构造方法 如果程序员没有在一个类里定义构造方法 系统会自动为这个类产生一个默认的构造方法 这个默认构造方法没有参数 在其方法体中也没有任何代码 即什么也不做 由于系统提供的默认构造方法往往不能满足编程者的需求 我们可以自己定义类的构造方法 来满足我们的需要 一旦编程者为该类定义了构造方法 系统就不再提供默认的构造方法了 声明构造方法 如无特殊需要 应使用public关键字 在我们前面例子中 可以使用private访问修饰符吗 this是什么 如果func2方法被调用 一定是事先已经有了一个存在的对象 func2被作为那个对象的方法被使用 在func2内部能引用别的对象 同样也能引用func2所属的那个对象 在func2中 自己所属的那个对象的引用名称是什么呢 this关键字在java程序里的作用和它的词义很接近 它在函数内部就是这个函数所属的对象的引用变量 this引用句柄的存放位置 每个成员方法内部 都有一个this引用变量 指向调用这个方法的对象 类中的成员方法与this之间的关系如图 this引用句柄的应用 一个类中的成员方法可以直接调用同类中的其他成员 其实我们在一个方法内部使用 this 其他成员 的引用方式和直接使用 其他成员 的效果是一样的 那this还有多大的作用呢 在有些情况下 我们还是非得用this关键字不可的 让类的成员变量名和对其进行赋值的成员方法的形参变量同名是必要的 这样的代码谁看了都能明白这两个变量是彼此相关的 老手看到函数的定义 就能揣摩出函数中的代码 大大节省了别人和自己日后阅读程序的时间 假设我们有一个容器类和一个部件类 在容器类的某个方法中要创建部件类的实例对象 而部件类的构造方法要接收一个代表其所在容器的参数 构造方法是在产生对象时被java系统自动调用的 我们不能在程序中象调用其他方法一样去调用构造方法 但我们可以在一个构造方法里调用其他重载的构造方法 不是用构造方法名 而是用this 参数列表 的形式 根据其中的参数列表 选择相应的构造方法 垃圾回收过程分析 c 中的析构方法java中的finalize 方法System gc的作用 函数的参数传递 基本数据类型的参数传递 函数的参数传递 引用数据类型的参数传递 函数的参数传递 引用参数传递的一个问题分析 static静态变量 当我们编写一个类时 其实就是在描述其对象的属性和行为 而并没有产生实质上的对象 只有通过new关键字才会产生出对象 这时系统才会分配内存空间给对象 其方法才可以供外部调用 我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下 某些特定的数据在内存空间里只有一份 例如所有的中国人都有个国家名称 每一个中国人都共享这个国家名称 不必在每一个中国人的实例对象中都单独分配一个用于代表国家名称的变量 编写使用静态变量统计一个类产生的实例对象的个数的程序 static静态方法 在静态方法里只能直接调用同类中其它的静态成员 包括变量和方法 而不能直接访问类中的非静态成员 这是因为 对于非静态的方法和变量 需要先创建类的实例对象后才可使用 而静态方法在使用前不用创建任何对象 静态方法不能以任何方式引用this和super关键字 super关键字在下一章讲解 与上面的道理一样 因为静态方法在使用前不用创建任何实例对象 当静态方法被调用时 this所引用的对象根本就没有产生 main 方法是静态的 因此JVM在执行main方法时不创建main方法所在的类的实例对象 因而在main 方法中 我们不能直接访问该类中的非静态成员 必须创建该类的一个实例对象后 才能通过这个对象去访问类中的非静态成员 这种情况 我们在以后的例子中会多次碰到 静态代码块 一个类中可以使用不包含在任何方法体中的静态代码块 staticblock 当类被载入时 静态代码块被执行 且只被执行一次 静态块经常用来进行类属性的初始化 类中的静态代码块被自动执行 尽管我们产生了类的多个实例对象 但其中的静态代码块只被执行了一次 当一个程序中用到了其他的类 类是在第一次被使用的时候才被装载 而不是在程序启动时就装载程序中所有可能要用到的类 单态设计模式 设计模式是在大量的实践中总结和理论化之后优选的代码结构 编程风格 以及解决问题的思考方式 设计模式就想是经典的棋谱 不同的棋局 我们用不同的棋谱 免得我们自己再去思考和摸索 失败为成功之母 但是要以大量的时间和精力为代价 如果有成功经验可借鉴 没有人再愿意去甘冒失败的风险 我们没有理由不去了解和掌握设计模式 这也是Java开发者提高自身素质的一个很好选择 使用设计模式也许会制约你去创新 不过真正有意义的创新只能出自少数天才 即使你就是那个天才 虽不必因循守旧 但也不可能完全不去了解和借鉴前人的成功经验 单态设计模式 所谓类的单态设计模式 就是采取一定的方法保证在整个的软件系统中 对某个类只能存在一个对象实例 并且该类只提供一个取得其对象实例的方法 如果我们要让类在一个虚拟机中只能产生一个对象 我们首先必须将类的构造方法的访问权限设置为private 这样 就不能用new操作符在类的外部产生类的对象了 但在类内部仍可以产生该类的对象 因为在类的外部开始还无法得到类的对象 只能调用该类的某个静态方法以返回类内部创建的对象 静态方法只能访问类中的静态成员变量 所以 指向类内部产生的该类对象的变量也必须定义成静态的 理解main方法的语法 由于java虚拟机需要调用类的main 方法 所以该方法的访问权限必须是public 又因为java虚拟机在执行main 方法时不必创建对象 所以该方法必须是static的 该方法接收一个String类型的数组参数 该数组中保存执行java命令时传递给所运行的类的参数 内部类 在类中直接定义的内部类 嵌套类可以直接访问嵌套它的类的成员 包括private成员 但是嵌套类的成员却不能被嵌套它的类直接访问 在内部类对象保存了一个对外部类对象的引用 当内部类的成员方法中访问某一变量时 如果在该方法和内部类中都没有定义过这个变量 内部类中对this的引用会被传递给那个外部类对象的引用 内部类 在类中直接定义的内部类 如果用static修饰一个内部类 这个类就相当于是一个外部定义的类 所以static的内部类中可声明static成员 但是 非static的内部类中的成员是不能声明为static的 static的内部类不能再使用外层封装类的非static的成员变量 这个道理不难想象 所以static嵌套类很少使用 内部类 在类中直接定义的内部类 如果函数的局部变量 函数的形参也是局部变量 内部类的成员变量 外部类的成员变量重名 我们应该按下面的程序代码所使用的方式来明确指定我们真正要访问的变量 publicclassOuter privateintsize publicclassInner privateintsize publicvoiddoStuff intsize size 引用的是doStuff函数的形参this size 引用的是Inner类中的成员变量Outer this size 引用的Outer类中的成员变量 内部类如何被外部引用 classOuter privateintsize 10 publicclassInner publicvoiddoStuff System out println size publicclassTestInner publicstaticvoidmain String args Outerouter newOuter Outer Innerinner outer newInner inner doStuff 内部类 在方法中定义的内部类 嵌套类并非只能在类里定义 也可以在几个程序块的范围之内定义内部类 例如 在方法中 或甚至在for循环体内部 都可以定义嵌套类 在方法中定义的内部类只能访问方法中的final类型的局部变量 用final定义的局部变量相当于是一个常量 它的生命周期超出方法运行的生命周期 使用Java的文档注释 importjava io Title engineer类 Description 通过engineer类来说明java中的文档注释 Copyright c Company 锐智科技咨询中心 author张孝祥 version1 00 publicclassengineer publicStringEngineer name 这是engineer对象的构造函数 paramnameengineer的名字 publicengineer Stringname 这是repairing方法的说明 paramsum需要修理的机器总数 paramalltime需要修理的总时间 returnRepairing的数量 publicintrepairing intsum intalltime 使用Java的文档注释 文档注释以 开始 以 标志结束 相应的信息和批注所对应的位置很重要 类的说明应在类定义之前 方法的说明应在方法的定义之前 批注参数来标记一些特殊的属性及其相应的说明 author version param return 第四讲 面向对象 下 类的继承 通过继承可以简化类的定义 Java只支持单继承 不允许多重继承 可以有多层继承 即一个类可以继承某一个类的子类 如类B继承了类A 类C又可以继承类B 那么类C也间接继承了类A 子类继承父类所有的成员变量和成员方法 但不继承父类的构造方法 在子类的构造方法中可使用语句super 参数列表 调用父类的构造方法 如果子类的构造方法中没有显式地调用父类构造方法 也没有使用this关键字调用重载的其它构造方法 则在产生子类的实例对象时 系统默认调用父类无参数的构造方法 子类对象的实例化过程 分配成员变量的存储空间并进行默认的初始化 就是用new关键字产生对象后 对类中的成员变量按第三章的表3 1中的对应关系对对象中的成员变量进行初始化赋值 绑定构造方法参数 就是newPerson 实际参数列表 中所传递进的参数赋值给构造方法中的形式参数变量 如有this 调用 则调用相应的重载构造方法 被调用的重载构造方法又从步骤2开始执行这些流程 被调用的重载构造方法的执行流程结束后 回到当前构造方法 当前构造方法直接跳转到步骤6执行显式或隐式追溯调用父类的构造方法 一直到Object类为止 Object是所有Java类的最顶层父类 在本章后面部分有详细讲解 父类的构造方法又从步骤2开始对父类执行这些流程 父类的构造方法的执行流程结束后 回到当前构造方法 当前构造方法继续往下执行 进行实例变量的显式初始化操作 也就是执行在定义成员变量时就对其进行赋值的语句 如 执行当前构造方法的方法体中的程序代码 子类对象的实例化过程 思考 1 为什么super 和this 调用语句不能同时在一个构造函数中出现 2 为什么super 或this 调用语句只能作为构造函数中的第一句出现 覆盖父类的方法 覆盖方法必须和被覆盖方法具有相同的方法名称 参数列表和返回值类型 如果在子类中想调用父类中的那个被覆盖的方法 我们可以用super 方法的格式 覆盖方法时 不能使用比父类中被覆盖的方法更严格的访问权限 final关键字 在Java中声明类 属性和方法时 可使用关键字final来修饰 final标记的类不能被继承 final标记的方法不能被子类重写 final标记的变量 成员变量或局部变量 即成为常量 只能赋值一次 方法中定义的内置类只能访问该方法内的final类型的局部变量 用final定义的局部变量相当于是一个常量 它的生命周期超出方法运行的生命周期 将一个形参定义成final也是可以的 这就限定了我们在方法中修改形式参数的值 publicstaticfinal共同标记常量时 这个常量就成了全局的常量 抽象类 java中可以定义一些不含方法体的方法 它的方法体的实现交给该类的子类根据自己的情况去实现 这样的方法就是抽象方法 包含抽象方法的类就叫抽象类 抽象类必须用abstract关键字来修饰 抽象方法也必须用abstract来修饰 抽象类不能被实例化 也就是不能用new关键字去产生对象 抽象方法只需声明 而不需实现 含有抽象方法的类必须被声明为抽象类 抽象类的子类必须覆盖所有的抽象方法后才能被实例化 否则这个子类还是个抽象类 接口 interface 如果一个抽象类中的所有方法都是抽象的 我们就可以将这个类用另外一种方式来定义 也就是接口定义 接口是抽象方法和常量值的定义的集合 从本质上讲 接口是一种特殊的抽象类 这种抽象类中只包含常量和方法的定义 而没有变量和方法的实现 接口中的成员都是public访问类型的 接口里的变量默认是用publicstaticfinal标识的 我们可以定义一个新的接口用extends关键字去继承一个已有的接口我们也可以定义一个类用implements关键字去实现一个接口中的所有方法 我们还可以去定义一个抽象类用implements关键字去实现一个接口中定义的部分方法 一个类可以继承一个父类的同时 实现一个或多个接口 extends关键字必须位于implemnets关键字之前 对象的类型转换 子类对象可以自动转换成父类父类转换成子类必须使用强制转换 instanceof操作符可以用它来判断一个实例对象是否属于一个类 Object类及equals方法 面向对象的多态性 1 应用程序不必为每一个派生类 子类 编写功能调用 只需要对抽象基类进行处理即可 这一招叫 以不变应万变 可以大大提高程序的可复用性 2 派生类的功能可以被基类的引用变量引用 这叫向后兼容 可以提高程序的可扩充性和可维护性 以前写的程序可以被后来程序调用不足为奇 现在写的程序 如callA方法 能调用以后写的程序 以后编写的一个类A的子类 如类D 就了不起了 匿名内部类 abstractclassA abstractpublicvoidfun1 classOuter publicstaticvoidmain String args newOuter callInner newA publicvoidfun1 System out println implementforfun1 publicvoidcallInner Aa a fun1 异常 异常定义了程序中遇到的非致命的错误 而不是编译时的语法错误 如程序要打开一个不存的文件 网络连接中断 操作数越界 装载一个不存在的类等 try catch语句throws关键字自定义异常与Throw关键字如何对多个异常作出处理我们可以在一个方法中使用throw try catch语句来实现程序的跳转一个方法被覆盖时 覆盖它的方法必须扔出相同的异常或异常的子类 如果父类扔出多个异常 那么重写 覆盖 方法必须扔出那些异常的一个子集 也就是说不能扔出新的异常 包 package语句及应用package语句作为Java源文件的第一条语句 如果没有package语句 则为缺省无名包 import语句及应用jdk中常用的包java lang 包含一些Java语言的核心类 如String Math Integer System和Thread 提供常用功能 java awt 包含了构成抽象窗口工具集 abstractwindowtoolkits 的多个类 这些类被用来构建和管理应用程序的图形用户界面 GUI java applet 包含applet运行所需的一些类 包含执行与网络相关的操作的类 java io 包含能提供多种输入 输出功能的类 java util 包含一些实用工具类 如定义系统特性 使用与日期日历相关的函数 访问控制 类本身也有访问控制 即在定义类的class关键字前加上访问控制符 但类本身只有两种访问控制 即public和默认 父类不能是private和protected 否则子类无法继承 public修饰的类能被所有的类访问 默认修饰 即class关键字前没有访问控制符 的类 只能被同一包中的所有类访问 java的命名习惯 下面是java中的一些命名习惯 假设xxx yyy zzz分别是一个英文单词的拼写 包名中的字母一律小写 如 xxxyyyzzz 类名 接口名应当使用名词 每个单词的首字母大写 如 XxxYyyZzz 方法名 第一个单词小写 后面每个单词的首字母大写 如 xxxYyyZzz 变量名 第一个单词小写 后面每个单词的首字母大写 如 xxxYyyZzz 常量名中的每个字母一律大写 如 XXXYYYZZZ
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!