最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Java零基礎(chǔ)小白入門課

2019-07-06 19:42 作者:魔法九廳徐依妙  | 我要投稿

Java基礎(chǔ)入門


最近開發(fā)安卓,很多東西不會,都是簡書,博客園,csdn博客上看到很多很多人寫了各種教程,終于跌跌撞撞把東西給寫出來,正好教一個親戚的朋友零基礎(chǔ)Java,也把教程整理一下,做得比較另類,大概適合95后00后肥宅


類和對象

Java的哲學體系中,所有的東西都是對象,所有的對象都屬于某一種類

同樣屬性的對象屬于同一種類,類的基礎(chǔ)類是Object,其他類都是基礎(chǔ)類的衍生,衍生包括了基礎(chǔ)類的所有信息,除了private的成員變量


類的成員一般有變量和函數(shù),當然有些是接口什么,以后再說


類的繼承

除了Object基礎(chǔ)類外,其他類都可以視為某一種類型的子類,包含了父類的private以外所有屬性


比如類 人類 class Person

{

public String name="";//最好是字符串直接定義為空字符串,否則引用的時候會報錯

}

人類有共同的屬性如姓名,出生日期,國籍,身高體重等等



class Man extends Person

class Woman extends Person


可以衍生出兩個子類,男人和女人

然后還有各自類特有的,比如男人長胡子,那么Man類里面就有成員變量moustache,表示一個男人的胡子


然后,男人中,有很多屌絲,屌絲也是男人里的一種

屌絲可以寫作

class Diaosi extends Man,此處特指男屌絲

{

private Woman girlfriend=null;//屌絲怎么可能有女朋友呢!


}


一般別人項目的寫法,成員變量都是private,防止你胡亂修改,當你要獲取某個成員變量的時候,你需要獲得公開的接口

一般是public接口,這樣任何人都可以引用一下就訪問,protected就只有自己的子類可以訪問,private則只有本對象可以訪問,如果不寫則是同一包里可以訪問

public/不寫/protected/private有兩個維度的屬性,一種是繼承,一種是外界訪問權(quán)限


當我們遇到一個屌絲,我們叫做new一個

Diaosi Diaosi1=new Diaosi();//這就是構(gòu)造函數(shù),會調(diào)用Diaosi{ public Diaosi(){}}這個構(gòu)造函數(shù),如果調(diào)用帶參數(shù),那么會自動找相應參數(shù)表的函數(shù)

Diaosi1就是這個對象的引用地址

當我要問屌絲的女朋友叫什么的時候,就獲取屌絲的女朋友這個對象,然后返回這個人的成員變量:名字

就算她的名字是private String name,外界不可訪問,那么可以public String getname(){return this.name}來獲取

public String askGirlfriendName()

{

? ?return girlfriend.name;

}

調(diào)用就是對象名.函數(shù)名(參數(shù)) Diaosi1.askGirlfriendName();

就比如你要問,屌絲屌絲,你的女朋友叫什么啊,返回的是字符串類型


這句話看上去沒問題,但其實是錯誤的,因為很失禮!

屌絲怎么可能有女朋友呢,屌絲會回復你,找不到對象object,然后程序報錯

因為girlfriend==null,所以無法尋找它的成員變量屬性,這就是報錯的原因

所以,我們問屌絲女朋友叫什么名字,需要禮貌地試探,先問屌絲有沒有女朋友,有的話再問對方名字,而不是直接上來就問屌絲女朋友叫什么,不論是說話,還是寫程序,都是這個道理

于是我們改寫函數(shù)

public String askGirlfriendName_v2()

{

? ?if (girlfriend!=null)

? ? ? return girlfriend.name;

? ?return null;//屌絲沒有女朋友,所以你問屌絲的女朋友沒有名字,就無法回答你

}


既然是String類型函數(shù),就必須返回字符串(也可以是null),所以當屌絲沒有女朋友的時候,他會回復你一個null


當然,屌絲A說我的女朋友是Gakki新垣結(jié)衣,屌絲B說好巧啊我綠了你,我的女朋友也是新垣結(jié)衣

