java程序员面试宝典总结笔记

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、


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值