Java基礎(chǔ)

二幔欧、變量

定義:

  • 1.變量是程序中最基礎(chǔ)的存儲單元,其要素包括變量名娜遵、變量類型和作用域蜕衡;
  • 2.變量其實(shí)是內(nèi)存中的一小塊區(qū)域,使用變量名來訪問這塊區(qū)域设拟,因此慨仿,每一個(gè)變量使用前必須先申請(聲明),然后必須進(jìn)行賦值(填充內(nèi)容)纳胧,才能使用镰吆;

分類:

  • 1.按聲明的位置劃分:
 1)、局部變量(方法體外跑慕,類體內(nèi))鼎姊;2)、成員變量(方法體內(nèi)部)
  • 2.變量類型:
基本類型和引用類型
  • 3.局部變量和成員變量的區(qū)別:
成員變量不用初始化相赁,Java會默認(rèn)初始化相寇,而局部變量不行

三、面向?qū)ο?/h3>
  • 面向?qū)ο笏季S:
1钮科、考慮的是有哪些類哪些對象唤衫;2、這些類和這些對象绵脯,應(yīng)該具有哪些屬性和方法;3佳励、類和類之間的關(guān)系
  • 類和對象的關(guān)系:
1、關(guān)聯(lián)關(guān)系蛆挫;2赃承、繼承關(guān)系;3悴侵、聚合關(guān)系瞧剖;4、實(shí)現(xiàn)關(guān)系可免;5抓于、多態(tài)

3.1.類的定義

1.類的組成:成員變量和方法
2.對象的創(chuàng)建和使用
2.1、new創(chuàng)建對象
2.2浇借、使用對象(引用).成員變量或引用對象的成員變量
2.3捉撮、使用對象(引用).方法(參數(shù)列表)來調(diào)用對象的方法
2.4、同一類的每個(gè)對象有不同的成員變量存儲空間
2.5妇垢、同一類的每個(gè)對象共享該類的方法巾遭。

3.2.類的對象的關(guān)系

3.3.構(gòu)造方法(構(gòu)造函數(shù))

1. 使用new+構(gòu)造方法肉康,創(chuàng)建一個(gè)新的對象
2. 構(gòu)造函數(shù)是定義在Java類中的一個(gè)用來初始化對象的函數(shù);
3. 構(gòu)造函數(shù)與類同名且沒有返回值灼舍;
4. 當(dāng)你創(chuàng)建一個(gè)類時(shí)迎罗,如果不寫構(gòu)造方法,系統(tǒng)會默認(rèn)給一個(gè)參數(shù)和方法休都為空的構(gòu)造方法片仿,如果你自己寫的構(gòu)造方法纹安,系統(tǒng)就不會再有默認(rèn)的構(gòu)造方法
 
public class GouZaofunction {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Persion tom = new Persion(18, "tom");//這里new一個(gè)對象的時(shí)候,其實(shí)就是調(diào)用它的構(gòu)造方法來new砂豌;
        System.out.println(tom.name);
    }

}

class Persion {
    int age;
    String name;
    //下面是構(gòu)造方法
    public Persion(int _age,String _name) {
        age = _age;
        name = _name;
    }
    //如果沒有上面的構(gòu)造方法時(shí)厢岂,系統(tǒng)會默認(rèn)的創(chuàng)建一個(gè)Persion(){}
}

3.4.方法重載

一個(gè)類中可以定義有相同名字,但參數(shù)不同的多個(gè)方法阳距。調(diào)用時(shí)塔粒,會根據(jù)不同的參數(shù)選擇對應(yīng)的方法。
構(gòu)造方法的重載筐摘,跟普通方法一樣
public class TestOverLoad {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Persion tom = new Persion(18, "tom");
        Persion ken = new Persion("ken");//這是在調(diào)用重載的構(gòu)造方法
        System.out.println(tom.name);
    }

}

class Persion {
    int age;
    String name;
    //下面是構(gòu)造方法
    public Persion() {
        // TODO Auto-generated constructor stub
    }
    //下面是構(gòu)造方法重載
    public Persion(String _name) {
        name = _name;
    }
    public Persion(int _age,String _name) {
        age = _age;
        name = _name;
    }   
}

