五须眷、300份Java零基礎(chǔ)教學(xué)筆記,真正的從零開始(關(guān)注持續(xù)更新)

Java快速入門(本文篇幅較長(zhǎng)沟突,建議點(diǎn)喜歡后收藏后閱讀)
每天學(xué)會(huì)一個(gè)知識(shí)點(diǎn)花颗,覺得不錯(cuò)的可以留言關(guān)注下,戳我主頁獲取Java資料(工具包惠拭,面試資料扩劝,視頻教學(xué),包含社群解答)

Java 對(duì)象和類

Java作為一種面向?qū)ο笳Z言求橄。支持以下基本概念:

  • 多態(tài)
  • 繼承
  • 封裝
  • 抽象
  • 對(duì)象
  • 實(shí)例
  • 方法
  • 消息解析

本節(jié)我們重點(diǎn)研究對(duì)象和類的概念今野。

  • 對(duì)象:對(duì)象是類的一個(gè)實(shí)例,有狀態(tài)和行為罐农。例如条霜,一條狗是一個(gè)對(duì)象,它的狀態(tài)有:顏色涵亏、名字宰睡、品種;行為有:搖尾巴气筋、叫拆内、吃等。
  • 類:類是一個(gè)模板宠默,它描述一類對(duì)象的行為和狀態(tài)麸恍。

Java中的對(duì)象

現(xiàn)在讓我們深入了解什么是對(duì)象。看看周圍真實(shí)的世界抹沪,會(huì)發(fā)現(xiàn)身邊有很多對(duì)象刻肄,車,狗融欧,人等等敏弃。所有這些對(duì)象都有自己的狀態(tài)和行為。

拿一條狗來舉例噪馏,它的狀態(tài)有:名字麦到、品種、顏色欠肾,行為有:叫瓶颠、搖尾巴和跑。

對(duì)比現(xiàn)實(shí)對(duì)象和軟件對(duì)象董济,它們之間十分相似步清。

軟件對(duì)象也有狀態(tài)和行為。軟件對(duì)象的狀態(tài)就是屬性虏肾,行為通過方法體現(xiàn)。

在軟件開發(fā)中欢搜,方法操作對(duì)象內(nèi)部狀態(tài)的改變封豪,對(duì)象的相互調(diào)用也是通過方法來完成。

Java中的類

類可以看成是創(chuàng)建Java對(duì)象的模板炒瘟。
通過下面一個(gè)簡(jiǎn)單的類來理解下Java中類的定義:

public class Dog{
   String breed;
   int age;
   String color;
   void barking(){
   }
   
   void hungry(){
   }
   
   void sleeping(){
   }
}

一個(gè)類可以包含以下類型變量:

  • 局部變量:在方法吹埠、構(gòu)造方法或者語句塊中定義的變量被稱為局部變量。變量聲明和初始化都是在方法中疮装,方法結(jié)束后缘琅,變量就會(huì)自動(dòng)銷毀。
  • 成員變量:成員變量是定義在類中廓推,方法體之外的變量刷袍。這種變量在創(chuàng)建對(duì)象的時(shí)候?qū)嵗3蓡T變量可以被類中方法樊展、構(gòu)造方法和特定類的語句塊訪問呻纹。
  • 類變量:類變量也聲明在類中,方法體之外专缠,但必須聲明為static類型雷酪。
    一個(gè)類可以擁有多個(gè)方法,在上面的例子中:barking()涝婉、hungry()和sleeping()都是Dog類的方法哥力。

構(gòu)造方法

每個(gè)類都有構(gòu)造方法。如果沒有顯式地為類定義構(gòu)造方法墩弯,Java編譯器將會(huì)為該類提供一個(gè)默認(rèn)構(gòu)造方法吩跋。

在創(chuàng)建一個(gè)對(duì)象的時(shí)候蟀淮,至少要調(diào)用一個(gè)構(gòu)造方法。構(gòu)造方法的名稱必須與類同名钞澳,一個(gè)類可以有多個(gè)構(gòu)造方法怠惶。

下面是一個(gè)構(gòu)造方法示例:

public class Puppy{
   public Puppy(){
   }

   public Puppy(String name){
      // 這個(gè)構(gòu)造器僅有一個(gè)參數(shù):name
   }
}

創(chuàng)建對(duì)象

