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;