收藏 分享(赏)

第06讲 常用工具类.ppt

上传人:Facebook 文档编号:2348556 上传时间:2018-09-11 格式:PPT 页数:58 大小:1MB
下载 相关 举报
第06讲 常用工具类.ppt_第1页
第1页 / 共58页
第06讲 常用工具类.ppt_第2页
第2页 / 共58页
第06讲 常用工具类.ppt_第3页
第3页 / 共58页
第06讲 常用工具类.ppt_第4页
第4页 / 共58页
第06讲 常用工具类.ppt_第5页
第5页 / 共58页
点击查看更多>>
资源描述

1、,第六讲 常用工具类,面向对象的程序设计,第 2 页,第六讲 常用工具类,字符串类引用类型的内存模型对象的克隆数据类型类其他类,本 讲 要 点,面向对象的程序设计,一、String与StringBuffer类,面向对象的程序设计,第 4 页,简介,Java中的字串类 class java.lang.String class java.lang.StringBuffer class java.lang.Character(自学) class java.util.StringTokenizer(自学),面向对象的程序设计,第 5 页,简介,String数据类型:Java中它是一个真正的对象,与C不

2、一样。一个String数据类型一旦经过初始化,就不能再被改变。 StringBuffer类型可以更改字串内容。 String设计为主要用于读取与显示的目的;StringBuffer是对String的补充, 设计为主要用于字符串的构造与修改的目的。 用好String和StringBuffer类的关键在于了解它的几个方法的含义。,面向对象的程序设计,第 6 页,equals与=,面向对象的程序设计,注意equals与=的区别: 1)=:比较两个变量的值是否相等 2)equals:比较两个对象变量所代表的对象的内容是否相等,第 7 页,对象的内存分配图,栈内存,堆内存,str1,str2,a,b,c

3、,a,b,c,0088:4400,0088:4400,0088:4660,0088:4660,str1标识的对象,str2标识的对象,当我们声明一个引用类型变量时,系统只为该变量分配了引用空间,并未创建一个具体的对象;当用new为对象分配空间后,将对象的引用赋值给引用变量。,面向对象的程序设计,第 8 页,1、String类-构造方法,String() String(String value) String(char charArray) String(char charArray,int startIndex,int numChars) String(byte byteArray) Stri

4、ng(byte byteArray, int startIndex,int numChars) String(StringBuffer buffer) String(byte bytes, int offset, int length, String charsetName) String(byte bytes, String charsetName),面向对象的程序设计,1、String类-常用方法,public int length():获取字串长度 public char charAt(int index):获取指定位置的字符 public getChars(int srcBegin,

5、int srcEnd, char dst, int dstBegin):获取从指定位置起的子串复制到字符数组中 StringMisc.java,面向对象的程序设计,第 9 页,第 10 页,public boolean equals(Object anObject) public boolean equalsIgnoreCase(String aString) public int compareTo(String aString) :使用字典法进行比较,返回0表两字串相等,小于返回负值,大于返回正值 regionMatches StringCompare.java,1、String类-字串比

6、较,面向对象的程序设计,第 11 页,1、String类-字串比较,面向对象的程序设计,第 12 页,1、String类-字典序,字典序: 设 s = s1 s2 .sm t = t1 t2 tn s t , if 存在 k : k = 1 s1=t1, sk-1 = tk-1, sk tk 如:b a, cb ca, cb cad,面向对象的程序设计,1、String类-字串比较,字串是否以某字串开头和结尾 public boolean startsWith(String prefix) public boolean startsWith(String prefix,int index) p

7、ublic boolean endsWith(String suffix) StringStartEnd.java,面向对象的程序设计,第 13 页,第 14 页,1、String类-字串查找,面向对象的程序设计,字符串中子串的查找 public int indexOf(String str) public int indexOf(String str,int fromIndex) public int lastIndexOf(String str) public int lastIndexOf(String str,int fromIndex) StringIndexMethods.java

