java整理(含一些和C++的一些不同之處)

1,方法與構造函數同名的問題

2,字節流和字符流

3,ArrayList 的默認大小


1,在java中

其實普通的類方法是可以和類名同名的,和構造方法唯一的區分就是,構造方法沒有返回值。

但是,在C++中不允許存在與類同名的函數(非構造函數),出錯: error C2380: type(s) preceding 'A' (constructor with return type, or illegal redefinition of current class-name?)
執行 cl.exe 時出錯.

2,關於字節流和字符流

. 下面哪個流類屬於面向字符的輸入流(  )

A  BufferedWriter           B  FileInputStream          C  ObjectInputStream          D  InputStreamReader

答案:D

解析:Java的IO操作中有面向字節(Byte)和麪向字符(Character)兩種方式。
面向字節的操作爲以8位爲單位對二進制的數據進行操作,對數據不進行轉換,這些類都是InputStream和OutputStream的子類。
面向字符的操作爲以字符爲單位對數據進行操作,在讀的時候將二進制數據轉爲字符,在寫的時候將字符轉爲二進制數據,這些類都是Reader和Writer的子類。

總結:以InputStream(輸入)/OutputStream(輸出)爲後綴的是字節流;

          以Reader(輸入)/Writer(輸出)爲後綴的是字符流。

3 ArrayList

ArrayList list = new ArrayList(20);中的list擴充幾次()

A 0     B 1     C 2      D 3

答案:A

解析:這裏有點迷惑人,大家都知道默認ArrayList的長度是10個,所以如果你要往list裏添加20個元素肯定要擴充一次(擴充爲原來的1.5倍),但是這裏顯示指明瞭需要多少空間,所以就一次性爲你分配這麼多空間,也就是不需要擴充了。


4,java中的緩存機制

對於java程序:

public class p35 {
   public static void main(String args[])
   {
	   int j=0;
	   for(int i=0;i<100;i++)
	   {
		   j=j++;
	   }
	   System.out.println(j);
   }
}
對於C++程序:

#include<iostream>
using namespace std;

void main(){
int j=0;
for(int i=0;i<100;i++)
  j=j++;
cout<<j<<endl;

}

java中輸出爲 0,而C++中輸出爲100;

因爲java用了中間緩存變量的機制,j=j++可換成如下寫法 temp=j; j=j+1; j=temp;






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章