欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【Java求职准备第一天】

程序员文章站 2022-04-25 19:13:04
...

  根据网上的求职信息,整理了必要的技能,准备恶补一下:

【Java求职准备第一天】


加油。

2018/07/04  


1. Java中遇到 i = i++;的问题。

int i=0;
i = i++;
system.out.println(“i=”+i);

输出结果为:i = 0;

因为jvm引入了临时变量的机制,在做计算的时候,会将 i 的值将放入临时变量存储,等计算完成,再从临时变量中取出 赋值给i。这样一来,i 的值依然为0。

如果用 temp 替代 i 来做演示就更明显了。 

int i = 0;
int temp = 0;
temp = i ++;
system.out.println("temp="+temp);
system.out.println("i="+i);
输出结果为: temp=0;    i = 1;

i 的值确实发生了变化,并可以输出,在第一个例子中,当 i 的值增加为  1 之后,重新被临时变量中的值覆盖掉了。所以看到的 i 值仍然是 0。


2.类型转换问题: char < short < int < float < double



3. object的方法:  

clone()equale(Object obj)finalize()getClass()hashCode()toString()

notify()notifyAll()wait()wait(long time)wait(long time,int count)


4. Math的常用方法:

round 四舍五入,往大数方向入,往小数方向舍。======》往它最接近的方向去转换,无关正负。

如果传递一个double类型的参数,返回的类型为long,如果传递一个float的参数,返回值类型为int。


floor 地板,指向下取整,返回不大于它的最大整数。====》会变小,数值方面。-11.8  -12.0

ceil 天花板,值向上取整,返回不小于它的最小整数。====》会变大,数值方面。-11.8  -11.0返回值为double




5. StringBuffer  StringBuilder 以及 String

        三者的主要区别在于 运行速度 和 线程安全上。 

       首先,运行速度上,StringBuilder  > StringBuffer > String 。

     String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。实例如下:

String a = "abc";
System.out.println(a);
a = a + "def";
System.out.println(a); 

代码先输出 abc,然后输出 abcdef。原理上看是修改了 a 字符串 的内容,而实际上在执行到第三行的之后,JVM对 a 字符串进行了 gc 回收操作,然后创建了一个新的字符串,用来存储“abcdef”的值。Java中对于String的处理是一旦创建是不能被修改的,所以Java中对于String的处理 是一个不断创建和不断回收的过程,所以执行非常慢。

     StringBuilder和StringBuffer的对象是变量,对变量进行操作就是直接对该对象进行更改,而不进行创建和回收的操作,所以速度要比String快很多。在使用了StringBuild之后,实例如下:

String  a = "abc"+"def";
StringBuilder sb = new StringBuilder().append("abc").append("def");
System.out.println(a);
System.out.println(sb。toString());

可以发现,StringBuilder的执行速度并没有String的执行速度快,这是因为String a = "abc"+"def" 的作用等同于

String  a = “abcdef” 。

 如果写成以下形式,执行速度就不一样了:

String a = "abc";
String b = "def";
String a = a + b; 
System.out.println(a);
   如此一来,Jvm就会不断的创建和回收 String对象,从而实现其功能。


    然后,是线程安全的问题。

        三者中,只有StringBuffer是线程安全的。主要应用于缓存中。因为多数方法都是使用了synchronized修饰的,所以进行操作需要获取到同步方法的权限。StringBuilder的方法没有被sychronized关键字修饰,所以是不安全的。            


综上所述:

     在需要线程安全的情况下,应该使用StringBuffer。

    不考虑线程安全的情况下,应该使用StringBuilder,执行速度最快。

    在少量字符串操作的情况下,使用String最佳。


6. 字段属性是静态绑定的,如果 遇到不存在的对象调用成员变量,会出现检查性异常

 

8. 抽象类有没有构造函数:

      虽然抽象类不能被实例化,但可以有构造函数。由于抽象类的构造函数在实例化派生类之前发生,所以,可以在这个阶段初始化抽象类字段或执行其它与子类相关的代码。







相关标签: Java求职