java基礎學習第二天

第一天課程回顧:
jvm: 虛擬機 snadbox 沙箱
jre: jvm + 核心類庫
jdk:jre + 工具軟件(常用的 javac編譯工具、java運行工具)

jdk安裝好後:需要設置環境變量
 java_home=C:\myprograms\jdk1.8.0_101\   設定jak安裝路徑
 path=%java_home%\bin        將java_home變量加入path環境變量中
 classpath=.;%java_home%\lib\tools.jar;%java_home%\lib\dt.jar   爲java設置目錄、jar包和zip包的類搜索路徑,爲java運行工具服務用於搜索類文件。需要將當前目錄 .  設置上,java_home變量下lib\(tools.jar|dt.jar)

java -classpath 類庫路徑 類名   在java運行時指令中指定的類庫優先級最高

-----------------------------------------------------------------

第二天
-----------------------------------------------------------------
 class  //類
 interface //接口
 byte  //字節 bit   1個字節有8位 首位爲符號位
 short  //短整型 2byte
 int  //整型   4byte
 long  //長整開 8byte
 float  //浮點型
 double  //雙精度浮點
 char  //字符
 boolean  //布爾  false true
 void  //空
 null  //空、不存在
 esel  //否則
 switch  //分支
 case  //情況
 default  //默認、缺省
 while  //當..   循環
 do  //
 for  //for 循環
 break  //中斷
 continue //繼續
 return  //返回

 【訪問權控制】
 private  //私有的
 proected //受保護的
 public  //公共的

 【class function  modifier】用於定義類、函數、變量修飾符的關鍵字
 abstract //抽象
 final  //最終的
 static  //靜態的
 synchronized //同步
 extends  //擴展
 implements //實現
 new  //新建
 this  //當前
 super  //超類、父類
 instanceof //是否是xxx實例
 try  //嘗試
 catch  //捕獲
 finally  //最終
 throw  //拋出
 throws  //定義類聲明時,拋出
 package  //包
 import  //導入 export  導出
 native  //本地的
 transient //瞬時的、暫時的
 asset  //斷言

標識符
----------------------------------
在程序中定義定的一些名稱
 英文字母
 數字 0-9  不能以數字開頭
 符號:_  和  $
 區分大小寫

java中的名稱命名規範
-------------------------
 包名:aaa.bbb.ccc.ddd   全部小寫
  類  :hellodWorld ----->   HelloWorld  ,  多單詞組成,所有單詞首字母大寫
 變量和函數:convertStringToInt  --->  convertString2Int  多個單詞組成,第一個單詞都小寫,後面每個單詞首字母大寫
  字下的函數不要過長  converStr2Int  簡寫
 常量:所有字母都大寫  例: final String BRAND="benz"  這裏的常量名爲全大寫  多個單詞組成加下劃線連接  XXX_YYY_ZZZ

註釋
--------------
 1.單行註釋
  //             
 2.多行註釋
  /* 

  */
 3.文檔註釋
  /**    

  */
常量
--------------------
 1.所有整數
 2.所有小數
 3.布爾型常量 true false
 4.字符常單 用單號號('')標識
 5.字符串常量  用雙引號("")標識
 6.null常量   就是null

 對於整數有四種表現形式
 二進制
 八進制
 十進制
 十六進制:0-9  A-F 用0x開頭表示

 2^10 = 1024
 2^20 = 1024K = 1M
 2^30 = 1024M = 1G
 2^40 = 1024G = 1T

 在java中的負數是採用補碼的方式存儲的,取反 + 1 。
 java是強類型語言,就是對於每一種數據都定義了明確的具體數據類型,在內存中分配了不同大小的內存空間。每種數據使用時必須定義類型。

作業
----------------
 1.負數的表現形式,爲什麼如此設計?
 2.-128是在內存中是如何存儲的?推算過程?
 3.-1的表示表式如何?
 4.正負數是否都支持補碼的方式?
 5.正數是否是負數的減一取反?

 

java中基本數據類型:primitive(基本)
 基本數據類型
  數值型
   整數類型 byte short int long
   浮點類型 float double
  字符型 char
  布爾型 boolean
 引用數據類型
  類 class
  接口 interface
  數組 []
默認數據類型
 整數默認 int   小數(浮點數)默認 double

升格是自動轉換,隱式轉換
降格是強制轉換,顯示轉換

表達式的數據類型自動提升
 所有的byte型、short型和char的值將被提升到int型
 如果一個操作數是long型,計算結果就是long型
 如果一個操作數是float型,計算結果就是float型
 如果一個操作數是double型,計算結果就是double型

&(與)  單個&,boolean1 & boolean2 = 兩側都參與運算
|(或) 單個|,boolean1 | boolean2 = 兩側都參與運算
&& :boolean1 && boolean2  當 boolean1 = false,boolean2不參與運算
|| : boolean1 || boolean2  當 boolean1 = ture,boolean2不參與運算
^  : boolean1 ^ boolean2 => boolean1 == boolean2  ---> 兩值相等時爲false,否則爲ture
!  : !boolean1  取反
~  :~按位取反  


