新入职公司,根据公司要求,需要学习Java基本知识,对接下来的AEM培训做准备。下面时学习过程中对 Java 和 C# 的差异性的一点理解,如果有什么错误,请大家及时指正:
- Java 修饰符中多了一个默认属性,默认属性介于 private 和 protected 之间,同一个包内的类可以访问默认模式下的变量和方法(默认模式为前面不加任何修饰符)
- Static 变量引用
- C# 中Static 变量只可通过类名加.来访问
- Java 中Static 变量类实例加. 也可以访问
- Interface
- C# 中的Interface 不需要用到 implements 关键子去声明实现该接口
- Java 中 Interface 如果需要实现接口,需要用 implements 关键字
- 内部类
- C#内部类只需要直接使用 new 来初始化
- Java 内部类需要使用 类实例.new 方法来初始化
- 数据类型转换
- C# 中类型之间转换一般用 Parse 方法
- Java 中类型转换 用 valueOf() 方法
- Java StringBuffer 申请内存规则
- Java StringBuffer 调用 ensureCapacity 方法来申请内存,申请后内存大家应满足下者中的较大数:
- 当前占用内存数 * 2 + 2
- 需要申请的内存数 (ensureCapacity方法给的参数)
- Java StringBuffer 调用 ensureCapacity 方法来申请内存,申请后内存大家应满足下者中的较大数:
- Java 线程同步问题
- Java 线程同步只需要在可能出现多线程访问的公共变量前加上synchronized 关键子即可
- C# 采用 lock 来限制线程同步问题
- synchronized 也可与C#中的关键子lock 一样使用