ImageVerifierCode 换一换
格式:DOCX , 页数:50 ,大小:998.04KB ,
资源ID:4442561      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4442561.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第三天 面向对象.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第三天 面向对象.docx

1、第三天 面向对象第三天 面向对象_023.1、String类(重点)3.1.1、String类两种对象实例化方式对于String在之前已经学习过了基本使用,就是表示字符串,那么当时使用的形式采用了直接赋值:public class StringDemo public static void main(String args) String str = Hello ;/定义字符串System.out.println(str) ;对于String而言肯定是一个类,那么程序之中出现的str应该就是这个类的对象,那么就证明以上的赋值操作实际上就表示要为String类的对象进行实例化操作。但String

2、毕竟是一个类,那么类之中一定会存在构造方法,String类的构造:public String(String str);public class StringDemo public static void main(String args) String str = new String(Hello) ;/定义字符串System.out.println(str) ;发现现在也可以通过构造方法为String类对象实例化。3.1.2、字符串比较如果说现在有两个int型变量,如果要想知道是否相等,使用“=”进行验证。public class StringDemo public static void

3、main(String args) int x = 10 ;int y = 10 ;System.out.println(x = y) ;但是,同样的操作,现在换成String完成。public class StringDemo public static void main(String args) String str1 = Hello ;String str2 = new String(Hello) ;String str3 = str2 ;/引用传递System.out.println(str1 = str2) ;/ falseSystem.out.println(str1 = str

4、3) ;/ falseSystem.out.println(str2 = str3) ;/ true发现使用“=”好象最终的判断结果完全是不一样的,那么下面通过内存关系图完成。现在使用了“=”的确是完成了相等的判断,但是最终判断的是两个对象(现在的对象是字符串)判断是否相等,属于数值判断判断的是两个对象的内存地址数值,并没有判断内容,而要想完成字符串内容的判断,则就必须使用到String类的操作方法:public boolean equals(String str)(将方法暂时变了)。public class StringDemo public static void main(String

5、args) String str1 = Hello ;String str2 = new String(Hello) ;String str3 = str2 ;/引用传递System.out.println(str1.equals(str2) ;/ trueSystem.out.println(str1.equals(str3) ;/ trueSystem.out.println(str2.equals(str3) ;/ true现在比较的不再是内存地址的数值,而是两个字符串的内容。面试题:请解释字符串比较之中“=”和equals()的区别?=:比较的是两个字符串内存地址的数值是否相等,属于数

6、值比较;equals():比较的是两个字符串的内容,属于内容比较。以后进行字符串相等判断的时候都使用equals()。3.1.3、字符串常量是String的匿名对象如果在程序之中定义了字符串(使用“”),那么这个就表示一个String对象,因为在各个语言之中没有关于字符串数据类型定义,而Java将其简单处理了,所以感觉上存在了字符串类型。范例:验证字符串是对象的概念public class StringDemo public static void main(String args) String str = Hello ;/通过字符串调用方法System.out.println(Hello.

7、equals(str) ;匿名对象可以调用类之中的方法与属性,以上的字符串可以调用了equals()方法,那么一定是一个对象。小技巧:关于字符串与字符串常量的判断例如:在实际工作之中会有这样一操作,要求用户输入一个内容,之后判断此内容是否与指定的内容相同。public class StringDemo public static void main(String args) String str = Hello ;/假设是输入的if (str.equals(Hello) System.out.println(条件满足。) ;但,既然数据由用户自己输入,那么就有可能没有输入的内容。public

8、class StringDemo public static void main(String args) String str =null;/假设是输入的if (str.equals(Hello) System.out.println(条件满足。) ;Exception in thread main java.lang.NullPointerExceptionat StringDemo.main(StringDemo.java:4)而如果说现在将代码反过来操作:public class StringDemo public static void main(String args) Strin

9、g str = null ;/假设是输入的if (Hello.equals(str) System.out.println(条件满足。) ;因为字符串常量就是一个匿名对象,匿名对象永远不可能为null,这样的比较才更加的合理。3.1.4、String类的两种实例化方式的区别对于String类的对象存在了两种实例化的操作形式,那么这两种有什么区别,在开发之中应该使用那一种更好呢?1、分析直接赋值的情况:String str = Hello ;发现现在只开辟了一块堆内存空间和一块栈内存空间。那么随后将代码进行一些修改。public class StringDemo public static vo

10、id main(String args) String str1 = Hello ;String str2 = Hello ;String str3 = Hello ;System.out.println(str1 = str2) ;/ trueSystem.out.println(str1 = str3) ;/ trueSystem.out.println(str2 = str3) ;/ true解释:关于直接赋值操作之中,字符串比较都是相同的原因在String类进行设计的时候采用了一种称为共享设计模式的概念,在每一个运行的JVM底层存在一个字符串的对象池(Object Pool),如果用户

11、采用了直接赋值的方式,会将字符串的内容放入到池之中,以供其他继续使用直接赋值方式的String对象使用,如果新声明的字符串内容不再池之中,则会开辟一个新的,继续放到池,以供下次使用。2、分析构造方法赋值的情况:public class StringDemo public static void main(String args) String str = new String(Hello) ;System.out.println(str) ;使用构造方法的方式开辟的字符串对象,实际上会开辟两块空间,其中有一块空间将称为垃圾。public class StringDemo public stat

12、ic void main(String args) String str1 = new String(Hello) ;String str2 = Hello ;/入池String str3 = Hello ;/使用池对象System.out.println(str1 = str2) ;/ falseSystem.out.println(str1 = str3) ;/ falseSystem.out.println(str2 = str3) ;/ true通过上面的程序可以发现,使用构造方法实例化的String对象,不会入池,所以,只能自己使用。可是在String类之中为了方便操作提供了一种称为

13、手工入池的方法:public String intern()。public class StringDemo public static void main(String args) String str1 = new String(Hello).intern() ;String str2 = Hello ;/入池String str3 = Hello ;/使用池对象System.out.println(str1 = str2) ;/ trueSystem.out.println(str1 = str3) ;/ trueSystem.out.println(str2 = str3) ;/ tr

14、ue面试题:请解释String类的两种对象实例化方式的区别?直接赋值:只开辟一块堆内存空间,字符串的内容可以自动入池,以供下次使用;构造方法:开辟两块堆内存空间,有一块将成为垃圾,并且不能自动入池,使用intern()手工入池。在日后的所有开发之中,String对象的实例化永远都采用直接赋值的方式完成。3.1.5、字符串的内容一旦声明则不可改变字符串类的操作特点决定:字符串不可能去修改里面的内容,所以,如果以后在开发之中有如下程序。public class StringDemo public static void main(String args) String str = Hello ;s

15、tr += World ;str= str + ! ;System.out.println(str) ;通过以上的代码可以发现,字符串内容的更改,实际上改变的是字符串对象的引用过程,并且会伴随有大量的垃圾出现,那么对于以下的代码实际之中应该避免:public class StringDemo public static void main(String args) String str = ;for (int x = 0 ; x 1000 ; x +) str += x ;System.out.println(str) ;但是这种代码需要“断开-连接”String对象1000次,会产生大量垃圾

16、,所以不能够去使用。3.2、String类的常用方法(重点,背)String类除了之前所介绍的两个方法之外,还存在着大量的其他操作,考虑到String类在实际的工作之中使用非常的广泛,那么就建议大家都背下来,以下所讲解的每一个方法:记住方法的名称、返回值类型、参数的类型及个数、方法的作用。以后所有的开发都要和文档挂勾,而且文档不许使中文,因为在所有的Java学习之中,有十几份文档呢。文档之中会对每一个类进行详细的解释,而一般的解释类的文档的结构:类的基本定义;类的说明;类的主体部分:|-类之中的成员(Field);|-类中的构造方法(Constructor);|-类中的普通方法(Method)

17、。对每一个成员、构造方法、普通方法的作用进行详细说明,包括参数的作用。3.2.1、字符串与字符在很多的语言之中,都强调,字符串由字符数组所组成,那么这一概念在Java的String类之中也有体现。No.方法名称类型描述1public String(char value)构造将全部的字符数组内容变为字符串2public String(char value, int offset, int count)构造将部分字符数组变为字符串,offset表示开始点,count表示要操作的长度3public char charAt(int index)普通取得指定索引位置上的字符4public char to

18、CharArray()普通将字符串转换为字符数组范例:验证charAt()方法,这个方法是一个标志性方法public class StringDemo public static void main(String args) String str = helloworld ;char c = str.charAt(7) ;System.out.println(c) ;范例:字符串和字符数组转换,完成一个小写字符串变为大写字符串的操作,小写字母和大写字母差了32public class StringDemo public static void main(String args) String

19、str = helloworld ;char data = str.toCharArray() ;/字符串变为字符数组for (int x = 0 ; x = 0 & c = 9) ;System.out.println(int) c) ;思路:将一个字符串首先变为字符数组,而后依次判断字符数组之中的每一个字符是否是数字,如果全是,则返回true,否则返回false。public class StringDemo public static void main(String args) String str = 1a23 ;System.out.println(isNumber(str) ;p

20、ublic static boolean isNumber(String temp) char data = temp.toCharArray() ;/变为字符数组for (int x = 0 ; x data.length ; x +) if (datax 9) return false ;/不是数字return true ;以上的这些操作只是给了一个基本的思路,实际上不可能如此完成的,但是这些基本的程序逻辑应该明白。3.2.2、字符串与字节字符串除了与字符可以互相转换之外,还可以和字节互相转换,操作方法:No.方法名称类型描述1public String(byte bytes)构造将全部的字节数组变为字符串

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1