3.5.this關(guān)鍵字

1. 在類的方法定義中使用的this關(guān)鍵字代表使用該方法的對象的引用
2. 當(dāng)必須指出當(dāng)前使用方法的對象是誰時(shí)要使用this卒茬;
3. 有時(shí)使用this可以處理方法中成員變量和參數(shù)重名的情況;
4. this可以看作是一個(gè)變量咖熟,它的值是當(dāng)前對象的引用
public class TishTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Leaf leaf = new Leaf(100);
        leaf.increament().increament().print();
    }

}
class Leaf {
    int i=0;
    public Leaf(int i) {
        // TODO Auto-generated constructor stub
        this.i = i;
    }
    Leaf increament(){
        i++;
        return this;
    }
    void print(){System.out.println(("i="+i));}
}

3.6.static關(guān)鍵字

1. 在類中圃酵,用static聲明的成員變量為靜態(tài)成員變量,它為該類的公用變量馍管,在第一次使用時(shí)被初始化郭赐,對于該類的所有對象來說,static成員變量只有一份
2. 用static聲明的方法為靜態(tài)方法确沸,在調(diào)用該方法時(shí)捌锭,不會將對象的引用傳遞給它,所以在static方法中不可訪問非static的成員罗捎。
3. 可以通過對象引用或類名(不需要實(shí)例化)訪問靜態(tài)成員
public class CatStatic {
    private static int sid; //很明顯一般做計(jì)數(shù)用
    private int id;
    private String name;
    public CatStatic(String name) {
        // TODO Auto-generated constructor stub
        this.name = name;
        id = sid ++;
    }
    public void info() {
        System.out.println("My name is"+name+"NO.:"+id);
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        sid = 100;//直接用观谦,不用創(chuàng)建對象后再用
        CatStatic mini = new CatStatic("mini");
        CatStatic pipi = new CatStatic("pipi");
        mini.info();
        pipi.info();
    }

}

3.7.訪問控制和類的繼承

1. Java權(quán)限修飾符public protected private 置于類的成員定義前,用來限定其他對象對該類對象成員的訪問權(quán)限桨菜。
![image](http://upload-images.jianshu.io/upload_images/4277233-c7ad609c5d70f404?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
2. 對于class的權(quán)限修飾只可以用public和default
   1).public類可以在任意地方被訪問
   2).default類只可以被同一個(gè)包內(nèi)部的類訪問
1. java中使用extends關(guān)鍵字實(shí)現(xiàn)類的繼承機(jī)制豁状,語法規(guī)則:<modifier>class<name>[extends<superclass>]{... ...}
2. 通過繼承,子類自動(dòng)擁有父類(superclass)的所有成員(成員變量和方法)
3. Java只支持單繼承雷激,不允許多繼承
//繼承的權(quán)限控制
class Parent{
    private     int n_private = 1;
                int n_default = 2;
    protected   int n_protected = 3;
    public      int n_public = 4;
}
class Child extends Parent {
    public void f(){
        n_private = 100 //會報(bào)錯(cuò)替蔬,父母的成員變量雖然可以繼承,但不能訪問屎暇,private只能自己類本身來訪問
        n_default = 200 //正常,下面的幾個(gè)都是正常
    }
}

3.8.方法的重寫

1. 重寫是對子類來說驻粟,對父類的方法進(jìn)行重寫
2. 重寫方法必須和被重寫的方法名稱根悼、參數(shù)凶异、返回類型都相同
3. 重寫方法不能使用比被重寫方法更嚴(yán)格的訪問權(quán)限
public class ExtendsTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Person person = new Person();
        person.setAge(18);
        person.setName("tom");
        person.getInfo();
        Child child = new Child();
        child.setName("jam");
        child.setAge(19);
        child.setSchool("中山大學(xué)");
        child.getInfo();
    }

}
class Person{
    private  String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String _name) {
        name = _name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int _age) {
        age = _age;
    }
    void getInfo(){
        System.out.println("Name is "+ name+"\n"+"age is "+age);
    }
}
class Child extends Person {
    private String  school;
    public String getSchool() {
        return school;
    }
    public void setSchool(String _school) {
        school = _school;
    }
    void getInfo(){
        System.out.println("Name is "+getName()+"\n"+"age is "+getAge() +"\n"+"school is "+getSchool());
    }
    
}

