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;






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值