類文件後綴:.java,java
包(namespace):項目上右鍵建立ide
package _17bang.CD.Yz;函數
引入(using),注意import的是一個「類」,不是名稱空間ui
import _17bang.YZ.Student;this
但能夠使用通配符 *,好比:spa
import _17bang.YZ.*;orm
沒有partial類對象
訪問修飾符:沒有關鍵字internal(不能顯式聲明,默認便可,package中可見)繼承
一個類文件只能有一個public類索引
static:能夠由對象調用(只warning不報錯)
快捷鍵生成:alt+shift+s,
構造函數間調用:
public Student(int age) { this(); }
沒有屬性,只有getter和setter。因此也沒有自動屬性等一系列相關的語法。
private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; }
沒有readonly關鍵字
final: 修飾變量/字段時,等同於 const
沒有索引器
析構函數
protected void finalize() { }
沒有static構造函數
頂級類不能static,內部類能夠
使用關鍵字extends表示繼承,super表示基類
public class OnlineStudent extends Student { public OnlineStudent(int age) { super(age); } }
final:修飾類/方法,同sealed
instanceof:同is,沒有as
Person fg = new Teacher(); System.out.println(fg instanceof Person); System.out.println(fg instanceof Teacher);
沒有virtual和override關鍵字,默認override(可用@Override標記)
沒有new的hide
沒有接口的顯式(explicit)實現
沒有struct
日期使用Calendar類:
Calendar date = Calendar.getInstance(); //不能直接new出 date.set(2002, 8, 15); date.add(Calendar.YEAR, 2); System.out.println(date.get(Calendar.DATE));
格式化日期用DateFormat類:
System.out.println(DateFormat.getDateInstance(DateFormat.FULL, Locale.CHINA).format(new Date()));
不能自行設置枚舉的底層數據
不能在枚舉和整數類型間轉換
枚舉的經常使用方法:
Grade[] grades = Grade.values(); Grade result = Grade.valueOf("Failed"); int index = Grade.Failed.ordinal(); System.out.println("..........." + index);
沒有值C#複雜的struct/class繼承體系
得到類型信息:
Class c1 = o.getClass(); Class c2 = Object.class;
使用 @ 符號
@Override protected void Learn(double score) { super.Learn(score); }
聲明,關鍵字是@interface
import java.lang.annotation.*; public @interface Override { }
經常使用標註(Annotation)
String和StringBuilder
沒有內插,可用String.format()替代
System.out.println(String.format("源棧歡迎你,%s同窗,你的成績是%f分", "周丁浩", 98.5));