A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Xiacker 中级黑马   /  2013-12-17 11:08  /  1639 人查看  /  9 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public static String reverse4(String s){
  2.                 String reverse="";
  3.                 for(int i=0;i<s.length();i++){
  4.                         reverse=s.charAt(i)+reverse;
  5.                 }
  6.                 return reverse;
  7.         }
复制代码


这里怎么就反转了呢,怎么反出来的,想不通,求大神解释。。。

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

9 个回复

倒序浏览
这能反转吗?i是从s的第一个字符开始取的诶
回复 使用道具 举报
reverse=s.charAt(i)+reverse;
这句语句中:s.charAt(i)依次获取s中的字符,然后加到reverse前面,在把这个值赋给reverse
这样,假设s = "abc"
第一次:
reverse = 'a' + "";
第二次:
reverse = 'b' + "a";
第三次:
reverse = 'c' + "ba";
就这意思

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
长见识了,以前都是用字符数组或者StringBuilder反转的!
首先你创建了一个空的字符串( String reverse=""),然后你遍历那个旧的字符串,
在遍历的过程中,你是从前往后遍历,然后加上reverse.这时候你是不是将reverse放在后面了?
然后就完成了字符串的反转!
至于例子楼上就有一个,不做举例了!

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
很好理解。
例如有一个字符串love,对其做反转,函数中有for循环,循环体中charat()取特定位置上的值。
有如下过程:
已定义字符串reverse=“”;s=“love”;
love长度为4,则循环4次
第一次:reverse="l"+""="l"
第二次:reverse="o"+"l"="ol"
第三次:reverse="v"+"ol"="vol"
第四次:reverse="e"+"vol"="evol"
循环完毕返回reverse="evol";至此love字符串翻转完成

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
首先,这个函数时面用了charAt方法,JDK API 1.6里面是这样解释的
public char charAt(int index)返回指定索引处的 char 值。索引范围为从 0 到 length() - 1。序列的第一个 char 值位于索引 0 处,第二个位于索引 1 处,依此类推,这类似于数组索引。
如果索引指定的 char 值是代理项,则返回代理项值。
s.charAt(i)表示取s字符串中每i个索引的字符,再放到新串里面
s.charAt(i)+reverse,每次取得的值放在新串的前面,循环是每次是向后取s的字符,而这把每次取得的字符放在前面,所以就完成了字符串的反转

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
个人理解:
首先,接收一个字符串,同时创建一个空的字符串。
接着,做一个循环处理,循环的流程是按照顺序的取出接收的字符串的字符依次放到创建的空字符串中,由于取是从串首到串尾,存的时候是先存的在串尾。
最后,将这个创建的字符串返回,就会得到一个与传入字符串逆序的字符串。

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
这里原因在于代码是一个字母一个字母获取并添加到reverse变量的前面。其实这里是将原字符串中的字母从第一个一次循环获取并添加到另一个字符串的前面而形成的反转。
这里关键用到了字符串的加法运算。也是同学们第一眼看不懂的地方。
回复 使用道具 举报
零敢 中级黑马 2013-12-18 16:19:53
9#
就是利用charAt方法依次取字符串数组中的元素为reverse;从第一个元素起逐步添加到最后一个;最后就完成了字符串的反转了
回复 使用道具 举报
i从s的第一个字符开始取
用+放进reverse字符串中
取到第二个字符再用+放时就放到了这个字符的前面
比如s="abc"
i=0时,就把连接到reverse里,这时reverse为a
i=1时,reverse就为ba
这样就反转了字符串并存放到了reverse中
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马