3.9.super關(guān)鍵字

 super關(guān)鍵字,是在繼承里面挤巡,指的是父類對象的引用
public class SuperTest {
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ChildClass child = new ChildClass();
        child.f();
    }

}
class FartherClass{
    public int value;
    public void f() {
        value = 100;
        System.out.println("Farther's value is  "+ value);
    }
}
class ChildClass extends FartherClass{
    public int value;
    
    public void f() {
        super.f();//執(zhí)行的是父類的方法
        value = 200;//對子類的value賦值
        System.out.println("Child's value is "+ value);
        System.out.println(value);//子類的value
        System.out.println(super.value);//父類的value
    }
}

3.10.繼承中的構(gòu)造方法

1. 子類的構(gòu)造方法必須調(diào)用其父類的構(gòu)造方法
2. 子類可以在自己的構(gòu)造方法中使用super(argument_list)調(diào)用其父類的構(gòu)造方法
    2.1.使用this(argument_list)調(diào)用本類的另外的構(gòu)造方法
    2.2.使用super剩彬,必須寫在子類構(gòu)造方法的第一行
3. 如果子類的構(gòu)造方法中沒有顯式的調(diào)用父類的構(gòu)造方法,則系統(tǒng)默認(rèn)調(diào)用父類的無參數(shù)的構(gòu)造方法
4. 如果子類既無顯式調(diào)用父類的構(gòu)造方法矿卑,而父類又沒有無參數(shù)的構(gòu)造方法喉恋,則編譯出錯(cuò)

3.11.多態(tài)

1. 定義:是指在執(zhí)行期間(非編譯期)判斷所引用對象的實(shí)際類型,根據(jù)其實(shí)際類型調(diào)用其相應(yīng)的方法
2. 必要條件:2.1).要有繼承 母廷;2.2).要有重寫轻黑;
2.3).父類引用指向子類對象
public class Test {
    public static void main(String[] args) {       
      Animal a = new Animal("a"); 
      lady l1 = new lady("li",a);
      Cat c = new Cat("c","blue"); 
      Dog d = new Dog("d", "yellow");
      //動(dòng)態(tài)的,根據(jù)程序運(yùn)行時(shí)琴昆,傳的什么來決定運(yùn)行哪個(gè)方法
      l1.myenjoy(a);//叫聲%%%%%%%%%%%%%
      l1.myenjoy(c);//貓叫聲.......
      l1.myenjoy(d);//狗叫聲Cケ伞!R瞪帷6独埂!O夏骸L铩!O旅妗向臀!
  }     
}
class lady {
    private String name;
    private Animal pet;
    public lady(String name,Animal pet) {
        // TODO Auto-generated constructor stub
        this.name = name;
        this.pet = pet;
    }
    public void myenjoy(Animal a) {
        a.enjoy();
    }
}
 
class Animal {  
   private String name;
   public Animal(String name) {
    // TODO Auto-generated constructor stub
       this.name = name;
   }
   public void enjoy() {
    System.out.println("叫聲%%%%%%%%%%%%%");
}
}  
  
class Cat extends Animal {  
    private String eyesColor;
    public Cat(String name,String eyesColor) {
        super(name);
        this.eyesColor = eyesColor;     
        // TODO Auto-generated constructor stub
    }
    public void enjoy() {  
        System.out.println("貓叫聲.......");  
    }  
}  
  
class Dog extends Animal {  
    private String color;
    public Dog(String name,String color){
        super(name);
        this.color = color;
        }
    public void enjoy() {  
        System.out.println("狗叫聲!V钕痢H颉!Q庇觥G郾颉!2媛J姘铩!");  
    }  
}

3.12.final關(guān)鍵字

1. final的變量的值不能被改變
2. final的方法不能被重寫
3. final的類不能被繼續(xù)

四陡叠、異常

