数据类型:
C#:String与StringBuilder
Java:String与StringBuffer
第一个不习惯是string的第一个字母必须大写了。
第二个不习惯是int得写成Integer了,虽然可以定义int i=0,但是对于泛型等用法必须ArrayList<Integer>。
常用集合类比较:
C# :HashTable List<T> Dictionary<T,K>
Java:HashTable List(包括:ArrayList<T>,LinkedList<T>) Map<T,K>(包括:HashMap<T,K>【这个无序】,SortedMap<T,K>【这个按key排序】,LinkedHashMap<T,K>【这个按存储顺序】)
Set(包括:HashSet<T>, SoredSet<T>)
Set:不能包含重复的元素;
List:可以包含重复的元素。
对字典key大小写的区分:
CaseInsensitiveMap—不区分大小写的无序map;
LinkedCaseInsensitiveMap—不区分大小写的有序map;
import org.apache.commons.collections.map.CaseInsensitiveMap;//注意导包 Map<String,String> stationmap=new CaseInsensitiveMap()
集合的类还是挺多的,比较的我头差点都大了,最后才找出这种简单的对应关系。
Stack 和 Queue:
C# :Stack<T> Queue<T>
Java:Stack<T> Queue(包括四个:LinkedBlockingQueue<T>、ArrayBlockingQueue<T>、PriorityBlockingQueue<T>、DelayQueue<T>)
Stack用法基本一致,Queue用法与名称基本上差天与地,下面有详细解答。
Java Queue方法名称和C#不同:
Java Queue 的相关方法:
add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常
remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常
element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常
offer 添加一个元素并返回true 如果队列已满,则返回false
poll 移除并返问队列头部的元素 如果队列为空,则返回null
peek 返回队列头部的元素 如果队列为空,则返回null
put 添加一个元素 如果队列满,则阻塞
take 移除并返回队列头部的元素 如果队列为空,则阻塞
更详细的参考文章链接:http://www.cnblogs.com/end/archive/2012/10/25/2738493.html
迭代语法:
C# :foreach(object o in objList){} 实现迭代的接口名称为:IEnumerable
Java:foreach(object o : objList){} 实现迭代的接口名称为: Iterable
可变参数:
C# :void Sum(params int[] list){} 以params 为关键字
Java:void sum(int ...list){} 以“...“三个点为关键字
枚举,Java的enum还能玩出花样:
C# :只能enum设置常量数值
Java:除了和C#一样的设置常量数值,Java仍保留了特殊类的基本功能,让玩家自己玩;而C#而做了特殊限制。
C#与Java字符串转枚举及枚举遍历区别:
C#的转换代码:
{
protected void Method()
{
A a = (A)Enum.Parse(typeof(A), "b");//枚举转换
}
public enum A
{
b,
c
}
}
Java的转换代码:
public class Test
{
protected void method()
{
A a = A.valueOf("b");
}
public enum A
{
b,
c
}
}
C#与Java方法泛型区别:
C#:
public T query<T>(String key) 用法:query<int>("aa");
Java:
public <T> T query(String key,Class<T> object) 用法:query("aa",int.class);
基本上一致,今天看的内容,基本就这么多了,所以就写到这里了,这么点内容,光比较整理,花了好几个小时,真悲催。