Java基礎語法

Java標識符
Java所有的組成部分都需要名字。類名、變量名以及方法名都被稱為標識符。
規范
所有的標識符都應該以字母(A-Z或者a-z),美元符($)、或者下劃線()開始
首字符之后可以是字母(A-Z或者a-z),美元符($)、下劃線(
)或數字的任何字符組合
關鍵字不能用作標識符
標識符是大小寫敏感的
類名最好要大寫,用來區分他是一個類
java命名規范
(1)類名接口名:所有首字母大寫XxxYyyZzz
(2)變量名,函數名:xxYyZz
(3)包名:xxyyzz
(4)常量名 XXX_YYY_ZZZ
****Java關鍵字

這些保留字不能用于常量、變量、和任何標識符的名稱。(不用記,以后會接觸)
Java注釋:一定要寫
(被注釋內容不會被編譯,僅僅起到提示的作用,便于后期review代碼)
1.// 單行注釋
2./*
多行注釋
/
3./
*多行注釋,可以生成文檔,又叫文檔注釋 命令行輸入javadoc xxx.java
*/
常量
常量表示不能被改變的數值
變量
變量指的是內存中的一塊存儲區域,該區域有自己的名稱(變量名)和類型(數據類型),該區域的數據可以在同一類型范圍內不斷變化, 變量的作用范圍只在該“{}”中有效
int a; { a=6; } // a等于6 { int a =6;} //定義在{}內的變量,{}外不可以訪問
所以說如果你想要在{}之后訪問大括號里進行變化的變量,此變量必須在{}外聲明
定義變量的格式
1.數據類型 變量名 = 初始化值(聲明并初始化)
2.先聲明,再初始化
注意:(1)變量的定義格式是固定的,變量就如同數學中的未知數
(2)變量必須有 初始值
(3)變量只能 被聲明一次
二進制(了解)
java二進制采用 補碼 形式表示 正負數區分的標志:符號位(0正,1負)
正數補碼是其本身,負數補碼取反+1
所以 計算機二進制 與十進制轉換,要先把二進制轉換為原碼作為過渡再進行轉換。
1.十進制轉換為二進制: 除2取余,除盡為止,余數從上向下看為二進制源碼結果,由于是正數所以原碼和補碼相同

  1. 二進制轉換為十進制 :累加求和
  2. 負十進制轉換為負數二進制 :取絕對值,轉換為二進制,取反加1

    4.負二進制:取反加1,轉換為十進制,乘-1
    拓展: 為什么byte表示的是8個字節,范圍卻是-128到127呢?
    -128到127.共256個數。剛好可以用一個字節(8位)表示出來(2^8=256);
    01111111表示的是127 ,按道理128表示的是10000000,可是因為第一位是一個符號位,所以byte正數最大值就為127,當第一位等于1的時候就是負數,把10000000看作是一個負數的補碼,轉換為十進制就是把10000000取反加1為10000000十進制就是128,再乘-1為-128
    127后面是-128,最大的正數之后是最小的負數。這就跟鐘表一樣,12點鐘后面是1點中鐘一樣。
    byte b=(byte)128, 把128賦值給b,計算機語言 是通過二進制補碼表示的,但因為正數原碼補碼相同,所以b的值變成了10000000,這時你要輸出b,計算機發現第一位的符號位是1,則把它看成是負數的補碼,輸出時再轉換為十進制則變成負128( 賦值時,計算機接收的是二進制的補碼,輸出的時候把補碼轉換為原碼在轉換為十進制然后再輸出
    基本數據類型 :四型八種(可以想象是一種容器,承裝事物)
    整型 (整數):byte(1個字節8位 -128-127)、short(2個字節)、int(4個字節)、long(8個字節)
    浮點型(小數):float(4個字節,2的-149次方—2的127次方)、double(8個字節,非常大)
    布爾型(表示真假):boolean(1字節)
    字符型:char(2字節)用單引號括起來,只能是兩個字母,一個漢字等于兩個字符(0-65535)
    ascii掌握 a-z(97-122),A-Z(65-90),1-9(48-57),每個ascii都對應一個字符
    Java中默認的整數類型是int,如果要定義為long ,則要在數值后加上L或者l
    默認的浮點型是雙精度浮點,如果要定義float,則要在數值后面加上f或者F
    一個字節等于8位,1個字節等于256個數。2^8
    一個英文字母或者阿拉伯數字占一個字節
    一個漢字占2個字節
    可為數字加下劃線,讓人更易閱讀,編譯器自動去除
    轉義字符 :具有特殊含義的字符
    System.out.prinltn(‘\’’);
    \’算是一個整體標識一個單引號
    \v豎向跳格 \b退格
    \r回車(表示的是回到本行行首)
    System.out.println('h');
    System.out.println('\r');
    System.out.println('a'); //最后輸出的是 a因為\r回到了行首,a覆蓋了h
    \反斜線符"" \n新行
    \t跳向下一個tab位置(橫向跳到下一制表位置) 縮進的時候都要寫
    數據類型轉換
    1.自動類型轉換
    小類型可自動轉換為大類型
    byte a=12; int b=a byte自動轉換為int
    2.強制類型轉換
    (比如把裝滿水的大杯子往小杯子里倒水,多余的會溢出,而小向大倒沒有問題。)
    大類型轉換為小類型,可能損失精度
    int a=3;
    byte b=(byte)a;
    字符串類型 (引用類型)
    String str = ""; // 這個跟"abc"、"中國",本質上這都一樣,只是空串,長度為0罷了
    ""是空字符串,但是也是字符串,沒有什么東西。 //字符串初始化用“”,不用null
    而null是空的意思,什么都沒有,沒有地址。
    字符串與基本數據類型的轉換
    String s=“”+123; //基本數據類型轉換為字符串,空串加基本數據類型
    Integer.parseInt(數字字符串); //字符串轉換為數字
    Double.parseDouble(數字字符串);
    s.charAt(index)//字符串轉換為字符
    運算符( 相等是== ,賦值是= 千萬不要寫錯!
    算術運算符 :+ - * / % ++ --
    (1) int a=5; int b=2; int c=a/b; int表示整數,小數部分被舍棄,答案為2
    (2) int a=3;int b=4;double c=a/b; a/b運算之后是int型,舍棄小數部分為0,自動轉換為double增加精度變成0.0
    (3) int i=3; int a=i/2 + i/4 =1+0 每一次i的運算返回值都是int型
    (4) double a=3;int b=4;double c=a/b 兩數想運算, 返回的結果是兩數據類型中較大的(精度)
    整型運算自動轉換為int進行運算,浮點型運算自動轉換為double進行運算,因此要得到特定其它類型,需要進行強制轉換
    ****注:不知道有沒有有這樣的疑問:****
    為什么byte a=1+2; 是合法的而 byte a=1; byte b=2;byte c=a1+a2;就是非法的,這是因為a1+a2在運算的時候自動轉成了int型然后再運算,返回值變成了int型,或許還會想為什么兩者代表的都是1+2為什么第二個非法呢,因為在運算的時候第二個1和2從byte型的盒子里跑到了int型的盒子內,而第一個里的1和2不在任何盒子里,所以第二個如果要把它變成byte型,就要打破盒子也就是強轉
    i++先運算,先賦值,先輸出,再自加,自加 表示對本身的操作 等同于i=i+1(int i=5;int a=i++; 此時a=5,i=6 ) ** byte a=127 byte=++a; 是對a本身操作,a的類型并沒有轉換,而**
    byte c=a+1 右邊變成一個運算,所以會自動轉換為int型
    int i=5;int a=i++ + i++; 此時a=11,i=7第一個i++是5++,第二個i++因為第一個i++結束變成6++ ,所以a=5+6=11; i=i+1+1=7
    int b=i++ + i-- + i++ 5++ + 6-- + 5++ =16
    ++i 先自加,再賦值(int i=5;int a=++i; 此時a=6,i=6 )
    面試題
    int i=3; i=i++; i=i++; 輸出的i都為3,不變
    原因:其實a++的運算,是在a進行運算之前,先開辟一塊內存用來存儲變量a的復制,b真正指向的其實是a運算之前的復制,所以b的值為3
    而i=i++,由于兩邊變量相同,i的復制最后覆蓋了i++后的值

    i++在內存中是比較奇特的,而a=b+c 在內存中,b和c并不會復制,而是直接將b和c相加,得到的值賦給a
    邏輯和關系運算符
    !=表不等 == 表相等
    &&短路與,||短路或 如果第一個表達式能確定結果,第二個表達式就不進行計算
    &,| 兩個表達式都進行計算
    建議用短路與與短路或 ,避免一些錯誤產生,例:x!=0&&1/x 當x=0時確定結果,不會執行第二個表達式避免了錯誤的產生
    expression1 ^ expression2 異或,兩側真假相同,為假
    三元運算符
    condition?expression1:expression2 當condition為真時計算第一個表達式,為假計算第二個表達式
    面試題: System.out.println(3>2?2:3.0);
    注:1.表達式1和表達式2決定返回值類型
    2.如果表達式類型不一致,必須進行類型轉換,轉換為表達式類型中較大的一個類型,從而決定返回值
    ** ** 3.表達式1和表達式2中都可以再套一個三元運算符構成了復雜的三元運算符
    位運算符(針對二進制),1表示true,0表示false (了解)
    無符號右移:符號位不跟著移動,有符號右移>>>:符號跟著一起移動(不存在有符號左移)
    5<<2左移兩位 0000 0101 左移兩位后0001 0100
    5>>2
    若是int型表32位,則 1<<35 與1<<3相同,因為需要進行模32的運算
    1&1為1,否則為0 0|0為0,否則為1
    4取反為-5 4二進制為0100取反為1011,第一位為1表負數,-1去反轉換為十進制為-5
    面試題:把8變成2最快效率,把8右移二位(因為8/2計算機也會先轉換為2進制,再運算)
    輸入輸出
    控制臺輸入:構建Scanner對象,并與“標準輸入流”System.in關聯。
    Scanner in=new Scanner(System.in);
    String name=in.nextLine(); //nextLine()表示獲取一行
    String firstName=in.next(); //讀取一個單詞,以空格為分隔符
    int age=int.nextInt; //讀取一個整數,舉一反三可以讀取其它基本類型
    格式化輸出(了解)
    System.out.printf(“hello,%s,you‘ll be %d”,name,age)
    每一個以%字符開始的格式說明符都用相應的參數替換,f表浮點,s表字符串,d表十進制
    %8.2f 表示 打印8個字符,小數點后有兩位
    print 表示不換行的打印

歡迎加入學習交流群569772982,大家一起學習交流。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,002評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,400評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,136評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,714評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,452評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,818評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,812評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,997評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,552評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,292評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,510評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,035評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,721評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,121評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,429評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,235評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,480評論 2 379

推薦閱讀更多精彩內容

  • Java標識符 Java所有的組成部分都需要名字。類名、變量名以及方法名都被稱為標識符。 規范: 所有的標識符都應...
    孫浩j閱讀 603評論 0 0
  • 一、關鍵字 用于定義數據類型的關鍵字 基本數據類型 整數型(默認為 int) byte(8...
    陳凱冰閱讀 258評論 0 2
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,733評論 18 399
  • Win7下如何打開DOS控制臺? a:開始--所有程序--附件--命令提示符 b:開始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,608評論 4 12
  • 空調開了一會兒我才覺得還有點熱,一看溫度還停留在你設的26度,你有點怕冷;解開收納袋要拿電源線,發現它們...
    銅豌豆Aslan閱讀 255評論 0 1