精华内容
下载资源
问答
  • 以下代码执行后输出结果为() public class Test { public static Test t1=new Test(); { System.out.println("blockA"); } static { System.out.println("blockB"); } public static void main(String...

     题目:

    以下代码执行后输出结果为()

    public class Test {
    	public static Test t1=new Test();
    	{
    		System.out.println("blockA");
    	}
    	static
    	{
    		System.out.println("blockB");
    	}
    	public static void main(String[] args) 
    	{
    		Test t2=new Test();		
    	}
    }
    答案:

    blockA
    blockB
    blockA


    理解如下:
     在调用main方法前先装载Test类,装载Test.class,装载时按顺序做静态成员初始化,即先实例化t1,执行构造代码块,打印blockA,在执行静态代码块,打印blockB,后面实例化t2,执行构造代码块,打印blockA                                         


    开始试图执行类Test的main方法,发现该类并没有被装载,也就是说虚拟机当前不包含该类的二进制代表,于是虚拟机使用ClassLoader试图寻找这样的二进制代表。如果这个进程失败,则抛出一个异常。类被装载后同时在main方法被调用之前,必须对类Test与其它类型进行链接然后初始化。链接包含三个阶段:检验,准备和解析。检验检查被装载的主类的符号和语义,准备则创建类或接口的静态域以及把这些域初始化为标准的默认值,解析负责检查主类对其它类或接口的符号引用,在这一步它是可选的。类的初始化是对类中声明的静态初始化函数和静态域的初始化构造方法的执行。一个类在初始化之前它的父类必须被初始化。

    分析源码结构{}将多行代码封装在一起,形成代码块。





    展开全文
  • 创建Nexus S 4.1.1上最后就可以在T2上输出出来,在Galaxy Nexus 4.2.2上T2内容就无法输出,以前完整工程在实体机一台HTC4.0.4机器上也能正确运行,但在一台华为4.2.2上就无法得出正确结果*/
  • 这里我直接先把结论写出来,下面会有代码帮助大家理解:在swich中会先执行完所有case才会执行default,其次如果case或default成立后,可其并没有bredk语句,那么他会输出所有能输出的语句直到遇见break或者...

    case与default的关系

    这里我直接先把结论写出来,下面会有代码帮助大家理解:在swich中会先执行完所有的case后才会执行default,其次如果case或default成立后,可其后并没有bredk语句,那么他会输出其后所有能输出的语句直到遇见break或者程序到底,这里也许有同学会问,default不是放置在case最后吗?的确我们编写程序时会将他放在swich最后,可它一样可以放在中间这时候,如果不在default后加break,他会一直执行下去;

    话不多说先上代码:

    例题1:
    运行以下程序后,如果从键盘上输入china#,那么输出结果为( )。

    #include  <stdio.h> 
    void main()
    {
       int v1=0,v2=0;
       char ch;
       while ((ch=getchar())!='#')
            switch (ch)
             {
               case 'a':
               case 'h':
               default:
                       v1++;
              case '0':
                     v2++;
             }
           printf("%d,%d\n",v1,v2);
    }
    

    答案为:5,5
    现在来解释一下吧,网上的说法好像都是模糊不清,不懂装懂一样
    程序中:输入china#,首先会获取c字符,c与所有的case进行匹配会发现并没有成立的case,此时会执行default,并且应为default是在中间,且其后没有break,所以会执行其后所有的语句也就是v1++;v2++都会执行,其他没有匹配的case也 一样,所以c,i,n都是属于上述情形,可a,h则是因为case成立后其后没有break语句所以将其后的语句都执行,所以a,h也会执行v1++,v2++;
    所以v1++,v2++;执行了5次。

    其次再给大家上一段case成立后不加break,对其后代码的影响;

    #include  <stdio.h>
    void main()
    {
    int v1 = 0, v2 = 0;
    char ch;
    while ((ch = getchar()) != '#')
    switch (ch)
    {
    case 'a':
    	printf("因为有a所以我输出了\n");
    case 'p':
    	printf("因为case a没有break所以我输出了\n");
    case 'l':
    	printf("因为case a没有break所以我输出了\n");
    case 'k':
    	printf("因为case a没有break所以我输出了\n");
    case 'u':
    	printf("因为case a没有break所以我输出了\n");
    default:
    	printf("因为case a没有break所以我输出了\n");
    }
    printf("%d,%d\n", v1, v2);
    }
    

    结果如下:

    a#
    因为有a所以我输出了
    因为case a没有break所以我输出了
    因为case a没有break所以我输出了
    因为case a没有break所以我输出了
    因为case a没有break所以我输出了
    因为case a没有break所以我输出了
    0,0
    

    就先这样吧!

    展开全文
  • 以下代码执行后输出结果为(B ) public class ExceptionTest{ public void method(){ try{ System.out.println("进入到try块"); }catch (Exception e){ System.out.println("异常发生了!"); ...

    以下代码执行后输出结果为(B )

    public class ExceptionTest{
        public void method(){
            try{
                System.out.println("进入到try块");
            }catch (Exception e){
                 System.out.println("异常发生了!");
            }finally{
                System.out.println("进入到finally块");
            }
            System.out.println("后续代码");
     }
         public static void main(String[] args){
             ExceptionTest test = new ExceptionTest();
             test.method();
         }
     }
    

    A.进入到try块 异常发生了! 进入到finally块 后续代码
    B.进入到try块 进入到finally块 后续代码
    C.进入到try块 后续代码
    D.异常发生了! 后续代码

    结论
        1、不管有没有异常,finally中的代码都会执行
       2、当try、catch中有return时,finally中的代码依然会继续执行
       3、finally是在return后面的表达式运算之后执行的,此时并没有返回运算之后的值,而是把值保存起来,不管finally对该值做任何的改变,返回的值都不会改变,依然返回保存起来的值。也就是说方法的返回值是在finally运算之前就确定了的。
       4、finally代码中最好不要包含return,程序会提前退出,也就是说返回的值不是try或catch中的值

    展开全文
  • 动手写下代码,通过编译,执行后结果反推理论过程,是最好思维理解方式。 看图说话 java虚拟机类加载过程 我们主要理解以下两个个过程: 准备:变量分配内存,并将其初始化为默认值。 初始化:使用...

    写在前面

    动手写下代码,通过编译,执行后从结果反推理论的过程,是最好的思维理解方式。

    看图说话

    java虚拟机的类加载过程

    在这里插入图片描述
    我们主要理解以下两个个过程:

    • 准备:为类的变量分配内存,并将其初始化为默认值。
    • 初始化:使用new关键字实例化对象的时候会触发初始化过程:为静态变量赋值

    代码解析

    /**
     * JVM--类的加载过程
     *
     * @author zhuhuix
     * @date 2020-05-15
     */
    public class ClassLoader {
        public static ClassLoader instance = new ClassLoader();
        private int a;
        private static int b = 1;
    
        public ClassLoader() {
            a++;
            System.out.println("a:"+a+"," +"b:"+b++);
        }
    
        public static void main(String[] args) {
            ClassLoader c1 = new ClassLoader();
            ClassLoader c2 = new ClassLoader();
    
            System.out.println(instance.hashCode());
            System.out.println(c1.hashCode());
            System.out.println(c2.hashCode());
        }
    
    }
    
    

    -准备:instance对象初化始值为null,a初始化值为0,b初始化值为0
    在这里插入图片描述

    • 初始化:以下三个new关键字实例化对象时都会触发初始化过程
      在这里插入图片描述
    instance对象的初始化
    • instance静态对象在准备阶段内存分配初始化值为null
    • 通过new关键字实例化instance对象,并触发构造方法
    • 由于这时候静态变量b还没有完成初始化,即b的值仍然为初始化值0,所以构造方法中输出的b值为初始化值0
    • 构造方法执行完成后,初始化过程才能对静态变量完成赋值,即b=1
      在这里插入图片描述
    c1,c2对象的构造
    • 通过new关键字实例化c1对象,并触发构造方法
    • 由于这时候静态变量b已完成初始化,即b的值已赋值为1,所以构造方法中输出的b值为1
    • c1对象构造方法执行完成后,静态变量b++变为了b=2
    • 再通过new关键字实例化c2对象,并触发构造方法
    • 由于这时候静态变量b已变为2,所以构造方法中输出的b值为2
    • c2对象构造方法执行完成后,静态变量b++变为了3
      在这里插入图片描述
    结果输出

    在这里插入图片描述

    写在后面

    通过对每个技术概念的理解与动手实践,能检验对概念的理解与认知。文章中的样例代码,都是自己手把手写的且通过调试运行,贵在真实。

    展开全文
  • 以下代码执行后输出结果为( ) 123456789101112131415public class Test{ public static Test t1 = new Test(); { System.out.println("blockA"); } static { System.out.println("blockB")
  • 【单选题】放大电路的工作方式有甲类、乙类和甲乙类等,其中甲乙类放大器中放大管的导通角 。【单选题】以下标识符中不合法的是( )。【填空题】完成一个对象的...【简答题】【单选题】以下代码执行后的输出结果为...
  • JavaSE代码阅读题

    2020-07-20 19:40:27
    1、下列语句执行后,变量a、c值分别(a=82,c=1) int x=182; c=x/100; a=x%100; 2、应用程序main方法中有以下语句,则输出的结果是(12.5) String s1=”0.5”, s2=”12”; double x=Double.parseDouble(s1); ...
  • 【单选题】以下赋值语句中合法的是【单选题】字符串:s= abcde',n=len(s)。...)的输出结果为( )【单选题】执行下面代码后,程序运行的结果为:( )【单选题】下列表达式的值为True的是()【单选题】我们通过使用turt...
  • 合并指令的执行结果会使队列增大。 然而,老谋深算莱因哈特早已在战略上取得了主动。在交战中,他可以通过庞大情报网络随时监听杨威利舰队调动指令。 在杨威利发布指令调动舰队同时,莱因哈特为了及时...
  • 在上一节中测试开发环境时,在cmd(命令行界面)中输入python就是执行Python安装目录下python.exe,这个程序就是python语言解释...在cmd里执行python,进入解释器画面输入以下语句按回车执行看看输出结果。>>> 1 ...
  • 下面代码的输出结果是 s =[“seashell”,“gold”,“pink”,“brown”,“purple”,“tomato”] print(s[1:4:2])【填空题】依次填写以下Python语句的执行结果: first, *middles, last = range(6)执行后,middles的值...
  • 9.4 返回更新后的行 232 9.5 求解顺序 233 9.5.1 行求解顺序 233 9.5.2 规则求解顺序 235 9.6 聚合 237 9.7 迭代 237 9.7.1 一个例子 238 9.7.2 PRESENTV与空值 239 9.8 查找表 240 9.9 空值 242 9.10 ...
  • Java方法练习题

    2020-07-06 01:17:47
    选择题 1、下列代码的运行结果为:C 2、下列代码运行的结果是() B 3、下列语句的执行结果为() D ...8、以下代码的输出结果是什么? D 9、以下代码的输出结果是什么? D 10、关于可变参数列表的描述正确
  • 这个就是预编译后的一个小结果,所以今天自己总结了一下。分为以下几个步骤来说。 大家先看看这段代码 console.log(a); var a = 1; 结果什么变量的声明在输出的下面,却没有报错?值什么是undefined? 大家...
  • Java访问权限控制源代码 1个目标文件 摘要:Java源码,文件操作,权限控制 Java访问权限控制,Java操作文件、写入文件分配合适权限,定义写到文件信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流...
  • c# 加密和解密相关代码

    热门讨论 2011-09-06 11:04:59
    果为二进制值11000,该值转换为十进制为24,所以得到加密结果为24。而解密过程也很简单,只是将加密 结果24与加密数字15 进行“异或”运算,将24 转换为二进制值11000,将15 转换为二进制值1111,进行“异 或”...
  • 2、支持与 cmd tree 命令相同格式目录树文本输出,可依据输出参数设置重复输出结果; 3、可指定需要列表 FTP 根目录、递归目录深度、结果输出格式(是否包含文件、是否输出文件大小信息等); 4、可指定单个...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 255
精华内容 102
关键字:

以下代码执行后的输出结果为