8、,第 15 页,1、String类-字串查找,面向对象的程序设计,第 16 页,1、String类-提取子串与字串连接,面向对象的程序设计,subString方法 public String substring(int beginIndex) public String substring(int beginIndex, int endIndex ) SubString.java concat方法 public String concat(String str) StringConcat.java,第 17 页,1、String类-其他方法,public String replace(char

9、 oldChar, char newChar) public String toUpperCase() public String toLowerCase() public String trim() public String toString() public char toCharArray() StringMisc2.java 使用ValueOf(静态方法),面向对象的程序设计,第 18 页,2、StringBuffer类,包含一个具有可设置容量的字符缓冲区及当前写入的数据内容 当String对象创建后,它的内容是不可改的 StringBuffer可以修改其内容 能自动增长,面向对象的

10、程序设计,第 19 页,2、StringBuffer类-常用方法,构造函数 StringBufferConstructors.java Length,capacity,setLength,ensureCapacity方法 StringBufferCapLen.java charAt, setCharAt, getChars , reverse方法 StringBufferChars.java Append方法 StringBufferAppend.java Insert,delete方法 StringBufferInsert.java,面向对象的程序设计,第 20 页,3、Applicatio

11、n命令行参数,UseComLParameter.java public class UseComLParameterpublic static void main( String args ) int a1,a2,a3;if(args.length2)System.out.println(“运行本程序应该提供两个命令行参数“);System.exit(0);a1=Integer.parseInt(args0);a2=Integer.parseInt(args1);a3=a1*a2;System.out.println(a1+“与“+a2+“相乘的积为:“+a3); ,面向对象的程序设计,第 2

12、1 页,3、 Application命令行参数,执行程序的命令行 java UseComLParameter 52 -4,面向对象的程序设计,第 22 页,栈内存,堆内存,num,0,0,0,0088:4400,0088:4400,new int3产生的对象,4、数组的内存分配图-基本数据类型数组,面向对象的程序设计,第 23 页,栈内存,堆内存,num,0,0,0,0088:4400,0088:4400,new int3产生的对象,4、数组的内存分配图-基本数据类型数组,num=null;,面向对象的程序设计,第 24 页,栈内存,堆内存,students,null,Student stud

13、ents;,4、数组的内存分配图-对象数组,面向对象的程序设计,第 25 页,堆内存,students,0088:4400,0088:4400,new students3产生的对象,null,null,Student students; students=new Student3;,null,栈内存,4、数组的内存分配图-对象数组,面向对象的程序设计,第 26 页,堆内存,students,0088:4400,0088:4400,new students3产生的对象,null,null,Student students; students=new Student3; students0=new

14、 Student(“lisi”,18);,student0 标识的 Student对象,lisi,18,0088:4660,0088:4660,栈内存,4、数组的内存分配图-对象数组,面向对象的程序设计,第 27 页,在Java中,传参时,都是以传值的方式进行 对于基本数据类型,传递的是数据的拷贝;对于引用类型,传递的引用的拷贝。,4、数组的内存分配图-方法调用,面向对象的程序设计,第 28 页,x,main,change,栈内存,y,4(3),3(4),4,3,x,y,4、数组的内存分配图-方法调用,class StringTest public static void change(int

15、 x,int y)x=x+y;y=x-y;x=x-y; public static void main(String args)int x=3;int y=4;change(x,y); System.out.println(“x=“+x);System.out.println(“y=“+y); ,面向对象的程序设计,第 29 页,class StringTest public static void change(Point pt)pt.x=pt.x+pt.y;pt.y=pt.x-pt.y;pt.x=pt.x-pt.y;public static void main(String args)P

16、oint pt=new Point();pt.x=3;pt.y=4;change(pt);System.out.println(“x=“+pt.x);System.out.println(“y=“+pt.y); class Pointint x, y;,pt,main,change,栈内存,堆内存,Point类的对象,pt,0088:4660,0088:4660,0088:4660,4、数组的内存分配图-方法调用,面向对象的程序设计,第 30 页,5、对象的克隆(clone),为了获取对象的一份拷贝,我们可以利用Object类的clone()方法。 在派生类中覆盖基类的clone()方法,并声

