- java在运行时才进行翻译指令
- Java是从C++语言改进重新设计
- Java 语言使用的字符码集是Unicode
- Java程序经编译后会产生byte code
- Java程序的种类有Applet, Application, Servlet
- 使用JDK工具生成的Java文档的文件格式是HTML
- 正确配置classpath的命令是
set classpath=C:\ProgramFiles\Java\jdk1.7.0_15\bin
- windows中环境变量PATH中含有多个路径时,路径和路径之间可以;来隔开
- 一个Java源文件中可以有多个类 但只可以有一个且必须有一个public修饰的与文件名同名的类,文件中的其他类则可以随意命名
- 每个Java程序只能有一个main方法
- 编译型语言:先将源代码编译成机器代码,然后机器执行机器码,执行效率高,依赖编译器,跨平台性差;解释型语言:源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行,依靠解释器、跨平台性好,执行速度慢、效率低;Java是解释型语言;低版本的jvm未必能执行高版本的Java编译后的文件
- 如果对象的引用被置为null,只是断开了当前线程栈帧中对该对象的引用关系,而垃圾收集器是运行在后台的线程,只有当用户线程运行到安全点(safe point)或者安全区域才会扫描对象引用关系,扫描到对象没有被引用则会标记对象,这时候仍然不会立即释放该对象内存,因为有些对象是可恢复的(在finalize方法中恢复引用 )。只有确定了对象无法恢复引用的时候才会清除对象内存 ,因此需要运行到下一个垃圾回收周期
- 用New创建的对象在JVM中通过GC Roots进行搜索判断是否可回收,但该对象可被回收时,如果需要也可执行finalize()方法自救
- 判断一个对象是否可以被垃圾回收条件为是否还有对该对象的引用(X)
引用计数法在JVM中不适用,因为会出现循环引用的问题,那么循环引用的对象就永远不能被回收 - java的垃圾收集机制主要针对新生代和老年代的内存进行回收,不同的垃圾收集算法针对不同的区域。所以java的垃圾收集算法使用的是分代回收。一般java的对象首先进入新生代的Eden区域,当进行GC的时候会回收新生代的区域,新生代一般采用复制收集算法,将活着的对象复制到survivor区域中,如果survivor区域装在不下,就查看老年代是否有足够的空间装下新生代中的对象,如果能装下就装下,否则老年代就执行FULLGC回收自己,老年代还是装不下,就会抛出OutOfMemory的异常
- 数组不是一个原生类
- 从1到2048的所有整数中1的出现的个数是 1615
- 中序遍历二叉排序树可以得到一个从小到大的有序序列
- break continue return 关键字能跳出循环
- 在方法外定义的变量被自动初始化,局部变量必须在使用之前做“手工”(由程序员进行)初始化
- 线性查找是从一列给定的值中按顺序进行搜索的过程.当采用线性查找时,要求元素列表有序无序均可
- java.swing不属于Java核心包
const char p1 = a;
char const p2 = b;
p1是指向常量的指针,所指向的内容不能变,所以改变p1指向的值是不对的。
p2是一个指针常量,它本身的指向不能改变,所以对p2的下标操作是不对的。
编译器会给String末尾自动加\o