網(wǎng)站技術(shù)可行性/立即優(yōu)化在哪里
Day2 認識類與對象
第一章 初識類
經(jīng)過一個程序的編寫,應(yīng)該對程序的結(jié)構(gòu)有點好奇了吧,如果你有基礎(chǔ),接下來的肯定非常的易懂,如果你沒有基礎(chǔ)也沒有關(guān)系,反復(fù)琢磨一下也就懂了😆
我們來重復(fù)一下第一個程序
public class Hello {public static void main(String[] args) {System.out.println("Hello world");}
}
我們以空格劃分多個單詞,比如第一行的public就是第一行的第一個,class就是第一行的第二個單詞,第二行的public就是第二行的第一個單詞,如此。
首先我們看類名
也就是class
后面跟著的單詞也就是第一行第三個單詞,這個尤為的重要,比如我的文件名并不叫做Hello.java
那我這樣編譯就會出問題,即使我是hello.java
也會出問題,因為Java是一個對大小寫敏感的程序,和Python、C、C++、JavaScript等等是一樣的。對大小寫不敏感的有各種數(shù)據(jù)庫啊、還有操作系統(tǒng)的文件系統(tǒng),比如linux或者windows或者是macOS等等,這是第一點。
第二點,公有類名
要與文件名一致。沒錯,你一個Java文件內(nèi)可以有多個類,但是公有類
只能有一個,就是帶public class [類名/文件名]
里面的類名,然后你還可以并行很多類像這樣
命名規(guī)則的話查看normal
solutions.md里面就行
//唯一的public類,類名必須和文件名一致,不然就會報錯
public class Hello {//我是單行注釋使用兩個斜杠就可以使用注釋了//是只會在看代碼的階段存在,編譯后并不存在//但是我建議刪掉注釋,因為我打的是中文可能會出現(xiàn)編碼問題//如果你會改編碼的話那就是最好的,如果你不會的話刪掉就不會出問題了//或者你可以去看看normal solutions.md那個文件public static void main(String[] args) {/*這個是多行注釋使用杠星星杠的方式框柱*/System.out.println("Hello world");}
}//非public類可以無限多
class ABC {public static void main(String[] args) {System.out.println("Hello");}
}//只不過每個類被編譯后又會出現(xiàn)一個新的字節(jié)碼文件也就是.class文件
class QWE {}
如果看了第一天全文字還沒被勸退說明你還是有耐心的,可以真的開始學(xué)習(xí)Java了,
但是這里也很明顯因為有三個類雖然放在了一起但是編譯出來其實還是三個文件,就是說我其實直接再開兩個Java文件也是一樣的。這里我們在ABC
類和Hello
類中都有打印,我們來運行一下
這里的信息也告訴了我們,我們需要main
這么一個“方法”才可以運行,那就說明大家想要運行程序必須要有這么一個main
方法,只需要照著寫其實就可以了public static void main(String[] args)
然后想要打印信息只需要把信息放到System.out.println("");
的雙引號中間即可打印對應(yīng)的信息。
第二章 數(shù)據(jù)類型
每個語言都有數(shù)據(jù)類型,像Java、C、C++、C#、Python這些都是強類型語言,JS(JavaScript)、vb、php這些就是弱類型語言。
但是強類型語言也分明顯與不明顯,比如Java、C、C++、C#這些就需要先聲明再使用,然后Python是直接賦值但是底層類型還都是規(guī)定好的,整形就是整形,浮點就是浮點,字符串就是字符串。
弱類型語言就是要聲明也就只是聲明有這個變量并沒有規(guī)定是什么數(shù)據(jù)類型。
Java的數(shù)據(jù)類型有四種,每種又有其他的分類
- 整形
- byte 1字節(jié)
- short 2字節(jié)
- int 4字節(jié)
- long 8字節(jié)
- 浮點
- float 4字節(jié)
- double 8字節(jié)
- 布爾
- boolean 1字節(jié)
- 字符
- char 2字節(jié)
這些數(shù)據(jù)類型拿來使用的時候(聲明變量)都是做關(guān)鍵字的。就比如public
,class
,static
,void
這在上面變成了特殊顏色的就是關(guān)鍵字,在github上的配色方案應(yīng)該是紅色,然后剛剛上面說的8個數(shù)據(jù)類型也都是關(guān)鍵字。
先來講講字節(jié)
是什么(懂的可以跳過),1個字節(jié)
= 8位
,一個位就是2進制的數(shù),比如0000 0001
就是1,0000 0010
就是2,0000 0100
就是4,0000 1000
就是8,如果不會的但是細心的你會發(fā)現(xiàn)這不就是2的0到3次冪嗎,沒錯就是這樣,通過這樣的排列組合在到達0001 0000
的16之前,其實后四個數(shù)就能表示0 ~ 15,這就是二進制,然后8個位
為一個字節(jié)
,相當于byte一個字節(jié)那就可以裝下256個數(shù),但是要表示負數(shù)和正數(shù)和0,所以范圍是-128 ~ 127,比如int是4個字節(jié)也就是32位,那他的最小就是-2^31,最大就是
2^31 - 1,因為需要一個數(shù)去表示0。 浮點又是其他的方式存儲,布爾又是只有表示正確的true和表示錯誤的false,字符又是根據(jù)unicode進行存儲。
public class Hello {public static void main(String[] args) {int i = 50; //變量的聲明并賦值 = 號是賦值System.out.println(i);}
}
以上就是聲明變量,通過關(guān)鍵字 變量名的方式去聲明并賦值int i = 50
,在代碼里面單個=
的作用就是賦值
然后可以通過打印的方式來具現(xiàn)化,自然我們也可以做運算
public class Hello {public static void main(String[] args) {int i = 50;int i2 = 100;//在打印之中也是可以運算的System.out.println(i + i2);}
}
自然我們也可以拼接字符串來說明信息比如這樣,這個時候就要說+
號的不同作用了,在與字符串和任何值使用+
的時候他就會變成拼接,在數(shù)與數(shù)之間就是運算,自然在字符串和字符串中間也是拼接
public class Hello {public static void main(String[] args) {int num = 100;int num2 = 1000;int num3 = 500;//自然也有拼接System.out.println("num:" + num + num3 + " num3 + num2: " + (num2 + num3));}
}
明顯能看出其中的端倪,num + num3
并沒有相加而是拼接在了一起,而后面的(num2 + num3)
確實是相加在了一起,這就是區(qū)別,如果想要運算那就加上括號,如果要拼接那就使用和字符串相加的方式,這里也能清楚看到因為運算是從左到右的,所以他是先把"num:"
這個字符串和num
拼接,所以變成了字符串"num:100"
再下去計算也只是拼接而已。
當然我們的變量聲明可不只是能在main方法里的,還可以在main的外面進行聲明,這就要講到下一個知識點了對象
第三章 初識對象
這個其實思維和變量是一樣的,也是需要聲明并賦值,只不過他是這個變量里面還有東西需要使用
.
去獲取,然后從數(shù)據(jù)類型擴展到類名做聲明
public class Hello {int i = 50; //這個就是全局變量的聲明并賦值public static void main(String[] args) {//如果我想要使用這個在main之外但是在Hello類之內(nèi)的i話//那就需要創(chuàng)建這個類的對象像這樣Hello h = new Hello(); //這就是創(chuàng)建對象和變量差不多int i1 = 50000; //實際上是很像的//對象就相當于是把我們的這個Hello類拿過來當變量了//然后我們可以使用.的這個方式去獲取main之外Hello之內(nèi)的東西System.out.println(h.i);//自然我也可以更改掉這個i就像這樣System.out.println("change h.i");h.i = 500;System.out.println(h.i);}
}
如果你再創(chuàng)建一個對象hello,他的i自然還是50,自然也是獨立存在,你變更的只有h里的i,
public class Hello {int i = 50;public static void main(String[] args) {Hello h = new Hello();int i1 = 50000;System.out.println(h.i);System.out.println("change h.i");h.i = 500;System.out.println(h.i);Hello hello; //我先聲明hello = new Hello();//后賦值System.out.println(hello.i);}
}