17、明为public。 在派生类的clone()方法中,调用super.clone()。 在派生类中实现Cloneable接口。,面向对象的程序设计,第 31 页,为什么在派生类中覆盖Object的clone()方法时,一定要调用super.clone()呢?在运行时刻,Object中的clone()识别出你要复制的是哪一个对象,然后为此对象分配空间,并进行对象的复制,将原始对象的内容一一复制到新对象的存储空间中。,5、对象的克隆(clone),面向对象的程序设计,第 32 页,6、数组的相关操作,在Java中,所有的数组都有一个缺省的属性length,用于获取数组中元素的个数。 数组的复制:Sy

18、stem.arraycopy()。 数组的排序:Arrays.sort()。 在已排序的数组中查找某个元素:Arrays.binarySearch()。,面向对象的程序设计,二、数据类型类,面向对象的程序设计,第 34 页,数据类型类,数据类型与它所对应的基本数据类型,面向对象的程序设计,第 35 页,数据类型类,以Integer类为例 Integer类在类库中的位置 class java.lang.Integer java.lang.Object|-java.lang.Number|-java.lang.Integer,面向对象的程序设计,第 36 页,数据类型类,MIN_VALUE pub

19、lic static final int MIN_VALUE 最小整数值 MAX_VALUE public static final int MAX_VALUE 最大整数值,属性,面向对象的程序设计,第 37 页,数据类型类,构造方法 public Integer(int value) public Integer(String s) 数据类型转换方法 public byte byteValue() public short shortValue() public int intValue() public long longValue() public float floatValue()

20、public double doubleValue(),面向对象的程序设计,第 38 页,数据类型类,字符串与int量相互转化的方法 public String toString():将整数转换成字符串 public static int parseInt(String s):将字符串转换成整数 public static Integer valueOf(String s):将字符串转化成一个Integer对象,面向对象的程序设计,三、其他类,面向对象的程序设计,第 40 页,1、Object类,所有Java类的根类 包含了所有Java类的公共属性 protected Object clone

21、():生成当前对象的一个拷贝,并返回这个复制对象 public boolean equals(Object obj):比较两个对象是否相同,是则返回true public final Class getClass():获取当前对象所属的类信息,返回Class对象 protected void finalize():定义回收当前对象时所需完成的清理工作 public String toString():返回当前对象本身的有关信息,按字符串对象返回,面向对象的程序设计,第 41 页,2、Math类,提供若干实现不同标准数学函数的方法 属性 public final static double E:

22、数学常量e public final static double PI:圆周率常量 方法 public static double abs (double a):绝对值 public static double acos (double a):反余弦 public static double exp (double a):e的参数次幂 public static double floor (double a):不大于参数的最大整数 public static double IEEEremainder (double f1,double f2):求余,面向对象的程序设计,第 42 页,2、Mat

23、h类,方法 public static double log (double a):自然对数 public static double max (double a,double b):最大值 public static float min (float a,float b):最小值 public static double pow (double a,double b):乘方 public static double random ():产生0和1(不含1)之间的伪随机数 public static double rint (double a):四舍五入 public static doubl

24、e sqrt (double a):平方根,面向对象的程序设计,第 43 页,3、System类,System是一个功能强大非常有用的特殊类,它提供了标准输入输出、运行时的系统信息等重要工具 用System类获取标准输入输出 public static PrintStream err;标准错误输出 public static InputStream in;标准输入 public static PrintStream out;标准输出,面向对象的程序设计,第 44 页,3、System类,用System类的方法获取系统信息,完成系统操作 public static long currentTim

25、eMillis():获取自1970年1月1日零时至当前系统时刻的微秒数 public static void exit (int status):强制Java虚拟机退出运行状态 public static void gc ():强制调用Java虚拟机的垃圾回收功能,收集内存中已丢失的垃圾对象所占用的空间,面向对象的程序设计,第 45 页,4、 Class类,在Java中,每个class都有一个相应的Class对象。即当我们编写一个类,编译完成后,在生成的.class文件中,就会产生一个Class对象,用于表示这个类的类型信息。 获取Class实例的三种方式: 利用对象调用getClass()方

