程序题

输出的结果:

问题1.

复制代码
public class Test1 {
   public static void changeStr(String str){
       str ="welcome";
   }
   public static void main(String args[]){
       String str="1234";
       changeStr(str);
       System.out.println(str);
   }
}
复制代码

 

 

 

//输出结果:1234
//这里虽然是一个静态方法,但是里面的变量是一个局部变量,
//所以这里不因为是静态方法,就误认为里面的变量也是静态变量了

 

 

 

问题2.

复制代码
public class Test2 {
    static boolean foo(char c){
        System.out.println(c);
        return true;
    }
    public static void main(String[] args) {
        int i=0;
        for(foo('A');foo('B')&&(i<2);foo('C')){
            i++;
            foo('D');
        }
    }
}
复制代码

What is the result?
A. ABDCBDCB
B. ABCDABCD
C. Compilation fails.
D. An exception is thrown at runtime.

 

 

 

输出结果是:ABDCBDCB
分析:FOR循环里面讲究的条件要为真,与你的判断式是什么没有关系
就像这里,虽然是打印的字母,但是却不是false,所以可以执行
第一次进行循环:
foo('A')打印字母A,(注:这里不是false条件就默认为true条件)
foo('B')打印字母B,i=0,比较(i < 2),条件为true,进行循环体,foo('D')打印D
foo('C')打印字母C
第二次循环:
foo('B')打印B,i=1,比较(i < 2)为true,进行循环体,foo('D')打印D
foo('C')打印字母C
第三次循环:
foo('B')打印字母B,i=2,比较(i < 2)为false,退出循环,得结果

 

 

问题3.

复制代码
public class Test3 {
    String str = new String("good");
    char[] ch = { 'a', 'b', 'c' };

    public static void main(String args[]) {
        Test3 ex = new Test3();
        ex.change(ex.str, ex.ch); 
        System.out.print(ex.str + " and ");
        System.out.print(ex.ch);
    }

    public void change(String str, char ch[]) {
        str = "test ok";
        ch[0] = 'g';
    }
}
复制代码

 

 

 

输出结果:good and gbc

// (ex.str,ex.ch被当作参数,所以下面的赋值没有作用)

posted @   一纸年华  阅读(172)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示