有谁帮我解释一下这2个java小程序? 5
1:publicclassTest_123{Stringm_kobe="1";String[]m_king={"2"};publicstaticvoidmain(Stri...
1:public class Test_123 {
String m_kobe = "1";
String[] m_king = {"2"};
public static void main(String[] args) {
Test_123 app = new Test_123();
app.mb_operate(app.m_kobe, app.m_king);
System.out.println(app.m_kobe+app.m_king[0]);
}
static void mb_operate(String kobe, String[] king) {
kobe = new String("3");
king[0] = new String("4");
}
}
2:import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
public class Test_111 {
public static void main(String[] args) throws IOException {
RandomAccessFile f = new RandomAccessFile("a.txt","rw");
f.writeBoolean(true);
f.writeBoolean(false);
for(int i = 1; i < 10; ++i)
f.writeInt(i);
f.seek(6);
System.out.println(f.readInt());
f.close();
}
}
为什么第一个的结果是14,第二个的结果是2?解释一下为什么?菜鸟一个。。本人!! 展开
String m_kobe = "1";
String[] m_king = {"2"};
public static void main(String[] args) {
Test_123 app = new Test_123();
app.mb_operate(app.m_kobe, app.m_king);
System.out.println(app.m_kobe+app.m_king[0]);
}
static void mb_operate(String kobe, String[] king) {
kobe = new String("3");
king[0] = new String("4");
}
}
2:import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
public class Test_111 {
public static void main(String[] args) throws IOException {
RandomAccessFile f = new RandomAccessFile("a.txt","rw");
f.writeBoolean(true);
f.writeBoolean(false);
for(int i = 1; i < 10; ++i)
f.writeInt(i);
f.seek(6);
System.out.println(f.readInt());
f.close();
}
}
为什么第一个的结果是14,第二个的结果是2?解释一下为什么?菜鸟一个。。本人!! 展开
3个回答
2013-12-05
展开全部
public class Test_123 {
String m_kobe = "1";
String[] m_king = {"2"};
public static void main(String[] args) {
Test_123 app = new Test_123();
app.mb_operate(app.m_kobe, app.m_king);
System.out.println(app.m_kobe+app.m_king[0]);
}
// String 类型的参数是不能引用传递的,它就是传值,在该函数里怎么改都不会影响kobe的值
// String[] 是数组,数组类型是可以引用传递的,所以在函数里的改变会影响到 m_king
static void mb_operate(String kobe, String[] king) {
kobe = new String("3");
king[0] = new String("4");
}
}
第二个题:
public class Test_111 {
public static void main(String[] args) throws IOException {
RandomAccessFile f = new RandomAccessFile("a.txt","rw");
// 写入文件1个字节, boolean类型的占1个字节
f.writeBoolean(true);
// 写入文件1个字节, boolean类型的占1个字节
f.writeBoolean(false);
for(int i = 1; i < 10; ++i)
f.writeInt(i); // int类型是4个字节,每次写入4个字节
f.seek(6); // 从文件头开始偏移6个字节,前两个是true和false。后面都是占4个字节的整数
所以3 - 6 位置是第一个整数 1,偏移6个字节,那么下一个整数就是2
System.out.println(f.readInt()); // 这里只读取一个整数,即从当前位置只读取4个字节,而这四个字节,刚好是整数2的位置,因为它是int,占4个字节
f.close();
}
}
String m_kobe = "1";
String[] m_king = {"2"};
public static void main(String[] args) {
Test_123 app = new Test_123();
app.mb_operate(app.m_kobe, app.m_king);
System.out.println(app.m_kobe+app.m_king[0]);
}
// String 类型的参数是不能引用传递的,它就是传值,在该函数里怎么改都不会影响kobe的值
// String[] 是数组,数组类型是可以引用传递的,所以在函数里的改变会影响到 m_king
static void mb_operate(String kobe, String[] king) {
kobe = new String("3");
king[0] = new String("4");
}
}
第二个题:
public class Test_111 {
public static void main(String[] args) throws IOException {
RandomAccessFile f = new RandomAccessFile("a.txt","rw");
// 写入文件1个字节, boolean类型的占1个字节
f.writeBoolean(true);
// 写入文件1个字节, boolean类型的占1个字节
f.writeBoolean(false);
for(int i = 1; i < 10; ++i)
f.writeInt(i); // int类型是4个字节,每次写入4个字节
f.seek(6); // 从文件头开始偏移6个字节,前两个是true和false。后面都是占4个字节的整数
所以3 - 6 位置是第一个整数 1,偏移6个字节,那么下一个整数就是2
System.out.println(f.readInt()); // 这里只读取一个整数,即从当前位置只读取4个字节,而这四个字节,刚好是整数2的位置,因为它是int,占4个字节
f.close();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个确实是为14。。。因为,你这一句app.mb_operate(app.m_kobe, app.m_king); 是调用自身的mb_operate(String kobe, String[] king)方法。传了2个值进去。第一个是m_kobe = "1"; 第二个是m_king = {"2"}; 你在mb_operate(String kobe, String[] king)方法中。给k[0]赋值为“4”。。。你在输出的时候是。System.out.println(app.m_kobe+app.m_king[0]); 。。m_kobe=“1”,m_king[0]=“4”。两个都是字符串。。所以输出14
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询