26、法获取该对象的Class实例 使用Class类的静态方法forName(),用类的名字获取一个Class实例; 运用.class的方式来获取Class实例,对于基本数据类型的封装类,还可以采用.TYPE来获取相对应的基本数据类型的Class实例。,面向对象的程序设计,第 46 页,4、 Class类,在运行期间,如果我们要产生某个类的对象,Java虚拟机(JVM)会检查该类型的Class对象是否已被加载。如果没有被加载,JVM会根据类的名称找到.class文件并加载它。一旦某个类型的Class对象已被加载到内存,就可以用它来产生该类型的所有对象。,面向对象的程序设计,第 47 页,5、Arra

27、yList类,ArrayList:我们可以将其看作是能够自动增长容量的数组。 利用ArrayList的toArray()返回一个数组。 Arrays.asList()返回一个列表。 迭代器(Iterator) 给我们提供了一种通用的方式来访问集合中的元素。,面向对象的程序设计,第 48 页,6、内部类-定义,在一个类中定义另外一个类,这个类就叫做内部类或内置类 (inner class) 。 内部类可以让我们将逻辑上相关的一组类组织起来,并由外部类(outer class)来控制内部类的可见性。 当我们建立一个inner class时,其对象就拥有了与外部类对象之间的一种关系,这是通过一个特殊

28、的this reference形成的,使得内部类对象可以随意的访问外部类中所有的成员。,面向对象的程序设计,第 49 页,6、内部类-定义,class Outer private int index=100;void print()Inner i=new Inner();i.print();class Innervoid print()System.out.println(index); class Testpublic static void main(String args)Outer o=new Outer();o.print(); ,o,this,i,main,o.print,i.pr

29、int,this,栈内存,堆内存,Outer类对象,Inner类对象,Outer.this,面向对象的程序设计,第 50 页,6、内部类-成员类,声明为类的成员。 class Top class MyNested . ,面向对象的程序设计,第 51 页,6、内部类-成员类,不带有static关键字 可以引用父类中的任何成员 在能够调用内部类的方法,以及为其数据字段赋值之前,父类必须首先声明内部类的实例 内部类只在外部类的作用域内是可知的,如果外部类外的任何代码尝试初始化内部类或使用它,编译就不会通过 内部类的变量成员只在内部内内部可见,若外部类或同层次的内部类需要访问,需采用示例程序 中的方法

30、,不可直接访问内部类的变量,面向对象的程序设计,第 52 页,6、内部类-本地类,在一个方法中声明 void foo() class Mylocal . ,面向对象的程序设计,第 53 页,6、内部类-本地类,它只在方法内部可见,在外部类(及外部类的其它方法中)中都不可见 在方法中定义的内部类,如果要访问方法中定义的本地变量或方法的参数,则变量必须被声明final,面向对象的程序设计,第 54 页,6、内部类-嵌套静态类,内部类可以声明为private或protected;还可以声明为abstract或final。 内部类可以声明为static的,但此时就不能再使用外部类的非static的成员

31、变量和非static的成员方法; 非static的内部类中的成员不能声明为static的,只有在顶层类或static的内部类中才可声明static成员。,面向对象的程序设计,第 55 页,6、内部类-嵌套静态类,一个声明为static的内部类(成员类) class Top static class MyNested . ,面向对象的程序设计,第 56 页,6、内部类-匿名内部类,没有类的名字,通常用在Java的事件处理上。 void foo() JFrame jf=new JFrame();jf.addKeyListener(new KeyAdapter public void keyPressed(keyEvent k).); ,面向对象的程序设计,第 57 页,6、内部类-为什么使用内部类,在内部类(inner class)中,可以随意的访问外部类的成员,这可以让我们更好地组织管理我们的代码,增强代码的可读性。 内部类可以用于创建适配器类,适配器类是用于实现接口的类。使用内部类来实现接口,可以更好地定位与接口关联的方法在代码中的位置。 内部类的更多用法。,面向对象的程序设计,第 58 页,6、内部类-内部类编译以后,每个inner class都会产生一个.class文件 内部类编译之后的文件名规范: 外部类名$内部类名.class,面向对象的程序设计,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报