5-类的管理以及常用工具类

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

要知其然,更要知其所以然。
15/28
5.2 包装器类和自动装箱/拆箱
自动装箱和拆箱 自动装箱:基本型自动转换为对应包装器型 自动装箱:包装器型自动转换为对应基本型
― 如:Double a=1.2; double b= a ;
自动装箱、拆箱可能隐含错误 例如:Integer i = null; int j = i; //运行时错 等同于:Integer i=null; int j= i.intValue();
Arrays是数组的工具类,存于java.util包中 Arrays提供了用于处理数组的常用静态方法,
包示括例排序详s见orCt、h_b5i_n6a.rjyaSveaa、rcCh(h_前5_提7.是ja数wenku.baidu.coma组必
须要有序)、比较数组元素是否相等equals、 填充数组元素fill等。
要知其然,更要知其所以然。

protected √
缺省

private

同一包
√ √ √
不同包的子类
√ √
所有类

要知其然,更要知其所以然。
11/28
5.1.3 访问权限
试分析下面各类之间相互访问的可能
package X;
package Y;
public class A{
import X.A;
public int x1;
― 全名:java.util.Scanner ― 相对名:Scanner,需要导入包
导入包,就是设定类的搜索路径。 格式:import 包名1[.包名2...]].类名|接口名|*
import aa.EnumDemo; import java.util.*; import java.util.Scanner;
2/28
第5章 类的管理及常用工具类
5.1 包 5.2 包装器类 和
自动装箱/拆箱 5.3 枚举 5.4 数组的高级应用 5.5 字符串的高级应用 补:随机数类
本章重点
1. 全面完整理解并掌握类 及成员的存取权限;
2. 掌握包装器类引入原因 和基本使用方式;理解 和掌握自动拆箱/自动 装箱机制;
Week w; 自w动=具W备eepku.bFlRicI、DAsYta;tic、final等属性。
― 编译器为枚举型附加两静态方法(类Enum中无此方法):
w=SUNDAY; //编译错
示例详见:ch_5_5.java
要知其然,更要知其所以然。
17/28
5.4 数组的高级应用
紧凑型for循环结构 拷贝数组 Arrays工具类
20/28
5.5 字符串的高级应用
StringBuffer和StringBuilder 正则表达式 字符串的高级应用
要知其然,更要知其所以然。
21/28
5.5 字符串的高级应用
引入 期望引入大容量、可更改的字符串存储对象。
StringBuffer类
该类对象可看作是一个用于存储字符串的数据
public class C{}
protected int x2;
class D extends A { }
int x3;
private int x4;
}
class B{}
要知其然,更要知其所以然。
12/28
5.2 包装器类和自动装箱/拆箱
包装器类的引入背景 包装器类的构造函数 包装器类的常用方法 自动装箱和自动拆箱
所所有枚有举的常枚量举,型各都常量隐位式置地按继声承明自顺序Ja存va储.lang.Enum
en2u、mpuW―belie该cks类{taM是tiO一cNE个Dv泛AaYl型u, Te类UO,Ef(SS任Dtr何AiYn类,gW都nEa不Dm能NeE直)S接DA扩Y展, T该HU类R。SDAY, 返回― 枚枚举举常常FR量量IDn按Aa定Ym,义eS;A顺T若序UR该分D常别AY对量, S应未U索N定D引义A值Y则;0}运、1行、时2、抛…出等异,常并。
要知其然,更要知其所以然。
13/28
5.2 包装器类和自动装箱/拆箱
背景:提供与基本类型相关的常用功能操作 基本类型使用频繁,需用汇编/C等单独实现; 基本绑定的操作方法太少,功能不强。
包装器类:为这基6本种型均配属备Nu的m对b应er类。的子类 Byte、Short、Integer、Long、Float、Double、 Character、Boolean
影响:时无,名导包入中类的而类不无法是被导导入入包。。换言之,无
名包中的类无法被其它包中的类使用。
A.java
public class A{}
B.java
package X; public class B{}
要知其然,更要知其所以然。
9/28
5.1.3 访问权限
类的访问权限 缺省:该类只能被同一包中的类访问 public:该类可被包外的类访问
要知其然,更要知其所以然。
18/28
5.4 数组的高级应用
for-each循环结构(JDK1.5新增) 格式:for( Tyep e: exp) S ; 其Itveo中ridaebfx(l)pe{ 是 接数 口据 的集对象对)象。(e必是须循是环数变组量或(实相现当了于exp 中的元i素nt)[]a。={执1,2行,3方,4,5式};为:
― [a-zA-Z_]+(\\w)* :表示C的标识符,标识含义见后。
应用:如何识别下面字符串中的十六进制数: "08 + AF- 0x98AF- Bc * 0XA93bf "
要知其然,更要知其所以然。
23/28
java正则表达式的常用描述符号
j元a字va符正描述则:表表达达特式定的含义常用描述符号量词描述:表达重复次数
要知其然,更要知其所以然。
19/28
5.4 数组的高级应用
arraycopy:位于System类,用于数组复制 void arraycopy(Object src, int p1,
Object dest, int p2, int len)
― 将src[p1...p1+len-1]复制到dest[p2...p2+len-1]中
3. 理解紧凑型for循环和 正则表达式。
要知其然,更要知其所以然。
3/28
5.1 包
包 包的声明和导入 访问权限
要知其然,更要知其所以然。
4/28
5.1 包
包是类/接口的管理机制 包是存放类/集合的目录或压缩包。包与类的关 系,类似于目录/压缩包与文件;
― Java类库大多以压缩包形式存储,如*.jar ― 实际上,lib目录下的ct.sym也是压缩包
包名格式示例:UserData.NanChang.Bank
Java是面向网络的语言,需要借助包来区分放 置于不同主机上的类、类库或对象。如Java RMI (Remote Method Invocation)机制.
要知其然,更要知其所以然。
5/28
5.1 包
声明包 声明包,就是告知编译器,要将该文件编译后 产生的所有.class文件,均放入指定的包中。
块,可反复示修例改详,见重C复h使_5用_8。.java
StringBuilder类
JDK1.5版新增,功能与StringBuffer几乎一样, 执行更高效,但在线程中使用不安全。
要知其然,更要知其所以然。
22/28
5.5 字符串的高级应用
正则表达式 是一种能够刻画某种词法规则的字符串。
― 0[Xx]([0-9a-fA-F])+ 表示十六进制数,含义为:以0作 开头,后接X或x,再后面就是若干个(至少1个)数字、 字母(a-f或A-F)。
对对同同类一处中类一成而包员言的的,类访成A问若、员权类B相,限A互、A间不B可分能处访不问同B 包,A只能访问B 的任p意r成iv访a员t问e的成,访员无问,权权的其限限p余之u:均b分l四可i。c种成访员问,。其。余均不能访问。。
注意:纵向看,只有两种:能访问、不能访问
修饰符 同一类
public
― 1i.)n从t ie=x0p;中取出下一个元素赋值给e,执行语句S; ― 2f.)o若r(eix:pa所) 有Sy元st素em均.o已u迭t.p代ri,nt则("循"+环i)结; 束;//否编则译,错转1)。
for(int j: a) System.out.print(" "+j); //正确
} 注意:e不能在for-each结构之外定义。
要知其然,更要知其所以然。
7/28
5.1 包
注意事项 无法导入其它包中的非public类;
要正确设置classPath环境变量,让编译器能找 到系统包。Java编译器会自动导入包java.lang。 如System、String、Math等均在此包。
导入包不包含被导入包的子包;
― 如 import java.*; 不能导入 java.util.Scanner类
double―转包b装yt器e:类名by(t基e 本b=类(n型e值w )Doub或le(3.14)).byteValue();
― 包装器类名(基本类型值的字符串)
I常nt用eg方er 法i1=new Integer(5);
In―te基ge本r i类2=型nexwxxIVnatleugee()r;("5"); //转成特定数值型 In―tesgteartiic3x=xnxepwarIsnetXexgxe(rS(tr"i1n.2g 5s)";);///S/tr运in行g转时基报本错型xxx D―ousbtlaetidc=Wi1v;a/lu/e编O译f(S错tring s); //String转包装器型W Boolean b=new Boolean("ture"); //正确 Boolean b=new Boolean(TRUE); //正确
包装器类主要实现了两种功能: 实现基本类型与引用类型之间的自动转换。 实现基本类型与String类型之间的相互转换。
要知其然,更要知其所以然。
14/28
5.2 包装器类和自动装箱/拆箱
字符串转Double: Double d=Double.valueOf("1.2");
字符包串装转d器ou类bl的e:使d用ouble d=Double.parseDouble("1.2"); doubl构e转造字函符数串::String s=Double.toString(3.14);
注意: jDK1.5才引入对Boolean的自动拆箱 如: Boolean b=new Boolean(ture); if (b) --此句在JDK1.5之前环境中发生编译错
要知其然,更要知其所以然。
16/28
5.3 枚举
枚举(JDK 1.5新增机制) 1、pu格bl式ic:stateicnEu[m] v枚alu举es类(),型返名回{一枚个举枚常举量型表数组} ,包含
元符正字则表含达义式示例元符字:
江西师范大学·计算机信息工程学院·计算机科学系
第1章 程序设计语言概述 第2章 程序设计语言的基本成分 第3章 程序设计方法概述
目 第4章 面向对象语言基础
第5章 类的管理及常用工具类 第6章 异常处理和断言 第7章 线程
录 第8章 GUI编程基础和applet 第9章 I/O流 第10章 网络通信 第1要1章知其泛然型,与更集要合知框其架所以然。
― 其中若包不存在,则会自动创建。
格式:package 包名1[.包名2[.包名3...]];
― 如: package aa.bb.cc;
语法限定:一个Java源文件中只能声明一个包, 且声明语句只能作为源文件的第一条指令。
要知其然,更要知其所以然。
6/28
5.1 包
导入包 背景:使用包中的类,可用全名或相对名,如
― 当然,访问前需要导入,或者使用 包名+类名格式
A.java
package p1 public class A{} class B{}
C.java
package p2 public class C{} class D{}
A、B、C、D可 以访问哪些类?
要知其然,更要知其所以然。
10/28
5.1.3 访问权限
对大型项目,导入时尽量指明具体类,而不要 用.*的方式,后者会极大影响编译速度。
要知其然,更要知其所以然。
8/28
5.1 包
无名包问题
无名包:若源文件中未用package声明,则编译 后产生的.class文件自动放置于无名包。例如:
好的编― 程A.习clas惯s位:于无为名每包个;B类.cla都ss位指于定包X一个包;导入
相关文档
最新文档