第一天課程回顧:
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 函數重載