note2019.5.7

本文详细解析了Java相关选择题的错误点,包括Map接口的子接口Hashtable和HashMap的特性、Java内存释放机制、final关键字的使用、线程启动方法start和run的区别、递推关系式、字符串方法toCharArray()用法、static和非static执行顺序、构造函数特点以及Java编译命令选项等内容。

早上选择题错误详解:


解:Map接口有两个经典的子接口分别是 Hashtable 和 Hashmap。
Hashtable 线程安全,不支持key和value为空,key不能重复,但value可以重复,不支持key和value为null。
Hashmap 非线程安全,支持key和value为空,key不能重复,但value可以重复,支持key和value为null。

接口中的所以方法都是抽象的-方法定义
接口中的值都是public static final的-常量值

在这里插入图片描述
A:垃圾回收程序是一般是在堆上分配空间不够的时候会自己进行一次GC,程序员不需要也不能主动释放内存。
B:Java的内存释放由垃圾回收程序来进行释放
C:在Java里,内存的释放由垃圾回收程序进行管理,程序员不能直接进行释放。
D:程序员可以调用System.gc()运行垃圾回收器,但是不能指定时间*。

在这里插入图片描述
final关键字可用于修饰类、变量和方法。final修饰的类不能被继承,final修饰的方法不能被重写,final修饰的变量不可被修改,一旦获得初始值,该变量就不能被重新赋值。

接口是一种特殊的抽象类。其中,成员变量都是默认public static final修饰的,方法都是public abstract修饰的,并且除了default和static的以外,只有声明,没有方法体。

在这里插入图片描述
A 选项在 final 定义的方法里,不是必须要用 final 定义变量。
B final 定义的变量,可以在不是必须要在定义的同时完成初始化,也可以在构造方法中完成初始化。
C 正确,final修饰方法,不能被子类重写,但是可以被重载。
D final 定义变量,可以用 static 也可以不用。

1) start:
  用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法,这里方法 run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。
2) run:
  run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的。总结:调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。这两个方法应该都比较熟悉,把需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由jvm的内存机制规定的。并且run()方法必须是public访问权限,返回值类型为void。

如果用1m的方块覆盖mn区域,递推关系式为f(n) = f(n-1) + f(n-m),(n > m)。

在这里插入图片描述
看到的一个不错的思路!!

toCharArray()的用法:将字符串对象中的字符转换为一个字符数组

在这里插入图片描述
直接上来就讲static 非static的执行顺序把人都绕晕了。我来讲一下我的分析。看了就明白了。程序的入口是main方法,从这里开始分析,本题main方法中语句为 Test t2=new Test(),在执行这句话的时候,首先会去加载Test类的相关信息,同时执行类中的static代码块和static变量(按源代码声明顺序执行)。对于本题而言,即Public static Test t1=new Test()和static (sysout B)。但是执行Public static Test t1=new Test()这句代码的时候,由于new了对象,所以会去调用构造块(每一次new对象都会调用构造块),即本题中{sysout A}。接着程序执行static {sysout B}静态代码块。至此,main方法中Test t2=new Test()语句的左边执行完毕,接着执行右边,new 对象又会调用构造快,因此执行{sysout A}。故答案为ABA。如有问题请指正。

在这里插入图片描述
构造函数不能被继承,构造方法只能被显式或隐式的调用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

a选项-d即可设置系统属性
c选项一次编译多个java文件用javac *.java. 即可编译当前目录下的所有java文件
d选项-s指定存放生成的源文件的位置

在java 中,声明一个数组时,不能直接限定数组长度,只有在创建实例化对象时,才能对给定数组长度.。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值