有個梗就是很多視頻都說:你們的女朋友(老婆)新垣結(jié)衣,大概全中國有十幾萬男生號稱新垣結(jié)衣是他女朋友

PS:B站文章必須要有圖,所以不得不找了一張Gakki,不得不說倭妹不符合我審美,挑來挑去一點也不覺得好看,沒辦法屌絲們熟悉

你們的老婆躺好了


那么,這個作為一個類的公用成員變量,就涉及到Java的一個基礎(chǔ)概念:靜態(tài)


就是一個類所有成員所共有公用的

屌絲們的女朋友都是新垣結(jié)衣,那么首先要有這么一個新垣結(jié)衣的女的

public class Woman extends Person{

? public static Gakki=new Woman("新垣結(jié)衣");//因為Gakki一般就是指新垣結(jié)衣

}


這樣,Woman就需要一個構(gòu)造函數(shù),附帶一個初始變量,就是名字

當然這個構(gòu)造函數(shù)寫在Person里更加科學,因為不論男人女人都有名字,而且一般來說,名字是唯一標識

public class Person{

? ?public Person(String name)

? ?{

? ? ? this.name=name;//請注意,引用name是當前環(huán)境下的變量優(yōu)先,如果要特指該對象的成員變量,必須加this,this.name表示這個對象的成員變量,name表示當前環(huán)境下的name,就是帶進來的參數(shù)

? ?}

}

這個函數(shù),只要不是private,那么所有它的子類都可以用


那我判斷你們兩個有沒有綠了對方

public boolean bgreenyou(Man man1,Man man2)