作業:
 邏輯運算爲何不存在短路的情況? 說明理由
----------------------------

位運算符
 << : 有符號左移  == x 2 ^n   (空位補0,被移除的高位丟棄,空缺位補0)
 >> : 有符號右移  == / 2 ^n   (被移位的二進制最高位是0,右移後,空缺位補0,最高位是1 ,空缺位補1)
 >>> :是無符號移動  (被移位二進制最高位無論是0或是1,空缺位都是0補位)
 &  :二進制位進行&運算時,只有1&1時結果是1,否則是0
 |  :二進制位進行|運算時,只有0|0時結果是0,否則是1
 ^  :相同二進制位進行^運算時,結果是0 1^1=0  0^0=0  不相同二進制位^ 運算結是1  1^0=1  0^1=1

三元運算符
 格式: (條件表達式) ? 表達式1 : 表達式2 ;
 條件爲ture 結果爲表達式1  結果爲false 結果爲表達式2
 例:
 2 >3 ? "aaa" : "bbb"  
 輸出結果爲 bbb   因爲2不可能大於3  所以輸出第二個結果  有些像EXCEL中的IF函數;

程序流程控制
判斷結構
 if語句三種格式
 1. if (ture)
     {
  執行語句;
     }
 2.if (條件表達式)
     {
  執行語句;
     }
     else
     {
  執行語句;
     }
 3.if (條件表達式)
     {
  執行語句;
     }
     else if (條件表達式)
     {
  執行語句;
     }
     .....
     else
     {
  執行語句;
     }
if 特點:
 1.每一種格式都是單條語句。
 2.第二種格式與三元運算符的區別:三元運算符算完後要有值出現,好處是可以寫其他表達式
 3.條件表達式無論寫成什麼樣子,只看最終結構是否是 ture 或 false.

switch 選擇結構 分支語句
 特點:
 1.選擇的類型只有四種:byte short int char
 2.case之間與default沒有順序,先執行第一個case,沒有匹配ase執行default
 3.結束swicht語句有兩種情況:遇到break,執行到swicth結束
 4.如果匹配的case或default都沒有對應的break,將繼續執行,直到遇到break,或語句結束。

練習
輸入一個月份,確認是哪個季度的。


循環語句
-----------
    while  與  do while區別
    do while 至少執行一次
    while 先判斷再執行
    do while  先執行,再判斷

for循環
----------------
for(初始化表達式 ; 循環體表達式 ;  循環後表達式)
{
.......
}
    執行順序:
    1、執行初始化表達式,並只執行一次;
    2、執行循環體表達式
    3、進入循環體內執行
    4、結束本次循環;
    5、執行循環後表達式
    6、返回循環體表達式;
    7、至到表達式

循環嵌套
------------
    while(exp1){
        while(exp2){
            ....
        }
   
    }

99乘法表必須掌握
-------------
使用while和for 兩種形式嵌套編寫,正方形 正三角形  倒三角形 三種形式

使用for循環輸出正三角形九九乘法表
======================================================================
class for99
{
 public static void main(String[] args){
  /*99乘法表 for循環*/
  for (int row=1 ; row < 10 ; row++)
  {
   for (int col=1 ; col < (row+1) ; col++ )
   {
    System.out.print( row + "x" + col + "=" + (row*col) + "\t");
   }
   System.out.println(" ");
  }
        //*99乘法表 for循環結束
 }
}
==========================================

作業:
-----------------------
    使用循環嵌套輸出用星拼成的空心的三角形,類似下面的形式 正的或倒的
        *
      *   *
     *     *
    *********
    1、空心三角形
    2、倒三角形
=====================================
空心正三角形

class  printstar
{
 public static void main(String[] args)
 {
  //確定總行數
  int hang=9;
  //根據總行數確定總的循環次數
  for(int i=1;i<=hang;i++)  //定義變量i,從1加總行數
  {
   for(int k=hang;k>i;k--)   //輸出第行左側星號空格位,先定義空格位變量等於總行數,並逐行減1,當空格變量小於當前行數變量時終止循環
   {
    System.out.print(" "); //按行變量星輸出小於行變量值的空格數量,此方式可形成空格的倒三角形
   }
   //輸入空心三角形循環
   for(int j=1;j<=2*i-1;j++)
   { 
    //通過if else 結合 或或布爾運算,實現循環輸出星號與空格
    if (j==1||j==2*i-1||i==hang) {
     System.out.print("*");
    }else {
     System.out.print(" ");
    }
   }
   System.out.println();
  }
 }
}

--------------------------------------
將空心正三角形封裝到函數中

class  printstar
{
    public static void main(String[] args)
 {
 xing(4);  //調用函數根據傳入變量值打印星號
 }

