目录
一、运行程序之前: ...................................................................................................................- 7 -
1.Path 与 classpath 图解 ..................................................................................................- 7 -
2. Unicode 问题..................................................................................................................- 7 -
3.Eclipse 简便设置 .............................................................................................................- 7 -
二、基础知识: ...........................................................................................................................- 8 -
1.主方法中 args 是什么意思 .............................................................................................- 8 -
2.&和&&的区别 .................................................................................................................- 9 -
3.Byte 类型的-128 怎么表示 ............................................................................................- 9 -
4.==运算符 .........................................................................................................................- 9 -
5.Switch 问题 ......................................................................................................................- 9 -
6.什么是实例变量?什么是类变量....................................................................................- 9 -
7.三元运算 ........................................................................................................................ - 10 -
8.两种创建数组的内存情况 ............................................................................................ - 10 -
9.String 创建对象的内存问题 ........................................................................................ - 11 -
10.For 和 while 的区别 ................................................................................................... - 11 -
11.垃圾回收机制 .............................................................................................................. - 11 -
12.==与 equals 的区别 .................................................................................................. - 11 -
13.堆内存与栈内存的区别 .............................................................................................. - 14 -
14.变量不赋值与赋 null 的区别 ..................................................................................... - 14 -
15.可变参数为什么要定义在参数列表的后面 .............................................................. - 14 -
- 1 -
16.绝对路径和相对路径的区别 ...................................................................................... - 15 -
17.Final 关键字与宏的区别 ............................................................................................ - 15 -
18.0.01+0.09 ................................................................................................................... - 15 -
19.类文件冲突 .................................................................................................................. - 16 -
20.基本数据类型强制转换 .............................................................................................. - 17 -
21.创建对象时,内存问题 .............................................................................................. - 18 -
22.Null 属于什么类型 ..................................................................................................... - 18 -
三、Java 三大特性: .............................................................................................................. - 18 -
1.多态到底是什么 ............................................................................................................ - 18 -
2.关于继承与实现的问题 ................................................................................................ - 19 -
3.抽象关键字为什么不能和 private、static、final 共存 ........................................... - 19 -
4.抽象类和接口的区别 .................................................................................................... - 20 -
5.重载和重写的区别 ........................................................................................................ - 21 -
6.匿名内部类中对接口的方法为什么要加 public ........................................................ - 22 -
7.静态内部类的作用 ........................................................................................................ - 22 -
8.构造代码块和构造函数的区别 .................................................................................... - 22 -
9.匿名内部类 .................................................................................................................... - 22 -
10.This 与 this()的区别.............................................................................................. - 23 -
11.两种单例模式的区别 .................................................................................................. - 23 -
12.继承中的构造方法 ...................................................................................................... - 23 -
13.Java 接口和 C++的虚类区别.................................................................................... - 23 -
14.类初始化顺序 .............................................................................................................. - 23 -
- 2 -
15.普通代码块、静态代码块、构造代码块区别 .......................................................... - 24 -
16.可以调用私有构造方法吗 .......................................................................................... - 27 -
17.子类实例化的初始化过程 .......................................................................................... - 27 -
四、异常:................................................................................................................................ - 27 -
1.Throw 和 throws 的区别............................................................................................. - 27 -
2.Final,finally 和 finalize 的区别 ................................................................................... - 27 -
3.Java 异常处理机制总结 ............................................................................................... - 28 -
4.Java 异常几种处理方式 ............................................................................................... - 28 -
5.什么时候会用到自定义异常? .................................................................................... - 29 -
6.Try-catch-finally 的执行顺序 ..................................................................................... - 29 -
7.Error 与 exception 的区别.......................................................................................... - 30 -
8.为什么父类不抛异常,子类就不能抛异常 ................................................................. - 30 -
五、多线程: ............................................................................................................................ - 30 -
1.继承 Thread 类,为什么要继承 run 方法 ................................................................. - 30 -
2.进程和线程的区别 ........................................................................................................ - 30 -
3.出现死锁的条件 ............................................................................................................ - 31 -
4.Synchronized 锁与 lock 锁有什么区别 .................................................................... - 31 -
5.多线程中同步与锁 ........................................................................................................ - 31 -
6.多线程中 stop 为什么不合适 ...................................................................................... - 32 -
7.同步代码块和同步方法的区别 .................................................................................... - 32 -
8.Sleep 和 wait 的区别 ................................................................................................... - 32 -
9.为什么没有同步效果 .................................................................................................... - 32 -
- 3 -
10.线程的优先级 .............................................................................................................. - 33 -
11.线程获取名称 .............................................................................................................. - 33 -
12.线程的五个状态和特点 .............................................................................................. - 34 -
13.什么情况下使用 Thread 什么情况下使用 Runnable ........................................... - 34 -
14.同步函数锁问题 .......................................................................................................... - 35 -
六、常用 API ............................................................................................................................ - 35 -
1.StringBuffer 与 StringBuilder 的区别 ...................................................................... - 35 -
2.Math 随机数问题 ......................................................................................................... - 35 -
3.String s="a"+"b"+"c"内存创建了几个对象 ............................................................ - 35 -
4.String 类为什么复写 Object 类的 equals 方法 ....................................................... - 36 -
七、IO ....................................................................................................................................... - 37 -
1.字节流复制文件 ............................................................................................................ - 37 -
2.怎么删除带内容的文件夹 ............................................................................................ - 38 -
4.FileWriter 默认缓冲区的大小 ..................................................................................... - 39 -
5.视频文件切割 ................................................................................................................ - 39 -
6.批量更改文件名 ............................................................................................................ - 40 -
7.字符输入流中 write()方法 ...................................................................................... - 40 -
八、集合框架 ............................................................................................................................ - 41 -
1.List 和 Array 数组之间怎么互相转换 ......................................................................... - 41 -
2.集合框架中容器简单用法 ............................................................................................ - 41 -
4.Hashtable 和 hashMap 的区别 ................................................................................. - 41 -
5.Iterator 和 for 的区别 .................................................................................................. - 42 -
- 4 -
6.LinkedList 为什么有索引还慢 .................................................................................... - 42 -
九、网络编程 ............................................................................................................................ - 42 -
1.正则表达式获取字符串中 ip 地址 ............................................................................... - 42 -
十、高新部分 ............................................................................................................................ - 43 -
1.反射手段创建类对象 .................................................................................................... - 43 -
2.Invoke 方法 ................................................................................................................... - 43 -
3.3 种获取字节码的方式什么时候用 ............................................................................. - 44 -
5.动态代理原理 ................................................................................................................ - 44 -
6.javaBean 特点 .............................................................................................................. - 45 -
7.如何用反射得到数组类型 ............................................................................................ - 45 -
8.类加载器有什么用 ........................................................................................................ - 46 -
9.GetAttribute 和 getParameter 的区别 .................................................................... - 46 -
10.JVM 加载 class 文件的原理机制 .............................................................................. - 47 -
11.泛型与 C++模板有什么区别..................................................................................... - 51 -
12.怎样通过反射获取@Test 注解类 .............................................................................. - 52 -
13.ArrayList 代理 ............................................................................................................ - 52 -
14.注解是什么 .................................................................................................................. - 53 -
15.Java 泛型擦除 ............................................................................................................. - 53 -
十一、经典问题 ........................................................................................................................ - 55 -
1.金额转换问题 ................................................................................................................ - 55 -
2.阶乘后连续 0 个数问题 ................................................................................................ - 55 -
3.质数问题 ........................................................................................................................ - 56 -
- 5 -
4.数字黑洞问题(尚未解决哦) .................................................................................... - 56 -
5.百鸡问题 ......................................................................................................................... - 57 -
6.1~1000 累乘后面有多少个零问题 ............................................................................. - 57 -
7.猴子分桃问题(尚未解决哦) .................................................................................... - 57 -
8.蚂蚁爬木杆问题 ............................................................................................................ - 58 -
9.螺旋矩阵问题 ................................................................................................................ - 58 -
10.数字转换大小写问题 .................................................................................................. - 59 -
11.数组去除重复问题 ...................................................................................................... - 60 -
12.希尔排序 ...................................................................................................................... - 60 -
- 6 -
一、运行程序之前:
1.Path 与 classpath 图解
答案:path 顺序:
classpath 顺序:
2. Unicode 问题
答案 :Unicode 规范中推荐的标记字节顺序的方法是 BOM。
①所以在转换为 Unicode 是加入了 BOM (Byte Order Mark) 可以理解为采用那种排
序方式吧。
②如果接收者收到 FEFF(-1,-2),就表明这个字节流是 Big-Endian 的;如果收到
FFFE(-2,-1),就表明这个字节流是 Little-Endian 的。
③在 Java 中直接使用 Unicode 转码时会按照 UTF-16LE 的方式拆分,并加上 BOM
所以就是 FFFE(-2,-1),这就是为什么会有-2,-1 了。
④UTF8 字节没有顺序,所以它可以被用来检测一个字节流是否是 UTF-8 编码的,所
以在 UTF-8 中没有这个内容,我们平时用 UTF-8 比较多,所以看不到这个。
3.Eclipse 简便设置
答案:①Eclipse 中代码编辑背景颜色修改:代码编辑界面默认颜色为白色。对于长期使用
- 7 -
电脑编程的人来说,白色很刺激我们的眼睛,所以改变 workspace 的背景色,可以使眼睛
舒服一些。设置方法如下:
A)打开 window / Preference,弹出 Preference 面板
B)展开 General 标签,选中 Editors 选项,展开。
C)选中 Text Editors,右边出现 TestEditors 面板。 面板中有这样一个选项:
Appearance color options;其中是各种板块颜色的设置,其中有一项是 background
color,勾掉 System Default,点击'color',弹出颜色选择面板,选择喜好的颜色,单击确
定。
注:背景颜色眼科专家推荐:色调 85,饱和度,123,亮度 205。文档都不再是刺眼
的白底黑字,而是非常柔和的豆沙绿色,这个色调是眼科专家配置的,长时间使用会很有效
的缓解眼睛疲劳保护眼睛。
D)返回 Test Editors,单击 Apply 即可。展开 TestEditors,还有其他选项,比如对
错误提示的颜色样式,可根据需要尝试更改一下。
②Eclipse 字体大小调整:Window / Preferences / General / Appearance /ColorsAnd
Fonts ,在右边的对话框里选择 Java- Java Editor Text Font,点击出现的编辑(Edit)按
钮,可以设置显示在在主窗体中程序的字体大小,设置完之后点击右下角的应用(Apply),
最后点击确定(OK)即可。
Xml 文件字体大小的调整: window / preferences / General / appearance / colors
and fonts /Basic / "Text font " ,然后点击 Edit,可以设置字体的大小。
注:上述的方法只是在 Eclipse 的一个简单的背景方案设置,Eclipse 里还可以使用专
门的插件对代码背景进行设置,可查看《Eclipse 插件:Eclipse Color Theme》一文。
eclipse 更改 xml 文件,txt 文件,property 文件等文件编辑器的字体设
置:window--preferences--General--appearance--colors and fonts--Basic-- "Text
font "
③ Eclipse 代码自动补全
在做 Eclipse 项目的时候,发现代码补全功能不太好,总是需要在点击 “.”号之后才
能出现代码提示的功能。不想 Visual Studio 里面点击一个字母就出现代码提示。当然 Visual
Studio 里面如果增加了 Visual Assistant 那就更加如虎添翼了。所以 google 了一下 Eclipse
里面怎么也实现和 Visual Studiao 一样的代码补全功能。下面是搜索到的文章。
打开 Eclipse-> Window -> Perferences,会打开个 Perferences 的设置界面.
找到 Java 下的 Editor 下的 Content Assist , 右边出现的选项中,有一个 Auto
activationtriggers for Java:会看到只有一个"."存在。表示:只有输入"."之后才会有代码提
示,我们要修改的地方就是这里,将“.”改为“.abcdefghijklmnopqrstuvwxyz”即可。
二、基础知识:
1.主方法中 args 是什么意思
答案:String[] args :是保存运行 main 函数时输入的参数的字符串数组,当在 cmd 运行
时,输入: java test a b c,数组就会将 abc 保存起来: args[0] = a; args[1] = b; args[2]
= c;这些变量在程序中是可以调用的
- 8 -