牛客错题总结 2月19日 15点07分

10、Try...catch...finally与直接throw的区别

原题:

public class ZeroTest {
    public static void main(String[] args) {
        try{
            int i = 100 / 0;
            System.out.print(i);
        }catch(Exception e){
            System.out.print(1);
            throw new RuntimeException();
        }finally{
            System.out.print(2);
        }
        System.out.print(3);
    }
}

 

我的错误想法:

我本来以为执行throw new RuntimeException();程序就会停止,谁知道finally语句执行地非常坚定,无论如何都要执行!

答案解析:

还是需要理解Try...catch...finally与直接throw的区别:try catch是直接处理,处理完成之后程序继续往下执行,throw则是将异常抛给它的上一级处理,程序便不往下执行了。本题的catch语句块里面,打印完1之后,又抛出了一个RuntimeException,程序并没有处理它,而是直接抛出,因此执行完finally语句块之后,程序终止了;

 

11、Java程序初始化顺序:

  1. 父类的静态代码块;

  2. 子类的静态代码块;

  3. 父类的普通代码块;

  4. 父类的构造方法;

  5. 子类的普通代码块;

  6. 子类的构造方法;

 

12、类实现多个接口的时候,只需要一个implements,多个接口通过逗号进行隔开,先继承类再实现接口;

class  A implements  B,C

 

13、线程执行逻辑

 

14、自动装箱

double d = 5.3e12; 相当于 5.3*10的12次方,科学计数法

double d = 3; 对 (自动转换类型)

Double d = 3; 错 (自动装箱的目标必须严格对应它拆箱后的类型

Double d = 3.0;对 (自动装箱)

 

15、线程安全的Map类有hashtable concurrentHashMap synchronizedMap

 

16、为什么一个负责任的Java程序员想使用嵌套类?

为了让非常专门的类的代码与和它一起工作的类联系起来;

为了支持产生特定事件的新的用户界面;

 

17、静态变量会默认赋初值,局部变量和final声明的变量必须手动赋初值

 

18、成员变量和局部变量的区别

1、成员变量是独立于方法外的变量,局部变量是类的方法中的变量;

1)、成员变量:包括实例变量类变量,用static修饰的是类变量,不用static修饰的是实例变量,所有类的成员变量可以通过this来引用; 2)、局部变量:包括形参,方法局部变量,代码块局部变量,存在于方法的参数列表和方法定义中以及代码块中。 2、成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及 static修饰;两者都可以定义成final型; 3、成员变量存储在堆,局部变量存储在栈。局部变量的作用域仅限于定义它的方法,在该方法的外部无法访问它。成员变量的作用域在整个类内部都是可见的,所有成员方法都可以使用它。如果访问权限允许,还可以在类的外部使用成员变量; 4、局部变量的生存周期与方法的执行期相同。当方法执行到定义局部变量的语句时,局部变量被创建;执行到它所在的作用域的最后一条语句时,局部变量被销毁。类的成员变量,如果是实例成员变量,它和对象的生存期相同。而静态成员变量的生存期是整个程序运行期; 5、成员变量在累加载或实例被创建时,系统自动分配内存空间,并在分配空间后自动为成员变量指定初始化值,初始化值为默认值,基本类型的默认值为0,复合类型的默认值为null。(被final修饰且没有static的必须显式赋值),局部变量在定义后必须经过显式初始化后才能使用,系统不会为局部变量执行初始化;

6、局部变量可以和成员变量 同名,且在使用时,局部变量具有更高的优先级,直接使用同名访问,访问的是局部变量,如需要访问成员变量可以用this.变量名访问;

 

19、x+y+""

System.out.println(x+y +""+(x+y)+y);

结果为:25255

  • 不论有什么运算,小括号的优先级都是最高的,先计算小括号中的运算,得到x+y +""+25+y;

  • 任何字符与字符串相加都是字符串,但是是有顺序的,字符串前面的按原来的格式相加,字符串后面的都按字符串相加,得到25+“”+25+5;

  • 上面的结果按字符串相加得到25255;

 

20、java集合框架图

 

21、一个Java源程序文件中定义几个类和接口,则编译该文件后生成几个以.class为后缀的字节码文件

 

22、一个.java文件中定义多个类

注意一下几点:

(1) public权限类只能有一个(也可以一个都没有,但最多只有一个);

(2)这个.java文件名只能是public 权限的类的类名;

(3)倘若这个文件中没有public 类,则它的.java文件的名字是随便的一个类名;

(4)当用javac命令生成编译这个.java 文件的时候,则会针对每一个类生成一个.class文件;

 

23、File类不能读写文件

File类不能读写文件,能够读写文件的是数据流(OutputStream和InputStream);

 

24、Java的Daemon线程,setDaemon( )设置必须要在start之前;

 

25、protected 修饰的成员变量,可以被该类自身、与它在同一个包中的其它类、在其它包中的该类的子类所访问;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值