【329天】我愛刷題系列088(2017.12.31)

叨叨兩句

  1. ~

牛客網——java專項練習067

1

java中,StringBuilder和StringBuffer的區別,下面說法錯誤的是?
正確答案: C java

A StringBuffer是線程安全的
B StringBuilder是非線程安全的
C StringBuffer對 String 類型進行改變的時候其實都等同於生成了一個新的 D String 對象,而後將指針指向新的 String 對象。
D 效率比較String<StringBuffer<StringBuilder,可是在 String S1 = 「This is only a」 + 「 simple」 + 「 test」時,String效率最高安全

效率:StringString(大姐,出生於JDK1.0時代) 不可變字符序列     <StringBuffer(二姐,出生於JDK1.0時代)  線程安全的可變字符序列    <StringBuilder(小妹,出生於JDK1.5時代) 非線程安全的可變字符序列   。Java中的String是一個類,而並不是基本數據類型。string是值傳入,不是引用傳入。 StringBuffer和StringBuilder能夠算是雙胞胎了,這二者的方法沒有很大區別。但在線程安全性方面,StringBuffer容許多線程進行字符操做。 這是由於在源代碼中StringBuffer的不少方法都被關鍵字 synchronized  修飾了,而StringBuilder沒有。 StringBuilder的效率比StringBuffer稍高,若是不考慮線程安全,StringBuilder應該是首選。另外,JVM運行程序主要的時間耗費是在建立對象和回收對象上。

2

說明輸出結果。多線程

package test;
import java.util.Date; 
public class SuperTest extends Date{ 
    private static final long serialVersionUID = 1L; 
    private void test(){ 
       System.out.println(super.getClass().getName()); 
    } 
      
    public static void main(String[]args){ 
       new SuperTest().test(); 
    } 
}

正確答案: C ui

A SuperTest
B SuperTest.class
C test.SuperTest
D test.SuperTest.class線程

TestSuper和Date的getClass都沒有重寫,他們都是調用Object的getClass,而Object的getClass做用是返回的是運行時的類的名字。這個運行時的類就是當前類,因此
super.getClass().getName()
返回的是test.SuperTest,與Date類無關
要返回Date類的名字須要寫super.getClass().getSuperclass()
1.首先 super.getClass() 是父類的getClass()方法,其父類是Date,它的getClass()方法是繼承自Object類並且沒有重寫,
因此就是調用object的getClass()方法。而看一下getclass的方法解釋以下圖
  
因此能夠知道是返回當前運行時的類。

2.在調用getName()方法而getName()是:包名+類名

3

針對如下代碼,哪些選項執行後是true的:()指針

class CompareReference{
   public static void main(String [] args){
   float f=42.0f;
   float f1[]=new float[2];
   float f2[]=new float[2];
   float[] f3=f1;
   long x=42;
   f1[0]=42.0f;
  }
}

正確答案: B C code

A f1==f2
B x==f1[0]
C f1==f3
D f2==f1[1]對象

BC正確,選項B解釋,java核心卷I中43頁有以下表述:兩個數值進行二元操做時,會有以下的轉換操做:
若是兩個操做數其中有一個是double類型,另外一個操做就會轉換爲double類型。
不然,若是其中一個操做數是float類型,另外一個將會轉換爲float類型。
不然,若是其中一個操做數是long類型,另外一個會轉換爲long類型。
不然,兩個操做數都轉換爲int類型。
故,x==f1[0]中,x將會轉換爲float類型。
相關文章
相關標籤/搜索