1、default拒绝一切包外访问;protected接受包外的子类访问
要使某个类能被同一个包中的其他类访问,但不能被这个包以外的类访问,可以该类不加任何关键字
2、在正则表达式中:大写表示“非”,d表示digit数字。非数字就是\D, w表示word,非单词就是\W,\d:表示数字,等同于[0-9]
3、线程执行:
假设两线程为A、B,设有3种情况:
1.AB不并发:此时相当于两个方法顺序执行。A执行完后a=-1,B使用-1作为a的初值,B执行完后a=-2
2.AB完全并发:此时读写冲突,相当于只有一个线程对a的读写最终生效。相同于方法只执行了一次。此时a=-1
3.AB部分并发:假设A先进行第一次读写,得到a=1;之后A的读写被B覆盖了。B使用用1作为a的初值,B执行完后a=0
4、异常捕获
try:可能发生异常的语句
catch:捕获,并处理异常(printStackTrace()用来跟踪异常事件发生时执行堆栈的内容)
throw:方法内部抛异常
throws:声明方法异常
finaly:代码中无论是否有异常都会执行,清除资源
5、一个文件写入另一个文件,肯定是要先读取第一个文件的资源,所以是fileinputstream
6、存根(Stub)与以下哪种技术有关:动态链接
存根:如果一个类要实现一个接口,那么就要实现这个接口的全部方法,但这个类可能只需要其中的几个方法,所以会造成不必要的麻烦,存根就会实现这个接口,然后一个类实现存根类,这个类就不需要实现那么多的方法了。我是这么认为的,有一堵墙将本地Java虚拟机和远程Java虚拟机隔开。本地虚拟机创造stub对象,远程Java虚拟机创建skeleton对象,skeleton运行在远程对象所在的虚拟机上,接受来自stub对象的调用,这样墙两边就可以进行交流了,这种方式符合等到程序要运行时将目标文件动态进行链接的思想。
7、
这一题不应该错,不要想当然的认为count = count++就是count++。count = count++ 原理是 temp = count; count = count+1 ; count = temp; 因此count始终是0 这仅限于java 与c是不一样的
8、Deprecated 注解
可以修饰类、方法、变量,在java源码中被@Deprecated修饰的类、方法、变量等表示不建议使用的
9、c是面向过程,java和c++都是面向对象,面向对象的三大特征是:封装、继承、多态。
10、
把常用的tar解压命令总结下:
tar
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。
11、
^表示异或 就是相同是0 不同是1
14是1110
3是0011
所以14^3=1101,即13
12、Swing在不同的操作系统中显示相同的风格
13、抽象类和接口
接口中可以含有 变量和方法。但是要注意,接口中的变量会被隐式地指定为public static final变量(并且只能是public static final变量,用private修饰会报编译错误),而方法会被隐式地指定为public abstract方法且只能是public abstract方法(用其他关键字,比如private、protected、static、 final等修饰会报编译错误),并且接口中所有的方法不能有具体的实现
1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
2)抽象类不能用来创建对象;
14、Thread.yield()方法作用是:暂停当前正在执行的线程对象,并执行其他线程。在大多数情况下,yield()将导致线程从运行状态转到可运行状态,但有可能没有效果,没有多个线程,不需要礼让
15、
f(n)=f(n-1)+f(n-2)斐波那契数列
16、成员内部类中不能存在任何 static 的变量和方法,可以定义常量
因为非静态内部类是要依赖于外部类的实例,而静态变量和方法是不依赖于对象的,仅与类相关
简而言之:在加载静态域时,根本没有外部类,所在在非静态内部类中不能定义静态域或方法,编译不通过; 非静态内部类的作用域是实例级别
17、
1.外部类是不能直接使用内部类的成员和方法的,可先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法;
2.如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量, 可以使用 this 关键字,如:Outer.this.name
18、
装箱过程中调用的是Double类的valueOf( double d )方法, 而这里是100为int型, 所以编译会“cannot convert from int to Double”。
这涉及到Java的装箱和拆箱,100默认是int类型,对于Integer和Double装箱只能装对应的数据类型,不对应就会报错。