版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、,第六讲 常用工具类,面向对象的程序设计,第 2 页,第六讲 常用工具类,字符串类 引用类型的内存模型 对象的克隆 数据类型类 其他类,本 讲 要 点,面向对象的程序设计,面向对象的程序设计,第 4 页,简介,Java中的字串类 class java.lang.String class java.lang.StringBuffer class java.lang.Character(自学) class java.util.StringTokenizer(自学),面向对象的程序设计,第 5 页,简介,String数据类型:Java中它是一个真正的对象,与C不一样。一个String数据类型一旦经过
2、初始化,就不能再被改变。 StringBuffer类型可以更改字串内容。 String设计为主要用于读取与显示的目的;StringBuffer是对String的补充, 设计为主要用于字符串的构造与修改的目的。 用好String和StringBuffer类的关键在于了解它的几个方法的含义。,面向对象的程序设计,第 6 页,equals与=,注意equals与=的区别: =:比较两个变量的值是否相等 equals:比较两个对象变量所代表的对象的内容是否相等,面向对象的程序设计,第 7 页,对象的内存分配图,栈内存,堆内存,str1,str2,a,b,c,a,b,c,0088:4400,0088:4
3、400,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) String(byte byteArray, int
4、startIndex,int numChars) String(StringBuffer buffer) String(byte bytes, int offset, int length, String charsetName) String(byte bytes, String charsetName),面向对象的程序设计,第 9 页,public int length():获取字串长度 public char charAt(int index):获取指定位置的字符 public getChars(int srcBegin, int srcEnd, char dst, int dstBeg
5、in):获取从指定位置起的子串复制到字符数组中 StringMisc.java,1、String类-常用方法,面向对象的程序设计,第 10 页,public boolean equals(Object anObject) public boolean equalsIgnoreCase(String aString) public int compareTo(String aString) :使用字典法进行比较,返回0表两字串相等,小于返回负值,大于返回正值 regionMatches StringCompare.java,1、String类-字串比较,面向对象的程序设计,第 11 页,1、St
6、ring类-字串比较,面向对象的程序设计,第 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,面向对象的程序设计,第 13 页,1、String类-字串比较,字串是否以某字串开头和结尾 public boolean startsWith(String prefix) public boolean startsWith(String prefix,int index) public boolean en
7、dsWith(String suffix) StringStartEnd.java,面向对象的程序设计,第 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,面向对象的程序设计,第 15 页,1、String类-字串查找,
8、面向对象的程序设计,第 16 页,1、String类-提取子串与字串连接,subString方法 public String substring(int beginIndex) public String substring(int beginIndex, intendIndex ) SubString.java concat方法 public String concat(String str) StringConcat.java,面向对象的程序设计,第 17 页,1、String类-其他方法,public String replace(char oldChar, char newChar)
9、public String toUpperCase() public String toLowerCase() public String trim() public String toString() public char toCharArray() StringMisc2.java 使用ValueOf(静态方法),面向对象的程序设计,第 18 页,2、StringBuffer类,包含一个具有可设置容量的字符缓冲区及当前写入的数据内容 当String对象创建后,它的内容是不可改的 StringBuffer可以修改其内容 能自动增长,面向对象的程序设计,第 19 页,2、StringBuff
10、er类-常用方法,构造函数 StringBufferConstructors.java Length,capacity,setLength,ensureCapacity方法 StringBufferCapLen.java charAt, setCharAt, getChars , reverse方法 StringBufferChars.java Append方法 StringBufferAppend.java Insert,delete方法 StringBufferInsert.java,面向对象的程序设计,第 20 页,3、Application命令行参数,UseComLParameter.
11、java public class UseComLParameter public 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); ,面向对象的程序设计,第 21 页,3、 Application命令行参
12、数,执行程序的命令行 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 students;,4、数组的内存分配图-对象数组,
13、面向对象的程序设计,第 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 Student(“lisi”,18);,s
14、tudent0 标识的 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 x,int y) x=x+y; y=x-y
15、; 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) Point pt=new Po
16、int(); 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()方法,并声明为public。 在派生
17、类的clone()方法中,调用super.clone()。 在派生类中实现Cloneable接口。,面向对象的程序设计,第 31 页,为什么在派生类中覆盖Object的clone()方法时,一定要调用super.clone()呢?在运行时刻,Object中的clone()识别出你要复制的是哪一个对象,然后为此对象分配空间,并进行对象的复制,将原始对象的内容一一复制到新对象的存储空间中。,5、对象的克隆(clone),面向对象的程序设计,第 32 页,6、数组的相关操作,在Java中,所有的数组都有一个缺省的属性length,用于获取数组中元素的个数。 数组的复制:System.arraycop
18、y()。 数组的排序:Arrays.sort()。 在已排序的数组中查找某个元素:Arrays.binarySearch()。,面向对象的程序设计,二、数据类型类,面向对象的程序设计,第 34 页,数据类型类,数据类型与它所对应的基本数据类型,面向对象的程序设计,第 35 页,数据类型类,以Integer类为例 Integer类在类库中的位置 class java.lang.Integer java.lang.Object |-java.lang.Number |-java.lang.Integer,面向对象的程序设计,第 36 页,数据类型类,MIN_VALUE public static
19、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() public doub
20、le 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:数学常量e publi
22、c 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、Math类,方法 publi
23、c 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 double sqrt (dou
24、ble 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 currentTimeMillis():获
25、取自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()方法获取该对象的Clas
26、s实例 使用Class类的静态方法forName(),用类的名字获取一个Class实例; 运用.class的方式来获取Class实例,对于基本数据类型的封装类,还可以采用.TYPE来获取相对应的基本数据类型的Class实例。,面向对象的程序设计,第 46 页,4、 Class类,在运行期间,如果我们要产生某个类的对象,Java虚拟机(JVM)会检查该类型的Class对象是否已被加载。如果没有被加载,JVM会根据类的名称找到.class文件并加载它。一旦某个类型的Class对象已被加载到内存,就可以用它来产生该类型的所有对象。,面向对象的程序设计,第 47 页,5、ArrayList类,Arra
27、yList:我们可以将其看作是能够自动增长容量的数组。 利用ArrayList的toArray()返回一个数组。 Arrays.asList()返回一个列表。 迭代器(Iterator) 给我们提供了一种通用的方式来访问集合中的元素。,面向对象的程序设计,第 48 页,6、内部类-定义,在一个类中定义另外一个类,这个类就叫做内部类或内置类 (inner class) 。 内部类可以让我们将逻辑上相关的一组类组织起来,并由外部类(outer class)来控制内部类的可见性。 当我们建立一个inner class时,其对象就拥有了与外部类对象之间的一种关系,这是通过一个特殊的this refer
28、ence形成的,使得内部类对象可以随意的访问外部类中所有的成员。,面向对象的程序设计,第 49 页,6、内部类-定义,class Outer private int index=100; void print() Inner i=new Inner(); i.print(); class Inner void print() System.out.println(index); class Test public static void main(String args) Outer o=new Outer(); o.print(); ,o,this,i,main,o.print,i.print,this,栈内存,堆内存,Outer类对象,Inner类对象,Outer.this,面向对象的程序设计,第 50 页,6、内部类-成员类,声明为类的成员。 class Top class MyNested . ,面向对象的程序设计,第 51 页,6、内部类-成员类,不带有static关键字 可以引用父类中的任何成员 在能够调用内部类的方法,以及为其数据字段赋值之前,父类必须首先声明内部类的实例 内部类只在外部类的作用域内是可知的,如果外部类外的任何代码
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 早孕人流健康护理
- 人工智能的起源与奠基人
- 遮蔽剂调制与涂布工操作安全考核试卷含答案
- 粗纱工安全知识竞赛强化考核试卷含答案
- 树桩盆景工岗前设备考核试卷含答案
- 甲乙酮装置操作工5S执行考核试卷含答案
- 半导体分立器件和集成电路微系统组装工班组评比水平考核试卷含答案
- 汽油煤油柴油加氢装置操作工岗前潜力考核试卷含答案
- 再生物资加工处理工岗中技能强化考核试卷含答案
- 无人机测绘操控员跨界整合水平考核试卷含答案
- 成都市金牛区卫生健康局所属事业单位2026年招募医务社会工作服务岗位(5人)笔试备考题库及答案详解
- 2026济南产发集成电路有限公司招聘18人笔试参考题库及答案详解
- 安徽省芜湖市2025-2026学年高一下学期期末考试语文试卷
- 2026河南郑州临港产教融合科技有限公司第一批招聘34人考试参考题库及答案详解
- 无粘结预应力钢绞线施工方案及工艺方法
- 音箱调音师资格证考试题库及答案
- 【世界经济论坛】塑造学习的未来:人工智能时代的教育准备
- 精益生产与八大浪费
- YC/T 520-2014烟草商业企业卷烟物流配送中转站管理规范
- GB/T 6185.2-20162型全金属六角锁紧螺母细牙
- GB/T 5462-2015工业盐
评论
0/150
提交评论