 public static void xing( int x)   //封裝爲函數
 {
  //確定總行數 根據傳來的參數來確定總行數
  int hang=x;
  //根據總行數確定總的循環次數
  for(int i=1;i<=hang;i++)  //定義變量i,從1加總行數
  {
   for(int k=hang;k>i;k--)   //輸出第行左側星號空格位,先定義空格位變量等於總行數,並逐行減1,當空格變量小於當前行數變量時終止循環
   {
    System.out.print(" "); //按行變量星輸出小於行變量值的空格數量,此方式可形成空格的倒三角形
   }
   //輸入空心三角形循環
   for(int j=1;j<=2*i-1;j++)
   { 
    if (j==1||j==2*i-1||i==hang) {
     System.out.print("*");
    }else {
     System.out.print(" ");
    }
   }
   System.out.println();
  }
 }
}


=======================================

函數
--------------------
 1、定義在類中的具有特定功能的一段獨立小程序。
 2、也稱爲方法
 格式
 1、修飾符  返回值類型  函數名(參數類型1 形式參數1,參數類型2 形式參數2,....)
    {
  執行語句;   函數體body
  return 返回值; 只有是void的返回值纔可以不寫return 
    }
   說明:
   1、返回值類型:函數運行後的結果是數據類型
   2、參數類型:是形式參數的數據類型
   3、形式參數:是一個變量,用於存儲調用函數時傳遞給函數的實際參數,僅在函數內有效,就是大括號內。
   4、實際參數:傳遞給形式參數的具體數值
   5、return:用於結束函數
   6、返回值:該函數運算後的結果,該結果會返回給調用者。
   注:函數內不可以再定義函數 不支持嵌套

將九九乘法表自定義成函數使用
====================================
class FunctionDemo1
{
 public static void main(String[] args)
 {
  print99(2,2);
  print99(4,5);
  print99(8,9);
  System.out.println(sum(1,2,3,4));
 }

  /* 自定義打印輸出九九乘法表函數,
   並對函數設值可以向函數傳參數
  */
  public static void print99(int x , int y)
 {
  for ( int i = 1; i <= x ; i ++ )  //根據傳來的變量確定總行數
  {
   for (int j =1 ; j <= y ; j++ )   //根據傳來的變量確定總列數
   {
    System.out.print(i + "x" + j + "=" + (i*j) + "\t");
   }
   System.out.println();   //每行結束後進行一個換行
  }
  System.out.println();  //函數每運行一次輸出一個換行
 }

/*
定義函數,當計算N多個數求和合就可以使用這種方式,這是變長參數
*/
 public static int sum( int... args)
 {
  int temp = 0 ;
  for (int i = 0; i < args.length  ; i ++ )
  {
   temp = temp + args [i];  //args(i)這是數組的訪問方式
  }
  return temp ;  //返回值
 }
}

--------------------------
輸出結果
1x1=1   1x2=2
2x1=2   2x2=4

1x1=1   1x2=2   1x3=3   1x4=4   1x5=5
2x1=2   2x2=4   2x3=6   2x4=8   2x5=10
3x1=3   3x2=6   3x3=9   3x4=12  3x5=15
4x1=4   4x2=8   4x3=12  4x4=16  4x5=20

1x1=1   1x2=2   1x3=3   1x4=4   1x5=5   1x6=6   1x7=7   1x8=8   1x9=9
2x1=2   2x2=4   2x3=6   2x4=8   2x5=10  2x6=12  2x7=14  2x8=16  2x9=18
3x1=3   3x2=6   3x3=9   3x4=12  3x5=15  3x6=18  3x7=21  3x8=24  3x9=27
4x1=4   4x2=8   4x3=12  4x4=16  4x5=20  4x6=24  4x7=28  4x8=32  4x9=36
5x1=5   5x2=10  5x3=15  5x4=20  5x5=25  5x6=30  5x7=35  5x8=40  5x9=45
6x1=6   6x2=12  6x3=18  6x4=24  6x5=30  6x6=36  6x7=42  6x8=48  6x9=54
7x1=7   7x2=14  7x3=21  7x4=28  7x5=35  7x6=42  7x7=49  7x8=56  7x9=63
8x1=8   8x2=16  8x3=24  8x4=32  8x5=40  8x6=48  8x7=56  8x8=64  8x9=72

10
===================================
在實際工作中,就是編寫大量的函數,供自己與團隊使用。

例:
封裝函數
public static void out (String str){
 System.out.println(str);
}
這個打印函數使用時,直接使用 out就可以替代System.out.println這一長串的代碼了,簡化的代碼的輸入量。
out(aaa);

編程可簡單理解爲 定義函數的過程  調用函數的過程  創建對象的過程

-------------------------
函數重載
 重載概念 
 在同一個類中,允許存在一個以上的同名函數,只要它們的參數個數或參數類型不同即可。返回值類型無要求。

作業:
------------------
定義 函數:
 加 、add
 減、subtract
 乘、multiple
 除 divide
支持 float double long int  函數重載

 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章