對(duì)象是根據(jù)類創(chuàng)建的。在Java中轧粟,使用關(guān)鍵字new來創(chuàng)建一個(gè)新的對(duì)象策治。創(chuàng)建對(duì)象需要以下三步:

  • 聲明:聲明一個(gè)對(duì)象,包括對(duì)象名稱和對(duì)象類型兰吟。
  • 實(shí)例化:使用關(guān)鍵字new來創(chuàng)建一個(gè)對(duì)象通惫。
  • 初始化:使用new創(chuàng)建對(duì)象時(shí),會(huì)調(diào)用構(gòu)造方法初始化對(duì)象混蔼。
    下面是一個(gè)創(chuàng)建對(duì)象的例子:
public class Puppy{
   public Puppy(String name){
      //這個(gè)構(gòu)造器僅有一個(gè)參數(shù):name
      System.out.println("Passed Name is :" + name ); 
   }
   public static void main(String []args){
      // 下面的語句將創(chuàng)建一個(gè)Puppy對(duì)象
      Puppy myPuppy = new Puppy( "tommy" );
   }
}

編譯并運(yùn)行上面的程序履腋,會(huì)打印出下面的結(jié)果:

Passed Name is :tommy

訪問實(shí)例變量和方法

通過已創(chuàng)建的對(duì)象來訪問成員變量和成員方法,如下所示:

/* 實(shí)例化對(duì)象 */
ObjectReference = new Constructor();
/* 訪問其中的變量 */
ObjectReference.variableName;
/* 訪問類中的方法 */
ObjectReference.MethodName();

下面的例子展示如何訪問實(shí)例變量和調(diào)用成員方法:

public class Puppy{
   int puppyAge;
   public Puppy(String name){
      // 這個(gè)構(gòu)造器僅有一個(gè)參數(shù):name
      System.out.println("Passed Name is :" + name ); 
   }

   public void setAge( int age ){
       puppyAge = age;
   }

   public int getAge( ){
       System.out.println("Puppy's age is :" + puppyAge ); 
       return puppyAge;
   }

   public static void main(String []args){
      /* 創(chuàng)建對(duì)象 */
      Puppy myPuppy = new Puppy( "tommy" );
      /* 通過方法來設(shè)定age */
      myPuppy.setAge( 2 );
      /* 調(diào)用另一個(gè)方法獲取age */
      myPuppy.getAge( );
      /*你也可以像下面這樣訪問成員變量 */
      System.out.println("Variable Value :" + myPuppy.puppyAge ); 
   }
}

編譯并運(yùn)行上面的程序惭嚣,產(chǎn)生如下結(jié)果:

Passed Name is :tommy
Puppy's age is :2
Variable Value :2

源文件聲明規(guī)則

在本節(jié)的最后部分遵湖,我們將學(xué)習(xí)源文件的聲明規(guī)則。當(dāng)在一個(gè)源文件中定義多個(gè)類晚吞,并且還有import語句和package語句時(shí)延旧,要特別注意這些規(guī)則。

  • 一個(gè)源文件中只能有一個(gè)public類
  • 一個(gè)源文件可以有多個(gè)非public類
  • 源文件的名稱應(yīng)該和public類的類名保持一致槽地。例如:源文件中public類的類名是Employee迁沫,那么源文件應(yīng)該命名為Employee.java。
  • 如果一個(gè)類定義在某個(gè)包中捌蚊,那么package語句應(yīng)該在源文件的首行集畅。
  • 如果源文件包含import語句,那么應(yīng)該放在package語句和類定義之間缅糟。如果沒有package語句挺智,那么import語句應(yīng)該在源文件中最前面。
  • import語句和package語句對(duì)源文件中定義的所有類都有效溺拱。在同一源文件中逃贝,不能給不同的類不同的包聲明。
    類有若干種訪問級(jí)別迫摔,并且類也分不同的類型:抽象類和final類等沐扳。這些將在訪問控制章節(jié)介紹。

除了上面提到的幾種類型句占,Java還有一些特殊的類沪摄,如:內(nèi)部類、匿名類。

Java包

包主要用來對(duì)類和接口進(jìn)行分類杨拐。當(dāng)開發(fā)Java程序時(shí)祈餐,可能編寫成百上千的類,因此很有必要對(duì)類和接口進(jìn)行分類哄陶。

Import語句

在Java中帆阳,如果給出一個(gè)完整的限定名,包括包名屋吨、類名蜒谤,那么Java編譯器就可以很容易地定位到源代碼或者類。Import語句就是用來提供一個(gè)合理的路徑至扰,使得編譯器可以找到某個(gè)類鳍徽。

