JavaStudy 入門-基礎語法(Day03 - Day05)

【Java語言基礎】
* 標識符
* 關鍵字
* 字面值
* 變量
* 數(shù)據(jù)類型
* 二進制
* 字符編碼
* 運算符
* 控制語句
* 方法

一、 標識符(黑色/可自定義處)

(一)起名規(guī)則:

  1. 不可用數(shù)字開頭
  2. 可: $胸墙、_ 冀自、字母夺鲜、數(shù)字
  3. 區(qū)分大小寫

(二)規(guī)范

  1. 見名知義為佳
  2. 不要太長
  3. 方法和變量起名, 采用小駝峰命名法, 如: firstName
  4. 類和接口起名, 采用大駝峰命名法, 如: GoodStudent
  5. 常量名全部大寫

二皆尔、字面值

即數(shù)據(jù), 類型有:

boolean: 1字節(jié) false和true

數(shù)字: int 4 double 8

字符串: 雙引號, “ABC”

字符: char 2, 單引號, ‘A’

三、變量

  1. 定義

值可變, 本質(zhì)是內(nèi)存中一塊空間的名字, 是存儲數(shù)據(jù)的基本單元

這塊空間是有類型币励、有名字慷蠕、有字面值的

(數(shù)據(jù)類型指導程序在運行階段該開辟多大的空間)

  1. 格式:

聲明:數(shù)據(jù)類型 變量名; 注意變量名是小駝峰

? int a, b, c; ?? 聲明完成≠開辟了空間

? 在同一個作用域中, 變量名不可重名; 聲明只有 1 次

初始化:變量名 = 字面值 字面值與數(shù)據(jù)類型一致; 初始化才可用\空間才已被開辟

聲明+初始化:數(shù)據(jù)類型 名字 = 值;

  1. 訪問一個變量的2種形式
    • get 讀取
    • set 設置/修改
  1. 變量的作用域: 出了{}就不認識了(方法結束后, 變量的內(nèi)存就釋放了)
  1. 變量的類型

    1)局部變量

    ? 在方法體內(nèi)的變量

    2)成員變量

    ? 在方法體外、類體之內(nèi)聲明的變量

```java
public class HelloWorld {
    public static void main(String[] args) {
        int i = 1;
        System.out.println(i);//就近訪問1處
    }

    static int i = 2;
    //若main方法體內(nèi)找不到,會找全局有否static變量可訪問

    public static void doSth() {
        int i = 3;
        //不可跨方法體訪問(1食呻、2處都找不到也不會找到3處
    }
}
```

四流炕、數(shù)據(jù)類型

作用:指導JVM在運行程序時需要給該數(shù)據(jù)分配多大的內(nèi)存空間

類型-大類: 基本數(shù)據(jù)類型引用數(shù)據(jù)類型

基本數(shù)據(jù)類型——四大類澎现、八小種

(一) 整數(shù)型

byte short int long 1 2 4 8

(二) 浮點型

float double 4 8

數(shù)字類型-練習

  1. 如何表示一個數(shù)字的正負?
  2. byte的最大值是?
  3. 00000000 00000000 00000000 10000000是什么類型?
  4. 00000000 00000000 00000000 10000000 - 1 = ?
  5. 八進制與十六進制的開頭?
  6. 整數(shù)字面值默認類型為?如何轉為其他, 比如long?
  7. 是否有精度比double更高的類型?
  8. 浮點數(shù)字面值默認類型為?如何轉為其他??

key

  1. 最高位(最左邊) 0正1負

  2. 01111111

  3. int 4個字節(jié)

  4. 00000000 00000000 00000000 01111111

  5. 0和0x

  6. int; 后加L

    long y = 1234567899;    //編譯報錯
    long z = 1234567899L;   //編譯通過
    
  7. SUN在基礎SE類庫內(nèi)提供了更高精度的類型(引用數(shù)據(jù)類型而非基本數(shù)據(jù)類型): java.math.BigDecimal

  8. double; 后加F

