分析代码

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

基本数据类型:

public class Test1 {
/*
* 正确的是 a c d
* a. byte b = 1 + 1;   //  右边是一个数,给b直接赋值
* b. byte b = 1; b = b + 1; //两边类型不一致,b=(byte)(b+1);
* c. byte b = 1; b = b += 1;  //b自身加一,再给b赋值  
* d. byte b = 1; b = ++b;  //b自增后赋值

*/
}

内部类对外部类的所有成员都可以可访问:

/**
 * 在打印语句中如何打印这3个x变量?
 
class A {
    int x = 1;
 
    class B {
        int x = 2;
 
        void func() {
            int x = 3;
           System.out.println(new A().x+new B().x+ x );//打印3个x变量,调用外部成员变量,并访问文类变量。
        }
    }
}
 * @author Administrator
 *
 */

public class Test5 {
/**
* 5、 定义一个包含私有成员变量和函数的类,再定义一个内部类,在内部类函数中访问外
* 部成员变量,并调用外部函数。在外部类函数中创建内部类对象,调用内部类函数。
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new Outer().method(3);
}
}
class Outer{
private int x=3;   //私有成员函数
void method(final int a){     //外部函数
final int b=4;
class Inter{        //定义内部类
void function(){
System.out.println(a+b+x);//访问外部成员变量和函数。
}
}
new Inter().function();//创建内部类,调用内部函数。
}

5、此代码考察的有继承,复写,类型提升。

分析运行结果,说明原理。(没有分析结果不得分)
    class A {
            void fun1() {
                  System.out.println(fun2());
            }
            int fun2() {
                    return 123;
            }
    }
     public class B extends A {
            int fun2() {
                     return 456;//复写父类的fun2,返回的是456
             }


            public static void main(String args[]) {
            
                    B b = new B();//创建子类对象
            
                    b.fun1();//因为子类复写了父类的方法,所以调用方法之后,返回的是复写之后的值,因此为456
                    
               // 此语句是类型提升,向上转型,相当于 A a=new Test8();能转换的是父类的引用指向了自己的子类对象,
                                                       该应用可以被提升,也可以强制转换.自始至终都是子类对象在做着变化。
                   
                    A a = b;
                    
                    a.fun1();//因此输出的还是456
            }
    }
              运行结果为:456
                456
 * @param args
 */

6、

public class Test8 {
/**
* 8、 写出以下代码执行结果,分析为什么?(没有分析结果不得分)
* @param args
*/
    public static void main(String[] args) {
                String s = "abc";
                s.substring(1);//取字符串中索引值为‘1’(包括)后的字符串作为子串,值为bc,而字符串不改变
                s.replace("bc", "xyz");//替换字符串中指定的字符,方法调用后,而原来的字符串不发生改变
               System.out.println(s); 
               String value = new String ("abc");//相当于创建了两个对象,一个是"abc"对象,
                                                  //存储在常量空间中,一个是使用关键字为对象value申请空间。
               System.out.println(s == value);//如上所述,所以不相等
        }
}
       /*
        * 运行结果为:  abc   false
        */












---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值