没看懂,本类之外有直接访问strings了吗?难道能直接访问?
解决方案 »
- 请问java下,自定义表单现在一般采用什么技术!
- 为什么 总是 java.sql.SQLException: No suitable driver found for jdbc:Cache://localhost:1972/SAMPLES
- tableViewer显示数据时table的列宽自动改变
- 关于范型
- 我的这个xml的xsd就是不好使 大家帮忙看看阿
- Exception in thread "main" java.lang.Error: Unresolved compilation problems:
- 用PrintWriter向文件输出后为什么不能修改? 那位高手帮忙看一下?谢了
- 把我的疑问和思考做了个总结,也许对跟我一样的有疑惑的人有所帮助。
- 我的网站的字体制作,希望各位兄弟帮下忙?
- JBuilder6下运行sample出现的问题
- 安装求助
- jb8连oracle9说找不到驱动,但是我已经将驱动加到系统中了啊
tmp[0] = "modified";
这里的tmp并不是类的成员变量啊,只是个变量并赋了个值而已!
test.strings才是成员变量
String[] tmp=test.getStrings();
类对象test通过getStrings()方法可以得到strings (String[] tmp=test.getStrings();)
通过tmp[0] = "modified";并不能改变strings,
private String[] strings; public javaTest(){
strings = new String [1];
strings[0] = "string";
} public String[] getStrings(){
return strings;
} public void showStrings(){
System.out.println( strings[0] );
}
static public void main( String[] args ) {
javaTest test = new javaTest();
test.showStrings();
String[] tmp = test.getStrings();
tmp[0] = "modified";
test.showStrings();
String[] aaa = {"aaaa","bbbb"};
tmp = aaa;
test.showStrings();
}
}
结果:
stringmodifiedmodified
private对于对象来说,只能是保证不改变它的指向,对象内部内容能够被改变。
String[] tmp = test.getStrings();
使得tmp和strings指向同一个实例,所以可以改变strings的值。
但这是通过javaTest的方法实现的,也就是你主动交出了权限,
private也保护不了你了。
System.out.println(test.strings[0]);
结果:
[Ljava.lang.String;@ad3ba4
modified
说明test的成员变量strings确实被修改了,Why????????
而是test.strings你就改不了strings的值了,这时private就
起作用了。