欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[每日一练] Java 2020.7.28

程序员文章站 2022-03-06 15:57:51
1.关于以下application,说法正确是什么?public class Test { static int x=10; static {x+=5;} public static void main(String[] args) //4 { System.out.println("x="+x); } static{x/=3;};}//9A.4行与9行不能通过编译,因为缺少方法名和返回类型B.编译通过,执行结果是:x=5C...

1.关于以下application,说法正确是什么?

public class Test {
    static int x=10;
    static {x+=5;}
    public static void main(String[] args) //4
        {
        System.out.println("x="+x);
    }
    static{x/=3;};
}//9

A.4行与9行不能通过编译,因为缺少方法名和返回类型
B.编译通过,执行结果是:x=5
C.编译通过,执行结果是:x=3
D.9行不能通过编译,因为只能有一个静态初始化器

答案:B
解析:执行顺序:静态代码块先于主方法执行,静态代码块之间遵从代码顺序执行。
所以:先初始化静态变量x=10;//x=10
执行第一个静态代码块,x=x+5; //x=15
执行第二静态代码块 x=x/3; //x=5
执行主方法: 输出x=5

衍生:
static 特点:
1、 随着类的加载而加载 / 类的资源
2、 只加载一次,就会一直存在,直到类消失就一起消失了
3、 优先于对象加载
4、 被所有对象所共享
5、 可以直接被类名调用

各种代码块:
1、 静态代码块:在类加载时就加载,并且只被加载一次,一般用于项目的初始化
2、 构造代码块:在创建对象时会自动调用,每次创建对象都会被调用
3、 局部代码块:方法里的代码块

Java初始化顺序:
1 继承体系的所有静态成员初始化(先父类,后子类)
2 父类初始化完成(普通成员的初始化–>构造函数的调用)
3 子类初始化(普通成员–>构造函数)
eg:

package cn.tedu.zy;
public class B extends A{     
	static{         System.out.println("子类静态代码块");   
	}    
	public B(){        
		System.out.println("子类构造方法");    
	} 
	{         
		System.out.println("子类初始化块");    
	}    
	
	public static void main(String[] args){      
           new B();   
           } 
}
class A{    
	 static {    
		 System.out.println("父类静态代码块");    
		 }     
	 public A(){         
	     System.out.println("父类构造方法");  
	 }
	 {
		 System.out.println("父类初始化块");   
	 } 
}

输出结果为:
[每日一练] Java 2020.7.28
父类静态代码块 ->子类静态代码块 ->父类初始化块 ->父类构造方法 ->子类初始化块
->子类构造方法

2.下面关于Spring的说法中错误的是( )
A.Spring是一系列轻量级Java EE框架的集合
B.Spring中包含一个“依赖注入”模式的实现
C.使用Spring可以实现声明式事务
D.Spring提供了AOP方式的日志系统

错解:A 答案:D
解析:Spring并没有为我们提供日志系统,我们需要使用AOP(面向方面编程)的方式,借助Spring与日志系统log4j实现我们自己的日志系统
*衍生: AOP即面向切面编程,通过预编译方式和运行期动态实现程序功能的统一维护的一种技术

3.关于Java语言描述正确的是? ( )
A.java和C++都保留了指针
B.java和C++都有三个特征:封装、继承和多态
C.java的垃圾回收机制是指程序结束时系统自动回收内存
D.以上说法都不正确

错解:C 答案: B
解析:1.java没有指针
2.在程序运行的过程中,当发现有对象不再被使用或被赋值null,JVM则会将其清出内存

4.下面关于volatile的功能说法正确的是哪个 ()
A.原子性
B.有序性
C.可见性
D.持久性

错解:B C D 正解: B C
衍生:
1.volatile用与修饰实例变量和类变量,是一种维护线程安全的手段,作用是实现共享资源的可见性;
2.synchronized保证三大性,原子性,有序性,可见性
3.volatile保证有序性,可见性,不能保证原子性

本文地址:https://blog.csdn.net/XCNXYP/article/details/107628210

相关标签: Java 编程语言