(三) 布爾型

bool 2

底層 0假1真

有效值 false和true

(四) 字符型

char 2

‘a(chǎn)' 97 01100001

’A' 65 01000001

‘0’ 48 00110000

(五)類型轉換規(guī)則

  1. 除bool其他都可相互轉換
  1. 自動類型轉換: 小容量轉為大容量

    • byte不可向char轉換;

    • short、char都可向int轉換

  1. char可以get更大的數(shù)(因為字符無正負
  1. 強制類型轉換: 大容量轉換為小容量

    格式: int y = (int) x; //long x = 100L;   賦值左右類型要一致
    
    • 結果: 高位(左邊)的二進制會被砍掉(精度損失每辟、謹慎使用)
  1. 多種類型混合運算實現(xiàn):

    • 各自都轉換成大容量的, 再做運算

      • int值不超過小弟們的取值范圍,也可直接賦給小弟們

五剑辫、運算符

(一)加減乘除

(二)關系運算符

= != > >= < <=

結果: 布爾型

(三)賦值運算符

=

+= -= %= *=

(四)邏輯運算符

兩邊都是布爾, 最后結果也是布爾

符號 說明
& 有false則false
| 有true則true
! 取反
^ 異或, 兩邊不一樣就是true
&& 短路與: 左false則false (不算右可得)
|| 短路或: 左true則true (不算右可得)

根據(jù)需求決定要不要用短路邏輯運算符 (第二個算子是否需要執(zhí)行)

另可劃分:布爾運算符與位運算符

類型 符號
布爾運算符 &&,||, &, |
位運算符 &, 按位與; |, 按位或; ^, 按位異或; ~, 按位非; >>, 右移; >>>, 右移,左邊空出位以0填充; <<, 左移

Q: 2->8的最快方法?

A: 00000010 將1左移2位

(五)三目運算符/條件運算符

(六)+

  1. 字符+

    ASICII碼, char -> int

  2. 字符串+

    拼接: 表達式中只要有一個字符串, 則進行的都是拼接操作

六、輸入

三步驟

  1. 導包

    import java.util.Scanner;
    
  1. 創(chuàng)建對象

    Scanner sc = new Scanner(System.in);
    
  1. 接收數(shù)據(jù)

    Int i = sc.nextInt();
    

七渠欺、方法function

(一)格式

[修飾符列表] 返回值類型 方法名(形參列表){  //方法名要有動詞屬性, 見名知義, 不同功能區(qū)別也要大一點
    方法體  //main方法里要短,要學會抽離方法
}

1. 修飾符列表

該項為可選項

Q: 方法有static關鍵字, 如何調(diào)用該方法?

A: 類名.方法名(實參列表);

? 但有時可省略類名: 該方法在當前類中

2. 返回值

- 非void的方法

1). 返回格式必須為return 值; (值要相對應)
2). 雖然有返回值, 但調(diào)用者可選接收否 (使用變量接收)
3). 可直接輸出結果, 不用必須變量才可輸出

- void方法

? return;

3.內(nèi)存分配

JVM虛擬內(nèi)存模型

1). 方法只定義, 不調(diào)用, 是不會執(zhí)行的; 并且在JVM中也不會給該方法分配“運行所屬”的內(nèi)存空間

2). JVM內(nèi)存劃分
- 方法區(qū)內(nèi)存——存方法代碼片段 (.class字節(jié)碼文件的一部分)
(1) 字節(jié)碼文件在類加載的時候, 類加載器將其放入方法區(qū)中(方法區(qū)內(nèi)存最先有數(shù)據(jù))
(2) 方法代碼片段可以被重復調(diào)用: 每次調(diào)用都需要給該方法分配獨立的活動場所(棧)
(3) String.class 妹蔽、System.class ... 也在此 (rt.jar中)
- 堆內(nèi)存
- 棧內(nèi)存
(1) 分配方法運行所屬的內(nèi)存空間——壓棧(局部變量的內(nèi)存在這里)
(2) 釋放該方法的內(nèi)存空間——彈棧
(3) 最先調(diào)用main方法, 而它最后結束

