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;