黑马程序员技术交流社区
标题: 问个API的问题 [打印本页]
作者: -律- 时间: 2014-12-20 00:09
标题: 问个API的问题
本帖最后由 -律- 于 2014-12-20 00:18 编辑
下面程序的运行结果是( )
public static void main(String[] args){
StringBuffer sb = new StringBuffer();//实例化一个叫sb的对象;
sb.append("qq").append("ww");//添加元素"qq"以及"ww"
show(sb,"ss");//调用show方法
System.out.println(sb.length());//打印sb长度
}
static void show(StringBuffer sb,String str){
sb.append(str);//show中封装一个给sb添加元素的方法
}
a) 4
b) 2
c) 6
d) 0
我知道运行结果是6,但是比如show方法的写法和调用,弄的我思维混乱了,大家能把自己第一眼看到的思维,写个备注出来么
我只是知其然,不知其所以然,大神勿喷!
作者: -律- 时间: 2014-12-20 00:13
我个人最大的疑问就是:
show(sb,"ss");为什么可以这样写
因为
static void show(StringBuffer sb,String str){
sb.append(str);
那么show( );括号中不是应该只填写一个字符串么,还要写sb(sb,"ss")
作者: -律- 时间: 2014-12-20 00:18
好吧,我想明白了,我有点死脑筋
作者: 奋斗的蜗牛ksd 时间: 2014-12-20 00:19
show函数 是你自己定义的,括号里面表示自定义的参数列表,你如果在show方法的参数列表里面写了
StringBuffer sb 表示这个函数可以接收一个容器
参数列表写String str 表示这个函数可以接收字符串
两个一起写,表示两个都接收
在这个show方法中,可以操作 这个容器 和字符串,但是操作的变量是固定的,即容器 就是sb,字符串就str
作者: -律- 时间: 2014-12-20 00:25
原来StringBuffer sb是一个容器,sb的值不能像str一样改变么,受教了,我上去试一试
作者: 奋斗的蜗牛ksd 时间: 2014-12-20 00:30
对函数的理解,得靠自己抽象去对比的学,
数学中的函数, 你给它一些变量,它会对变量按照函数的规则操作,比如圆的方程之类
java中的函数,函数列表规定了这个函数可以操作什么类型的数据,以及该类型数据的名称
返回值类型其实没什么用,你可以忘记它
其他的需要你自己思考咯,今天我也刚捉摸过这个问题。
作者: -律- 时间: 2014-12-20 00:31
4楼说的很简单明了,3Q
作者: 奋斗的蜗牛ksd 时间: 2014-12-20 00:35
你对下面两个show可能有点小误会
show(sb,"ss");//我叫第一个show
static void show(StringBuffer sb,String str){ //我叫第二个show
sb.append(str);//show中封装一个给sb添加元素的方法
}
第一个show 的作用是传递,传递在main方法中定义的容器 和字符串
第二show的作用 是进行接收和操作,接收的参数列表类型,在第一个show定义的时候就已经确定即必须是
(StringBuffer 变量名,String 变量名),这两个变量名是可以随便起的,用来接收第一个show传递过来的数据内容
在第二个show方法中,所有操作的变量,都是在第二个show参数列表中你自己定义的变量名。
我觉得我说的够详细了,其他自己测试测试就可以得出结果了,该一该代码,就可以验证自己的想法!加油!
作者: 奋斗的蜗牛ksd 时间: 2014-12-20 00:37
- public class Test222 {
- public static void main(String[] args){
- StringBuffer sb = new StringBuffer();//实例化一个叫sb的对象;
- System.out.println(sb.length());;
-
- sb.append("qq").append("ww");//添加元素"qq"以及"ww"
- System.out.println(sb.length());
-
- show(sb,"ss");//调用show方法,执行show方法,完成show方法中的功能
- System.out.println(sb.length());//打印sb长度
- }
- static void show(StringBuffer sb,String str){
- sb.append(str);//show中封装一个给sb添加元素的方法
- }
- }
复制代码
上面是验证一下执行顺序,结果一次是0 4 6,即,数组确长度实是在执行show之后变成6的
作者: -律- 时间: 2014-12-20 01:03
show1 填入变量名 ;
show2 ( 执行方式 ) ;
1,2是一个整体,完整走下来,结果出现了
你这种二分法式的理解方式,我喜欢
作者: 郭文飞 时间: 2014-12-20 01:19
我第一眼 还以为是 GUI里的show ,,呵呵 傻了
作者: -律- 时间: 2014-12-20 01:34
GUI图像界面编程啊,咱还没学到那呢,得过几天
作者: 郭文飞 时间: 2014-12-20 01:48
不过你学不到了 哈哈 因为那个方法已经过时了 上面会有一个删除线的
作者: huoxy 时间: 2014-12-20 14:33
建议楼主起函数名时能体现一下功能。别人一看show以为是要打印或显示功能,你定义的却是添加功能,有点混乱。
作者: 奋斗的蜗牛ksd 时间: 2014-12-20 18:26
别激动,都是男人。
作者: -律- 时间: 2014-12-22 21:39
黑马币难混,虽然论坛这种互动方式挺好的
作者: lgc黑马 时间: 2014-12-22 22:44
问吧,问吧 ,赶紧问
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |