1.) Primitives can be used as types (you don't need to declare a class to use their methods). For instance, in Java you would have to:
int val = 50;
Integer inte = new Integer(val);
System.out.println(inte.toString());
whereas in C# you can do this on the primitive directly:
int val = 50;
Console.WriteLine(val.ToString());
// or if you're really adventurous
Console.WriteLine((50).ToString());
I believe as of Java 1.5, Java supported automatic class promotion of a primitive whenever an object method was called (to make it syntactically equivalent to C#). However, the Java compiler still emits the object silently, making the bytecode equivalent of the former. C# does not require object instantiation.
Interesting.
7.) foreach. The foreach operator works on any object that implements the IEnumerable interface.
Java has foreach too, since 1.5, which, IIRC, works on any Collection, although there may be a more generic type that it works for.