面向對象:類和對象/封裝/繼承/多態/抽象接口/枚舉/反射/String

類和對象

類文件後綴:.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);

Object:萬物皆對象

沒有值C#複雜的struct/class繼承體系

反射

得到類型信息:

  • getClass(),相似於getType()
  • class屬性,相似於typeof

    Class c1 = o.getClass(); Class c2 = Object.class;

註釋(Annotation)

使用 @ 符號

@Override protected void Learn(double score) { super.Learn(score); }

聲明,關鍵字是@interface

import java.lang.annotation.*; public @interface Override { }

經常使用標註(Annotation)

  • @Override:檢查/確保當前方法是override/實現的父類/接口方法
  • @Deprecated:標記「過時」
  • @Target:指明Annotation能用於哪些目標元素
  • @Inherited

String和StringBuilder

沒有內插,可用String.format()替代

System.out.println(String.format("源棧歡迎你,%s同窗,你的成績是%f分", "周丁浩", 98.5));

相關文章
相關標籤/搜索