版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 很高兴和大家再次合作 本学期用到两本教材,新教材在第8周左右开始用 讲义下载邮箱: 密码:java1264.2字符串字符串 4.2.1字符数组与字符串的区别 字符数组:由字符组成的数组,是一个数组 char z=h,e,l,l,o; 字符串:是一个String类的对象 String s1=myString;4.2.2字符串常量和变量字符串常量和变量 一个字符串常量是用双引号包围的一串字符 如下面定义四个字符串,读者比较一下: String s1=“新年快乐; String s2=“新年快乐; String s3=new String(“新年快乐); String s4=new String(
2、“新年快乐); S1=“12e”; 则s1和s2是同一个对象,指向的是一个字符串常量“新年快乐”;指向的内存地址空间是一致的 s3,s4则是2个不同的变量。虽然有相同的内容,但是在内存的空间不同常量变量4.2.6字符串比较字符串比较两个字符串比较时,从首字符开始逐个向后比较每个字符,如果一旦发现两个字符串的某个位置上的字母不相同时,则比较过程结束; 只有当两个字符串所包含的字符个数相等且对应位置的字符也相等(包括大小写),两个字符串才相等。 在比较两个字符串是否相等时,可使用boolean equals(Object obj)方法,用法如下:String s“student”;boolean
3、b=s. equals(“Student”);第二行代码的b将会得到false值,因为“student”与“Student”的首个字母大小写不相等。 但是如果用另外一个函数boolean equalsIgnoreCase(String str)则将返回true值,因为该函数是忽略大小写的。 另外,有一个类似的方法为compareTo和compareToIgnoreCase,区别在于返回值为整数,稍后介绍 字符串不能用“=”号比较, 用“=”号比较字符串时,其实是在比较这两个字符串的地址,每个String类对象所占有的内存地址是不同的,所以这样得出的比较结果是false, String a=ne
4、w String(“节日快乐); String b=new String(“节日快乐); if (a=b)System.out.println(true); elseSystem.out.println(false);字符串a和b都有自己的独立空间保存字符串,虽然内容相同,但是地址不同相同的字符串常量所占用的空间是一样的,所以下面的代码段输出结果是true。(参考4.2.1字符串常量) String a=“节日快乐; String b=节日快乐; if (a=b)System.out.println(true); elseSystem.out.println(false);字符串a和b都指向字
5、符串常量“a”,地址相同,内容自然也相同4.2.3 String类构造方法和常用方法类构造方法和常用方法 1. String常用构造函数方法 String常用构造函数如下,有很多种方法可以产生一个String类字符串。 (1). public String() 这个构造函数用来创建一个空的字符串常量。 如:String test=new String(); test”Hello World”; (2)public String(String value ) 这个构造函数用一个已经存在的字符串常量作为参数来创建一个新的字符串常量。 如:String test=new String(Hello,
6、world.);字符串可以这样赋值红色表示上机作业中将用到4.2.3 String类构造方法和常用方法类构造方法和常用方法(3)public String( char value )这个构造函数用一个字符数组作为参数来创建一个字符变量, 用法如下: char z=h,e,l,l,o; String test=new String(z);(注:此时test中的内容为“hello”)(4)public String( char value, int offset, int count )猜猜这个函数声明意思用代码验证一下!从offset开始取count个字符 构成一个字符串注意:数组中,下标0表示
7、第一个元素,1表示第二个元素如果起始点offset 或 截取数量count 越界,将会产生异常 StringIndexOutOfBoundsException。2.String类常见的方法 (1) public char charAt( int index ) 这个方法用来获取字符串常量中的一个字符。参数index指定从字符串中返回第几个字符,这个方法返回一个字符型变量。用法如: String s=hello; char k=s.charAt(0);/此时k的值为h (2)toLowerCase() 将所有的字符转换为小写形式。 (3)toUpperCase() 将所有的字符转换为大写形式。
8、(4)SubString(int beginIndex) 截取当前字符串中从beginIndex开始到末尾的子串。 (5)public int compareTo( String anotherString ) 这个方法用来比较字符串常量的大小,参数anotherString为另一个字符串常量。 若两个字符串常量一样,返回值为0。 若当前字符串常量大,则返回值大于0。 若另一个字符串常量大,则返回值小于0。用法如: String s1=abc; String s2=abd; int result=pareTo(s1); /result的值大于0,因为d在ascII码中排在c的后面,则s2s1
9、(6)public String concat( String str ) 这个方法将把参数字符串常量str 接在当前字符串常量的后面,生成一个新的字符串常量,并返回。用法如: String s1=How do ; String s2=you do?; String ss=s1.concat(s2);/ss的值为How do you do? 另外,系统还提供了实现连接的简单操作,即重载运算符“+”。“+”除了能实现数值加法外,还可连接它的两个操作数。只要“+”的两个操作数中有一个是字符串,则另一个也自动变为字符串类型。 (19)public int length() 这个方法返回字符串常量的长
10、度,这是最常用的一个方法。用法如: String s=abc; int result=s.length(); / result的值为3 (20) public char toCharArray() 这个方法将当前字符串常量转换为字符数组,并返回。用法如: String s=Who are you?; char z=s.toCharArray();上机作业判断某字符串下标为奇数的字符所组成的字符串与下标为偶数的字符所组成的字符串是否相等步骤步骤使用函数使用函数分分数数创建一个新的 字符串str1,值为Iiaammssttuuddeenntt构造函数10创建一个新的 字符串str2,并设初始值为“
11、”;构造函数10用一重循环,取出str1的下标为单号的字符放在字符串str2中(用+号链接字符串和单个字符),打印str2用charAt函数length函数25取出str1的长度len,定义一个长度为len/2的字符数组arr ,length函数10取出str1的下标为双号的字符放在字符串数组arr中,(用另一个循环变量,从0开始,每次加1,作为arr的下标)用charAt函数length函数25用字符串数组arr构造一个字符串str3,打印str3String( char value )10比较str2和str3是否相等,相等则打印“true”,否则打印“false”compareTo函数(
12、返回值为0代表相等)10提示 如何取一个字符串 单号字符? 如何赋值给另一个字符数组思考:3步和6步的两个循环是否可以合并?如果可以,试着将合并后的循环代码写在下面第3步:用+号的时候,左右两边的操作数类型不同,分别为字符串和字符,为什么也可以加,是什么原理?(提示:查看教材concat函数后的提示)第3步不用+号还可以用哪个函数,是否还要进一步考虑什么问题?试着写代码实现查教材 写出所有字符串和字符串数组相互转换的函数为什么Iiaammssttuuddeenntt结果为-32,代表什么意思? Iiaammssttuuddeenntt的结果是什么?代表什么意思? IIaAmmssttuudde
13、enntt的结果是什么?代表什么意思?将上机作业代码和上面5个题目答案交作业至12号楼402 2周讲上机作业参考答案public class work1 public static void main(String args) String str1=IIAAmmssttuuddeenntt;String str2=;for (int i=0;istr1.length();i=i+2)str2=str2+str1.charAt(i);System.out.println(str2);int len=str1.length();char arr=new charlen/2;int j=0;for
14、 (int i=1;istr1.length();i=i+2)arrj=str1.charAt(i);j+;String str3=new String (arr);System.out.println(str3);int result=pareTo(str3);System.out.println(result);思考题答案3步和6步的两个循环是否可以合并?如果可以,试着将合并后的循环代码写在下面可以package ch4.zj09_2files.week1;public class work1plus /* * param args * 2、判断某字符串下标为奇数的字符所组成的字符串与 *
15、 下标为偶数的字符所组成的字符串是否相等。 */public static void main(String args) / TODO Auto-generated method stubString str1=IIAAmmssttuuddeenntt;String str2=;int len=str1.length();char arr=new charlen/2;int j=0;for (int i=0;istr1.length();i=i+1)if (i%2=0)/偶数字符偶数字符str2=str2+str1.charAt(i);else/奇数字符奇数字符arrj=str1.charAt
16、(i);j+;System.out.println(str2);String str3=new String (arr);System.out.println(str3);int result=pareTo(str3);System.out.println(result);int j=0;for (int i=0;istr1.length();i=i+1)if (i%2=0)/偶数字符偶数字符str2=str2+str1.charAt(i);else/奇数字符奇数字符arrj=str1.charAt(i);j+;2:第3步:用+号的时候,左右两边的操作数类型不同,分别为字符串和字符,为什么也可
17、以加,是什么原理?(提示:查看教材concat函数后的提示)“+”除了能实现数值加法外,还可连接它的两个操作数。只要“+”的两个操作数中有一个是字符串,则另一个也自动变为字符串类型3、第3步不用+号还可以用哪个函数,是否还要进一步考虑什么问题?试着写代码实现concat函数str2=str2.concat(str1.subString(i,i+1);代码目的:将i位置上的字符链接到str2字符串的后面,如果不用加号,可以用上面的方法替代比较麻烦 ,要一层一层的想,去套用String中的参数char tmp=new char1;tmp0=str1.charAt(i);str2=str2.conc
18、at(new String(tmp);(3)public String( char value )这个构造函数用一个字符数组作为参数来创建一个新的字符串常量。 用法如下: char z=h,e,l,l,o; String test=new String(z);(注:此时test中的内容为hello) (4)public String( char value, int offset, int count )这个构造函数是对上一个的扩充,用一句话来说,就是用字符数组value,从第offset个字符起取count个字符来创建一个String类的对象。用法如下: char z=h,e,l,l,o;
19、String test=new String(z,1,3);(注:此时test中的内容为ell)注意:数组中,下标0表示第一个元素,1表示第二个元素如果起始点offset 或 截取数量count 越界,将会产生异常 StringIndexOutOfBoundsException。4、查教材 写出所有字符串和字符串数组相互转换的函数好好想想,怎么去使用他们(10)public void getChars( int srcBegin, int srcEnd, char dst, int dstBegin )这个方法用来从字符串常量中截取一段字符串并转换为字符数组。参数srcBegin为截取的起始点
20、,srcEnd为截取的结束点,dst为目标字符数组,dstBegin指定将截取的字符串放在字符数组的什么位置。实际上,srcEnd为截取的结束点加1,srcEnd-srcBegin为要截取的字符数,用法如: String s=abcdefg; char z=new char10; s.getChars(2,4,z,0); / z0的值为c,z1的值为d,截取字符串s的下标为2和3的两个字符(20) public char toCharArray()这个方法将当前字符串常量转换为字符数组,并返回。用法如: String s=Who are you?; char z=s.toCharArray()
21、;好好想想,怎么去使用他们 5、为什么Iiaammssttuuddeenntt结果为-32,代表什么意思? Iiaammssttuuddeenntt的结果是什么?代表什么意思? IIaAmmssttuuddeenntt的结果是什么?代表什么意思?时刻牢记ascii编码表中的位置大写字母比相同的小写字母小3265 开始为大写字母97开始为小写字母上机作业存在问题 长度没有除以2 取偶数字符时喜欢用2重循环,没有必要 相当一部分同学没有用字符数组 的方法,下次补上 4.2.6字符串和其他类型的相互转换字符串和其他类型的相互转换 可以将Stirng类型的数据与int、float、long、doubl
22、e、boolean等类型数据相互转换。 将其他类型数据转换为String类型的方法是String.valueOf(基本类型数据),举例如下: String str1=String.valueOf(boolean); String str2=String.valueOf(23); String str3=String.valueOf(908.788); 将字符串类型转换为其他类型数据的方法并不统一用一种方法,遵循一定的规律,举例如下做参考: boolean b=Boolean.getBoolean(false); int i=Integer.parseInt(345); long l=Long.
23、parseLong(897876); float f=Float.parseFloat(78.098); double d=Double.parseDouble(23839.03839393);其他类型转变为字符串字符串转变为其他类型用其他类型数据产生String类的字符串 (21)public static String valueOf( boolean b )(22)public static String valueOf( char c )(23)public static String valueOf( int i )(24)public static String valueOf(
24、long l )(25)public static String valueOf( float f )(26) public static String valueOf( double d )以上21-26 6个方法可将boolean、char、int、long、float和double 6种类型的变量转换为String类的对象。用法如: String r1=String.valueOf(true); (注:r1的值为true) String r2=String.valueOf(c); (注:r2的值为c) float ff=3.1415926; String r3=String.valueO
25、f(ff); (注:r3的值为3.1415926) 后面为String其他函数 供参考 (7)public boolean startsWith( String prefix ) 这个方法判断当前字符串常量是不是以参数prefix字符串常量开头的。是则返回true;否则返回false。用法如: String s1=abcdefg; String s2=bc; boolean result=s1.startsWith(s2);/ result的值为false) (8)public boolean startsWith( String prefix, int toffset ) 这个重载方法新增的
26、参数toffset指定进行查找的起始点。(9)public boolean endsWith( String suffix )这个方法判断当前字符串常量是不是以参数suffix字符串常量结尾的。是则返回true;否则返回false。用法如: String s1=abcdefg; String s2=fg; boolean result=s1.endsWith(s2);/ result的值为true)(10)public void getChars( int srcBegin, int srcEnd, char dst, int dstBegin )这个方法用来从字符串常量中截取一段字符串并转换
27、为字符数组。参数srcBegin为截取的起始点,srcEnd为截取的结束点,dst为目标字符数组,dstBegin指定将截取的字符串放在字符数组的什么位置。实际上,srcEnd为截取的结束点加1,srcEnd-srcBegin为要截取的字符数,用法如: String s=abcdefg; char z=new char10; s.getChars(2,4,z,0); / z0的值为c,z1的值为d,截取字符串s的下标为2和3的两个字符(11)public int indexOf( int ch )这个方法的返回值为字符ch在字符串常量中从左到右第一次出现的位置。若字符串常量中没有该字符,则返回-1。用法如: String s=abcdefg; int r1=s.indexOf(c); int r2=s.indexOf(x);/r1的值为2,r2的值为-1(12)public int indexOf( int ch, int fromIndex )这个方法是对上一个方法的重载,新增的参数fromIndex为查找的起始点。用法如: String s=abcdaefg; int r=s.indexOf(a,1); / r的值为4 (13)public int indexOf( String str ) 这个重载方法返回字符串常量str在当前
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《我爱这土地》课件
- 制冷作业复审课件
- 口腔前台培训内容
- 《我们多么幸福》课件
- 口罩正确戴法图解课件
- 口才小荒唐课件
- 工地施工制度现场文明施工、环境卫生管理制度
- 安全用电管理制度
- 土边坡支护安全技术交底模板
- 2026年公司内部财务审计工作计划
- 2025年龙井市面向委培生和定向生招聘员额岗位(5人)笔试参考题库及答案解析
- 交通事故培训
- 金融投资分析与决策指导手册(标准版)
- 【初中 地理】2025-2026学年人教版八年级地理下册知识点汇Z
- 2025年版廉政知识测试题库(含答案)
- 机械制图教案
- 新疆干旱的原因
- 九年级 22天1600个中考词汇背默专项训练(英语)
- 老年心血管疾病预防与治疗
- PICC导管标准维护流程教案(2025-2026学年)
- 护士长采血防淤青课件
评论
0/150
提交评论