ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java习题

2022-04-04 11:34:04  阅读:159  来源: 互联网

标签:test1 ch Java String System str 习题 public


public class ClassTest{
     String str = new String("hello");
     char[] ch = {'a','b','c'};
     public void fun(String str, char ch[]){
     str="world";
     ch[0]='d';
 }
 public static void main(String[] args) {
     ClassTest test1 = new ClassTest();
     test1.fun(test1.str,test1.ch);
     System.out.print(test1.str + " and ");
     System.out.print(test1.ch);
     }
 }

结果:hello and dbc

分析:String被final修饰,即String被赋值之后是不可变的,调用fun方法时,传入的形参str在进行str="world"操作时实际上是new了一个新的String对象,并没有改变实参中str中的对象引用。形参ch与实参ch执行堆中的同一个地址,ch[0]='d'实际上也修改了实参ch中的数据

public class IfTest{
    public static void main(String[]args){
        int x=3;
        int y=1;
        if(x=y)
            System.out.println("Not equal");
        else
            System.out.println("Equal");
     }
}

结果:An error at line 5 causes compilation to fall.

分析:Java和C的区别,Java条件判断语句中返回值只能是boolean类型,x=y是将y的值赋给x,再去判断if(1)的结果,这时类型不匹配,即int无法转换为boolean

public class Test2
{
    public void add(Byte b)
    {
        b = b++;
    }
    public void test()
    {
        Byte a = 127;
        Byte b = 127;
        add(++a);
        System.out.print(a + " ");
        add(b);
        System.out.print(b + "");
    }
}

结果:-128 127

分析:包装类但是final的,所以在add方法中只是新创建了一个对象,没有实际改变b的值,也就是说add方法没有对b造成任何改变,++a先自动拆箱得到byte类型数据127,再+1发生越界得到-128,最后自动装箱得到Byte类型数据-128

标签:test1,ch,Java,String,System,str,习题,public
来源: https://www.cnblogs.com/edmond58/p/16098667.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有