image-20200212205633951.png

(二)方法重載/overload

  1. 功能相似時,盡可能讓方法名相同 (不同功能名字也要有區(qū)別)

  2. 重載情況:在同一個類中, 方法名相同, 但參數(shù)列表不同: 參數(shù)的數(shù)量、順序挠将、數(shù)據(jù)類型不同 (方法重載僅和方法名+參數(shù)列表有關, 而與返回值類型胳岂、修飾符列表無關)

  3. 僅參數(shù)名不同不構成重載

public static void m1(int a , int b);
public static void m1(int b , int a);   //方法重復,而非重載

(三)方法的遞歸調(diào)用

  1. 無遞歸出口: java.lang.StackOverflowError (棧內(nèi)存溢出錯誤)

  2. 耗內(nèi)存,盡量不用 (遞歸太深也會導致棧溢出錯誤)

  3. 感覺: “大” -> “小”的套娃, 遞歸出口時最小情況

  4. 出口:

    if(條件){
        return 值;
    }
    

以上是全部基礎語法的內(nèi)容, 算是開了門, 接下來要邁門檻啦~

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市舔稀,隨后出現(xiàn)的幾起案子乳丰,更是在濱河造成了極大的恐慌,老刑警劉巖镶蹋,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異赏半,居然都是意外死亡贺归,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門断箫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拂酣,“玉大人,你說我怎么就攤上這事仲义∩舭荆” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵埃撵,是天一觀的道長赵颅。 經(jīng)常有香客問我,道長暂刘,這世上最難降的妖魔是什么饺谬? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮谣拣,結果婚禮上募寨,老公的妹妹穿的比我還像新娘。我一直安慰自己森缠,他們只是感情好拔鹰,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贵涵,像睡著了一般列肢。 火紅的嫁衣襯著肌膚如雪恰画。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天例书,我揣著相機與錄音锣尉,去河邊找鬼。 笑死决采,一個胖子當著我的面吹牛自沧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播树瞭,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼拇厢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了晒喷?” 一聲冷哼從身側響起孝偎,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凉敲,沒想到半個月后衣盾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡爷抓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年势决,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蓝撇。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡果复,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出渤昌,到底是詐尸還是另有隱情虽抄,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布独柑,位于F島的核電站迈窟,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏忌栅。R本人自食惡果不足惜菠隆,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狂秘。 院中可真熱鬧骇径,春花似錦、人聲如沸者春。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钱烟。三九已至晰筛,卻和暖如春嫡丙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背读第。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工曙博, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人怜瞒。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓父泳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親吴汪。 傳聞我的和親對象是個殘疾皇子惠窄,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

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

  • Win7下如何打開DOS控制臺? a:開始--所有程序--附件--命令提示符 b:開始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,590評論 4 12
  • 目前MaxMind對MMDB的讀寫支持如下Writer:perlReader:CC#JavaPerlPHPPyth...
    openex閱讀 8,382評論 0 0
  • Java是一種可以撰寫跨平臺應用軟件的面向?qū)ο蟮某绦蛟O計語言漾橙。Java 技術具有卓越的通用性杆融、高效性、平臺移植性和...
    Java小辰閱讀 1,104評論 0 2
  • DAY 01 JAVA簡述 Java是由SUN公司在1995年推出的一門高級編程語言霜运,是現(xiàn)今服務器端的首選編程語言...
    周書達閱讀 902評論 0 0
  • 脾歇、6一、基本知識 1.JDK和JRE的區(qū)別 答:JDK是java語言開發(fā)工具包淘捡,包含JRE和開發(fā)工具(javac....
    夢游的沙師弟閱讀 1,197評論 0 4