国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Scjp筆記

2019-11-18 11:46:42
字體:
供稿:網(wǎng)友

  注:*表示0或多個(gè);+表示1個(gè)或多個(gè)
  Object-Oriented PRogramming
  1.ConstrUCtor
  沒有返回值
  假如只定義一個(gè)帶參數(shù)的constructor,則lose缺省的無參數(shù)的constructor,new xx()會(huì)出錯(cuò)。
  2.Source file layout:
  定義順序:Package – >import –> class declaration
  一個(gè)文件至少應(yīng)該有一個(gè)class,只能有一個(gè)public class,文件名必須要和public class的名稱一致,假如沒有public class,對(duì)文件名沒有限制。
  
  3.Package:
  假如文件中沒聲明Package,則class屬于缺省包,即沒有名字的包
  
  Identifiers,KeyWords,and Type
  1.Identifiers:
  開頭以Unicode letter,”_”和”$”。后面可以跟數(shù)字;(中文變量,方法名居然都可以!!!牛)
  大小寫敏感;
  沒有長(zhǎng)度限制。
  
  Warning:
  類名必須是ASCII的字母。因?yàn)楹芏辔募到y(tǒng)不支持UNICODE.(不過我試了一下,類名是中文的,Compile的時(shí)候是可以通過,Runtime時(shí)throw java.lang.NoClassDefFoundError)
  
  2.Keywords:
  幾個(gè) 很生僻的Keywords:
  transient,strictfp,volatile
  
  沒有g(shù)oto和const;沒有sizeof()。
  
  4.Basic Java Type:
  共8種。
  Boolean和integer Type之間不能轉(zhuǎn)化。
  
  5.Integral:
  Byte:8bit -2的7次方~2的7次方-1
  short:16bit
  int:32bit
  long:64bit
  
  6.Floating point
  float:32bit
  double:64bit
  
  浮點(diǎn)形默認(rèn)是double.
  float a = 1.02 //compile error
  float a = 1.02f or float a = 1.02F //correct
  
  7.類型的取值范圍
  Data TypeSize (bits)Initial ValueMin ValueMax Value
  boolean1false falsetrue
  Byte80-128 (-27)127 (27 – 1)
  Short160-215 215 - 1
  Char16‘/u0000’‘/u0000’ (0)‘/uFFFF’ (216 – 1)
  Int320-231 231 - 1
  Long640L-263 263 - 1
  Float320.0F1.4E-453.4028235E38
  Double640.04.9E-3241.7976931348623157E308
  
  8.Assignment of Reference Type
  基本類型的賦值是值的賦值;int x =6; int y = x;相當(dāng)于復(fù)制x的內(nèi)容到y(tǒng)上。
  對(duì)象的賦值不會(huì)賦值內(nèi)容,兩個(gè)對(duì)象的指針都是指向同一個(gè)object..
  
  9.Pass by Value
  Pass argument by Value. 當(dāng)方法的參數(shù)是對(duì)象的引用時(shí),參數(shù)的值是對(duì)象的地址,對(duì)象是可以在參數(shù)調(diào)用時(shí)改變的。
  Public class test{
  Public static void changeObject(MyDate ref){
  Ref = new MyDate(1,2,2002);
  }
  public static void main(String[] arv){
  MyDate d = new MyDate(3,3,1988);
  ChangeObject(d);
  }
  }
  結(jié)果是d還是為1988,3,3;因?yàn)閷?duì)象的地址是不變的。
  
  10.Java Coding Convention(編碼慣例)
  Package – 名詞且小寫
  Class--名詞且第一個(gè)字母大寫
  Interface—同Class
  Methods-動(dòng)詞且第一個(gè)字母小寫,分隔詞第一個(gè)字母大寫,不用”-“
  Variable—第一個(gè)字母小寫,不用”_”,”$”(對(duì)于inner class有意義)
  Constants—大寫并用”_”
  
  EXPression and Flow Control
  1.
  Local variables—Variable defined in method
  Instance variables—Variable defined outside method
  
  Instance variable initialize:
  byte,short,int,long,float,double:0
  boolean:false
  char:’/u0000’
  all reference type:null
  
  
  
  2.Bitwise logic Operators
  位邏輯運(yùn)算符作用于整形。(byte,char,short,int,long)
  
  3.>>
  右移是把第一個(gè)操作數(shù)/2的第二個(gè)操作數(shù)次方
  e.g
  128>>4 returns 128/(2的4次方)
  
  4.優(yōu)先級(jí)
  助記詞 運(yùn)算符類型 運(yùn)算符
  UlcerUnary+ - ++ – [[ rest...]],()cast
  AddictsArithmetic (and shift)* / % + - << >>
  ReallyRelational> < >= <= == !=
  LikeLogical (and bitwise)&& & ^
  CConditional (ternary)A > B ? X : Y
  A LotAssignment= (and compound assignment like *=)
  
  Note:
  對(duì)于int,其實(shí)是右移右操作數(shù)的求32的模;對(duì)于long,其實(shí)是右移右操作數(shù)的求64的模
  int y = x >> 32 ,y沒有改變,而不是0.(我試了一下,byte和short分別右移8和16,結(jié)果都為0)
  
  4.>>>
  11000>>2 returns 11110
  11000>>>2 returns 00110
  
  Note:
  >>>只對(duì)int,long有效。假如對(duì)于byte和short,在>>>之前先promote成int,右移完再折回byte或short,這樣,通常unsigned shift becomes signed shift
  
  5.<<
  128<<4 returns 128*(2的四次方)
  
  6.+
  short x =5;
  short y=6;
  short z=x+y;//compile error
  因?yàn)?的結(jié)果最小起碼是int
  
  7.cast
  
  
  7.if()要求的是一個(gè)boolean表達(dá)式
  if(x) //int x cause error
  use if(x!=0)
  
  8.switch(exp1)
  exp1必須是和int兼容,(byte,short,int,char)
  float,long,和類指針(String)都不答應(yīng)。
  
  9.label:statement
  statement必須是循環(huán)(break 還可以是switch)
  
  
  Array:
  1.初始化
  s = new char[5] //initialize for ‘/u0000’
  
  2.多維數(shù)組的定義
  int [][] a = new int [2][];
  a[0] = new int[4];
  a[1] = new int[6];
  
  System.out.println(a.length);
  System.out.println(a[0].length);
  
  Result:
  2
  4
  
  3.數(shù)組的復(fù)制
   int a[]={1,2,3};
   int b[]={4,5,6,7,8,9};
   System.arraycopy(a,0,b,0,a.length);
  
  Result:
  b[]={1,2,3,7,8,9}
  Note:
  System.arraycopy拷貝的是引用,而不是Object.(我試了,假如是基本類型的數(shù)組,用arraycopy后,修改其中一個(gè)數(shù)組的值,另一個(gè)數(shù)組是不變的;假如是對(duì)象的數(shù)組,則值會(huì)改變)
  
  Inheritance
  1.Constructors Are not Inherited
  
  2.instance of 檢查對(duì)象的類型(類,接口,數(shù)組)
  
  3.cast
  Up Cast(parent class = subclass) :直接用=轉(zhuǎn)化
  Downward(subclass = parent class):假如該對(duì)象不是要轉(zhuǎn)化的那個(gè)對(duì)象,則會(huì)在Runtime的時(shí)候出錯(cuò)。
  
  
  
  4.OverLoading Method
  必須有不同的參數(shù),可以有不同的返回類型
  
  5.Overriding Method
  有相同的函數(shù)名,參數(shù)類型,和返回值,實(shí)現(xiàn)可以不一樣。并且子類的方法不能比父類的函數(shù)的訪問權(quán)限小。
  
  6.Super
  在Constructor中假如要調(diào)用Super的話應(yīng)該寫在第一行
  Super能指定參數(shù)調(diào)用父類的Constructor
  假如在Constructor中沒有調(diào)用Super,則Compiler會(huì)隱含調(diào)用父類的”default”的Constructor
  假如父類沒有定義非私有的“default”的Constructor,則Compile Error
  
  7.構(gòu)造函數(shù)初始化
  1.分配對(duì)象的空間,把instance variable設(shè)置default value(Boolean->false,Integer,float->0,reference->null)
  2.
  2.1綁定Constructor的參數(shù)
  2.2假如有this(),跳到2.5
  2.3遞歸調(diào)用implicit 或explicit的super
  2.4執(zhí)行instance variable的explict的賦值
  2.5執(zhí)行當(dāng)前的Constructor.
  
  7.Constructor的Rule
  在Constructor中調(diào)用的函數(shù)應(yīng)為私有函數(shù)。
  因?yàn)榧偃绯怑mployee的Constructor中有公有函數(shù)getDetail,類Manager繼續(xù)Employee,而manager中override此函數(shù)getDetail,聲明一個(gè)manager的對(duì)象時(shí)會(huì)遞歸調(diào)用Employee的Constructor,而因?yàn)槭莚untime check,實(shí)際上Emplyee中調(diào)用的getDetail是Manager的getDetail。
  
  public class Emploee extends Object {
   private String name;
   private double salary = 15000.00;
   private Date birthDate;
   private String summary;
  
   public Emploee(String n, Date DoB) {
   name = n;
   birthDate = DoB;
   summary = getDetails();
   }
   public Emploee(String n) {
   this(n, null);
   }
  
   private String getDetails() {
   return "Name: " + name + "/nSalary: " + salary
   + "/nBirth Date: " + birthDate;
   }
  
   public static void main(String[] arg)
   {
   Manager m = new Manager("2","gl");
  
   }
  }
  
  
  class Manager extends Emploee {
   private String department;
   public Manager(String n, String d) {
   super(n);
   department = d;
   }
  
   public String getDetails() {
   return "/nDept: " + department;
   }
  
  }
  
  
  8.假如重載equals,最好重載hasCode()
  
  9.toString

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 富源县| 丰城市| 万宁市| 灵石县| 三台县| 鄯善县| 锡林郭勒盟| 林口县| 杭锦旗| 岱山县| 伽师县| 汝城县| 安达市| 昭觉县| 靖宇县| 南雄市| 根河市| 公主岭市| 水城县| 淳化县| 黄陵县| 仁寿县| 克拉玛依市| 宜宾县| 霍邱县| 和顺县| 舟曲县| 贵州省| 新邵县| 大洼县| 当雄县| 吉安市| 镇坪县| 洞口县| 慈溪市| 天门市| 海淀区| 右玉县| 台东县| 囊谦县| 弥勒县|