{

? ?return man1.girlfriend==man2.girlfriend;//如果兩個人的女朋友指向同一個對象,表示這哥倆互相綠了對方

? ?//但是這句話有問題,就是當這兩個屌絲都沒有女朋友的時候,雙方的女朋友都是null,那么也會表示等式相等,兩個傻屌絲會開心地以為自己綠了對方,抱歉你們想多了,你們是屌絲!

? ?所以要加and條件?

? ?return man1.girlfriend==man2.girlfriend&&man1.girlfriend!=null;

? ?

? ?

? ?//還可以以雙方的名字是否相等來 ??

? ?return (man1.askGirlfriendName_v2().equals(man2.askGirlfriendName_v2());

? ?//這里暫且粗暴地以姓名相同為標準,當兩個屌絲的老婆名字相同時,他們就綠了,比如都叫新垣結(jié)衣

? ?//此處要說一個知識點,就是在java中,字符串是否內(nèi)容相等不是C語言里的==,而必須用equals,如果大小寫不同也算相等,那么還有equalsIgnoreCase()

? ?//第二個知識點,這一部分也可能報錯,因為equals是字符串類的函數(shù),執(zhí)行這個函數(shù),必須首先有這個對象

? ?//而沒有女朋友的屌絲,你問他女朋友叫什么名字,返回的是無,就是null,null并不是一個Object,更不是字符串類型的對象,所以它沒有成員變量

? ?//當askGirlfriendName_v2()返回的結(jié)果是null,你不能調(diào)用null的任何成員變量,所以這一句會報錯的,那我們怎么修改呢,看下面

}


public String askGirlfriendName_v3()

{

? ?if (girlfriend!=null)

? ? ? return girlfriend.name;

? ?return "";//你要確保返回的必須是一個字符串,哪怕是一個空字符串,也能確保程序不報錯彈出,這就像屌絲說:我還不知道我女朋友叫什么,也比沒有女朋友好

}

后來,屌絲也覺得這樣撒謊很沒面子,就說自己的女朋友是新垣結(jié)衣


這樣,當你問起屌絲有沒有女朋友的時候,有的屌絲就算沒有,也會指著屏幕,說,看,屏幕上面的新垣結(jié)衣就是我女朋友

public String askGirlfriendName_v4()

{

? ?if (girlfriend!=null)

? ? ? return girlfriend.name;//有女朋友的,就告訴對方自己的女朋友叫什么

? ?return Woman.Gakki.name;//沒有女朋友的,就說自己的女朋友是新垣結(jié)衣

}



靜態(tài)成員變量的引用方法,是類名.變量名,比如Woman.gakki就是新垣結(jié)衣

動態(tài)成員變量的引用方法,是對象名.變量名,如上面屌絲,當然在本對象里面,可以寫this.或者直接不寫


你們(共同)的女朋友,可以這樣寫

public class Diaosi extends Man{

? ?public static Woman commonGirlfriend=Woman.Gakki;

}

//請注意這里不要寫成new Woman("新垣結(jié)衣");因為你每new一個就會新增一個對象,而實際上這里指向的是Woman.Gakki,既然對象已經(jīng)新建,直接引用就可以了,一般不能重新建立兩次對象,會產(chǎn)生邏輯錯誤



如果后來變成了橋本環(huán)奈,那么就先要有這么一個人

new Woman("橋本環(huán)奈");//這個只執(zhí)行一次,那么,怎么定位到這個對象呢,我們可以這樣寫

一種是靜態(tài),就像Gakki就是新垣結(jié)衣,但問題是橋本環(huán)奈似乎沒有這種外號,怎么辦

public class Woman extends Person{

? ?public static List<Woman> allWomenList=new ArrayList<Woman>();//這是唯一的靜態(tài)列表

? ?public Woman(String name)

? ?{

? ? ?this.name=name;

? ? ?allWomenList.add(this);//把每個new新建的女人都加到靜態(tài)的女人列表中

? ?}

? ?public static Woman findWomanbyName(String name)

? ?{//暫且粗暴地以名字為唯一互斥標識

? ? ? for (Woman woman:allWomenList)

? ? ? ? if (name.equals(woman.name))//這樣寫的好處是,參數(shù)name是確定的字符串不是null,而woman.name有可能是null,當碰上的時候,如果寫woman.name.equals會報錯

? ? ? ? ? ? return woman;

? ? ? return null;

? ?}

}

//每個類在第一次初始化的時候,所有的static靜態(tài)的類成員變量都會執(zhí)行初始化一次

//每個類所屬的對象在構(gòu)造建立的時候,成員變量都會執(zhí)行一遍


后來,世界上出現(xiàn)了二次元肥宅,他們的老婆是橋本環(huán)奈

如果肥宅都是屌絲,屌絲都是男人,那么可以建立多層繼承關(guān)系

public class Feizhai extends Diaosi{

? ? public static Woman commonGirlFriend=Woman.findWomanbyName("橋本環(huán)奈");

}


如果你要說所有屌絲的女朋友一開始都是新垣結(jié)衣,然后后來才逐漸換成橋本環(huán)奈,那么這樣寫

public class Diaosi extends Man{

? ?public Woman girlfriend=Woman.Gakki;

}

每個屌絲的女朋友從新垣結(jié)衣改成橋本環(huán)奈的時候,就是每個diaosi.girlfriend=Woman.findWomanbyName("橋本環(huán)奈");

這里的diaosi就必須是對象,而不能是類,如果是類的話


就是:你們的老婆


后來,橋本環(huán)奈又成為了中國肥宅們號稱的女朋友

Diaosi.commonGirlFriend=Woman.findWomanbyName("橋本環(huán)奈");



Java零基礎(chǔ)小白入門課的評論 (共 條)

分享到微博請遵守國家法律
石泉县| 临沂市| 自贡市| 平乡县| 内丘县| 阿拉善盟| 延安市| 南召县| 乐东| 崇礼县| 龙岩市| 舟山市| 霍州市| 高唐县| 苏尼特左旗| 元氏县| 关岭| 扎囊县| 灵寿县| 都兰县| 淅川县| 理塘县| 吉安市| 赤城县| 安龙县| 大荔县| 滦南县| 周至县| 水城县| 新晃| 清丰县| 淄博市| 澄迈县| 乡城县| 常德市| 治多县| 郑州市| 三穗县| 红安县| 榆社县| 吴忠市|