1. 程序運(yùn)行期間發(fā)生的一些錯(cuò)誤事件玩郊,用try..catch去捕獲
2. 異常分類,根異常Trowable 下面分兩種Erro(不能處理)和Exception(能處理)枉阵,Exception再分兩種译红,RuntimeException和其它,RuntimeException可以不處理兴溜,但除了這個(gè)其它的都要處理
public class TestEx {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("異常的catch侦厚。耻陕。。刨沦。");
        try {
            System.out.println(2/0);
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("系統(tǒng)出錯(cuò)了诗宣!");
            e.printStackTrace();
        }
    }

}

五、數(shù)組

  1. 一維數(shù)組二維數(shù)組多維數(shù)組
public class TestArray {

   public static void main(String[] args) {
       // TODO Auto-generated method stub
       Date[] days = new Date[3];
       for (int i = 0; i < days.length; i++) {
           days[i] = new Date(2017, 6, i);
           days[i].pintDate();
       }
   }
}
class Date{
   private int year,month,day;
   public Date(int y,int m,int d) {
       // TODO Auto-generated constructor stub
       year = y;
       month = m;
       day = d;
   }
   public int getDay() {
       return day;
   }
   public int getMonth() {
       return month;
   }
   public int getYear() {
       return year;
   }
   public void pintDate() {
       System.out.println("日期是:"+getYear()+"-"+getMonth()+"-"+getDay());
   }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末想诅,一起剝皮案震驚了整個(gè)濱河市召庞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌来破,老刑警劉巖篮灼,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異讳癌,居然都是意外死亡穿稳,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門晌坤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逢艘,“玉大人,你說我怎么就攤上這事骤菠∷模” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵商乎,是天一觀的道長央拖。 經(jīng)常有香客問我,道長鹉戚,這世上最難降的妖魔是什么鲜戒? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮抹凳,結(jié)果婚禮上遏餐,老公的妹妹穿的比我還像新娘。我一直安慰自己赢底,他們只是感情好失都,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著幸冻,像睡著了一般粹庞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上洽损,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天庞溜,我揣著相機(jī)與錄音,去河邊找鬼趁啸。 笑死强缘,一個(gè)胖子當(dāng)著我的面吹牛督惰,可吹牛的內(nèi)容都是我干的不傅。 我是一名探鬼主播旅掂,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼访娶!你這毒婦竟也來了商虐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤崖疤,失蹤者是張志新(化名)和其女友劉穎秘车,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體劫哼,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡叮趴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了权烧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片眯亦。...
    茶點(diǎn)故事閱讀 39,953評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖般码,靈堂內(nèi)的尸體忽然破棺而出妻率,到底是詐尸還是另有隱情,我是刑警寧澤板祝,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布宫静,位于F島的核電站,受9級特大地震影響券时,放射性物質(zhì)發(fā)生泄漏孤里。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一橘洞、第九天 我趴在偏房一處隱蔽的房頂上張望捌袜。 院中可真熱鬧,春花似錦震檩、人聲如沸琢蛤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽博其。三九已至,卻和暖如春迂猴,著一層夾襖步出監(jiān)牢的瞬間慕淡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工沸毁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留峰髓,地道東北人傻寂。 一個(gè)月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像携兵,于是被迫代替她去往敵國和親疾掰。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1徐紧、一個(gè)".java"源文件中是否可以包括多個(gè)類(不是內(nèi)部類)静檬?有什么限制?答:可以有多個(gè)類并级,但只能有一個(gè)publ...
    岳小川閱讀 928評論 0 2
  • Win7下如何打開DOS控制臺拂檩? a:開始--所有程序--附件--命令提示符 b:開始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,598評論 4 12
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法嘲碧,內(nèi)部類的語法稻励,繼承相關(guān)的語法,異常的語法愈涩,線程的語...
    子非魚_t_閱讀 31,631評論 18 399
  • 這個(gè)系列面試題主要目的是幫助你拿輕松到offer望抽,同時(shí)還能開個(gè)好價(jià)錢。只要能夠搞明白這個(gè)系列的絕大多數(shù)題目钠署,在面試...
    獨(dú)念白閱讀 341評論 0 3
  • 一:java概述:1糠聪,JDK:Java Development Kit,java的開發(fā)和運(yùn)行環(huán)境谐鼎,java的開發(fā)工...
    ZaneInTheSun閱讀 2,651評論 0 11