例如,下面的命令行將會(huì)命令編譯器載入java_installation/java/io路徑下的所有類

import java.io.*;

一個(gè)簡(jiǎn)單的例子

在該例子中敢课,我們創(chuàng)建兩個(gè)類:Employee和EmployeeTest阶祭。

首先打開文本編輯器,把下面的代碼粘貼進(jìn)去直秆。注意將文件保存為Employee.java濒募。

Employee類有四個(gè)成員變量:name、age切厘、designation和salary萨咳。該類顯式聲明了一個(gè)構(gòu)造方法,該方法只有一個(gè)參數(shù)疫稿。

import java.io.*;
public class Employee{
   String name;
   int age;
   String designation;
   double salary;
   // Employee 類的構(gòu)造器
   public Employee(String name){
      this.name = name;
   }
   // 設(shè)置age的值
   public void empAge(int empAge){
      age =  empAge;
   }
   /* 設(shè)置designation的值*/
   public void empDesignation(String empDesig){
      designation = empDesig;
   }
   /* 設(shè)置salary的值*/
   public void empSalary(double empSalary){
      salary = empSalary;
   }
   /* 打印信息 */
   public void printEmployee(){
      System.out.println("Name:"+ name );
      System.out.println("Age:" + age );
      System.out.println("Designation:" + designation );
      System.out.println("Salary:" + salary);
   }
}

程序都是從main方法開始執(zhí)行。為了能運(yùn)行這個(gè)程序鹃两,必須包含main方法并且創(chuàng)建一個(gè)實(shí)例對(duì)象遗座。

下面給出EmployeeTest類,該類實(shí)例化2個(gè)Employee類的實(shí)例俊扳,并調(diào)用方法設(shè)置變量的值途蒋。

將下面的代碼保存在EmployeeTest.java文件中。

import java.io.*;
public class EmployeeTest{

   public static void main(String args[]){
      /* 使用構(gòu)造器創(chuàng)建兩個(gè)對(duì)象 */
      Employee empOne = new Employee("James Smith");
      Employee empTwo = new Employee("Mary Anne");

      // 調(diào)用這兩個(gè)對(duì)象的成員方法
      empOne.empAge(26);
      empOne.empDesignation("Senior Software Engineer");
      empOne.empSalary(1000);
      empOne.printEmployee();

      empTwo.empAge(21);
      empTwo.empDesignation("Software Engineer");
      empTwo.empSalary(500);
      empTwo.printEmployee();
   }
}

編譯這兩個(gè)文件并且運(yùn)行EmployeeTest類馋记,可以看到如下結(jié)果:

C :> javac Employee.java
C :> vi EmployeeTest.java
C :> javac  EmployeeTest.java
C :> java EmployeeTest
Name:James Smith
Age:26
Designation:Senior Software Engineer
Salary:1000.0
Name:Mary Anne
Age:21
Designation:Software Engineer
Salary:500.0
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末号坡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子梯醒,更是在濱河造成了極大的恐慌宽堆,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茸习,死亡現(xiàn)場(chǎng)離奇詭異畜隶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門触幼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來骨田,“玉大人暑脆,你說我怎么就攤上這事□诵浚” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵届惋,是天一觀的道長(zhǎng)髓帽。 經(jīng)常有香客問我,道長(zhǎng)盼樟,這世上最難降的妖魔是什么氢卡? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮晨缴,結(jié)果婚禮上译秦,老公的妹妹穿的比我還像新娘。我一直安慰自己击碗,他們只是感情好筑悴,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著稍途,像睡著了一般阁吝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上械拍,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天突勇,我揣著相機(jī)與錄音,去河邊找鬼坷虑。 笑死甲馋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的迄损。 我是一名探鬼主播定躏,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼芹敌!你這毒婦竟也來了痊远?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤氏捞,失蹤者是張志新(化名)和其女友劉穎碧聪,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體幌衣,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡矾削,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年壤玫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哼凯。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡欲间,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出断部,到底是詐尸還是另有隱情猎贴,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布蝴光,位于F島的核電站她渴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蔑祟。R本人自食惡果不足惜趁耗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望疆虚。 院中可真熱鬧苛败,春花似錦、人聲如沸径簿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽篇亭。三九已至缠捌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間译蒂,已是汗流浹背曼月。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留柔昼,地道東北人十嘿。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像岳锁,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蹦魔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

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