概述
1、java在编译或者运行的时候,通过classpath的路径进行搜索,找到编译或者运行的时候所需要得类。当然首先进行搜索的是JRE下面的rt.jar文件。
2、javac -classpath 可以动态的指定类搜索的路径。
3、c++源码编译之后,生成的是特定机器可以直接执行的文件。而java源码生成的是中间的字节码文件。这些字节码文件是需要放在jvm中运行的,jvm有多个平台版本,所以java具有跨平台性,而c++则没有。
4、jvm一种用软件虚拟出来的计算机,同时具有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有自己的指令集。这也是它的夸平台特性。
5、运行时的数据存储区有堆(heap)和堆栈(stack)。一般情况下,栈中存放的是临时数据,堆中存放的是程序分配的显式数据。
6、jar cf hello.jar HelloWorld.class java中给文件打成jar包(把class文件及其配制文件打包) jar xvf hello.jar--解压jar包至当前目录。
7、java web:在目录上面必须有文件夹 WEB-INF,在该文件夹下面存放类文件和类库文件,和配制文件web.xml。Servlet存活在web容器之中的。web文件的打包生成的是War包,因为java是跨平台的所以java web文件可以不经过任何的修改直接部署到java EE的容器之中。
8、静态变量值得是在类中用static来修饰的变量,在这种变量的访问中用 类名.变量名来访问。 成员变量指的是没有加static修饰的变量,他的生命周期由对象来决定。局部变量是定义在方法中的变量,他的生命周期由{}来决定。
9、在java中栈的优势是存取速度比较快,能够实现数据共享,在栈中数据的大小和生命周期必须是确定的。栈中主要存放基本数据类型(java中8种基本数据类型)。java中的堆是一个运行时数据区,他的生命周期不必实现告诉编译器。用于对象的存储。
10、引用数据类型存放的是数据所在的地址,基本数据类型存放的是数据的值。
11、== 在进行基本数据类型比较的时候比较的是实际的值是否相等,而用于比较引用类型的时候比较的是引用的地址是否相等。当用equal的时候,比较的是字符串序列是否相等,equal方法是可以覆盖和重写的。
12、类是一种抽象,对象是对类的实现。类是一个事物所有属性的集合。
13、java的继承只有单继承,就是说子类只能去继承一个父类,而不能继承多个父类。方法的覆盖只需要定义一个名字、参数、返回值都一样的方法即可达到父类方法被覆盖的目的。
14、方法的覆盖(重写)和重载是不同的概念。重载是创建一个方法名相同但参数不同的方法。覆盖是子类方法对父类方法的覆盖。(java用覆盖的方法实现多态,让子类拥有自己的方法实现)
15、静态变量对于一个类来讲只有一份。
16、在java中,使用super关键字加()的形式来为父类的构造方法提供参数,通过参数的数据和类型来决定调用哪一个构造方法。如果调用的父类是默认的无参数构造方法,组可以不必显式的使用super()。
17、抽象类是对一种东西提取出来的抽象概念,通过abstract class来实现,他不能进行实例化。除此之外跟普通的类是没有什么差别的。对于接口,他的所有的方法都是抽象的,可以包含静态变量,但是静态变量的值是不可修改的。定义接口用interface,通过implements来实现接口。
18、包是java程序中关于命名空间的一种手段,package用来把一个类定义在某个包下,import用来进行包导入。
19、8种基本数据类型 byte short int long float double Boolean char
20、int/integer int是基本数据类型,一般保存在栈内存中,可以用算数运算符进行加减乘除操作,在参数传递过程中直接传递它的值。Integer是int的包装类,其本质是一个类,一般存储在堆内存中,它的参数传递是它代表的对象的引用。
21、int的大小为4byte,为32bit。第一位是符号位。
22、以0开头的数字代表是八进制的,以0x开头的数字代表是十六进制的。
23、float类型的使用的时候,数字后面要加上F(了解数据类型的隐式转换)
24、BigDecimal类可以进行数据的精确计算(这个自己了解吧)
25、在java中不能用非0代表true,也不能用0代表false,只能用布尔型的true和false来进行条件判断。
26、char类型是可以存储汉字的,每个中文字符都有对应的Unicode编码。
27、String str1= “abc” ;String str2 = new String(“abc”);当用第一种方法创建字符串变量的时候,jvm会自动创建一个String对象,在创建该对象之前jvm会在String对象池中搜索该字符串是否已被创建,如果已被创建则直接返回一个引用,否则先创建再返回引用。对于第二种创建方法,会直接创建一个新的String对象并且返回一个引用给str2。
28、在java中,如果有大量的拼接字符串的需要的话,应该使用StringBuffer和StringBuilder类,他们可以避免不必要的String对象的产生,这样可以提高程序性能。其中StringBuilder线程是安全的线程。
29、String a = "中文"; String b = new String (a.getBytes(),"GBK") ; String c = new String (a.getBytes() , "UTF-8") ;
30、int[ ] arr = new int[ ] {1,2,3,4,5} ; String[ ] arr2 = new String[ 3]; 其实在java中数组本身就是一个类。
31、System.arraycopy()来拷贝数组,用=只是在拷贝了数据这个类的引用罢了。
32、二维数组的长度是不固定的,在实例化二维数组时,没有必要指定第二维的长度。每一个维度的元素个数都可以不尽相同啊!
33、Hashtable的方法是同步的,HashMap不能同步。HashTable不允许null值,HashMap允许null值。Hashtable使用Enumeration,HashMap使用Iterator。
34、进程是占用的CPU、内存等系统的基本单位,而线程是进程的执行单元。多进程的并发对于数据共享是很困难的,多线程非常容易。一个进程中的线程是可以互相通信的,不同进程之间的线程是不能互相通信的。线程只涉及到CPU的资源分配。
35、让一个类成为线程类的方式有两种,一个是实现javalang.Runnable接口,另一个是继承来自java.lang.Thread类。
36、
最后
以上就是还单身巨人为你收集整理的java程序员面试宝典总结笔记的全部内容,希望文章能够帮你解决java程序员面试宝典总结笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复