java基礎1

1、程序設計語言
計算機(工具)===》接受一系列的命令(程序)
載體(程序語言) 語法
計算機還是(機器語言)
2、語言:彙編、VB、C++、java、C#
區別語法不同。轉化成機器語言的機制不同。

高級語言與低級語言的
是與自然語言的距離

程序(字符)源文件(文本文件)
程序運行 機器碼文件(二進制文件)

.exe 是可執行文件(是機器碼文件)

java的歷史背景,java sun—後被oracle收購。
要跨平臺,是操作系統的平臺。
PC:有unix、windows
手機:
oak投標失敗了,
Internet 互聯網興起
A與B機器不同系統
利於代碼通過網絡傳播

特點:
1、跨平臺性
2、簡單 PK c++
3、純面向對象

編譯 編譯器:源文件===機器碼文件。

解釋 解釋器:源文件===逐行翻譯並運行。
basic
編譯的方式運行效率高
解釋性的方式可以跨平臺
java的運行方式
現編譯後解釋
源文件的後綴名 .java—— .class 字節碼文件—–放在解釋器當中,解釋運行。

.class文件:平臺中立,跨平臺的。

字節碼文件 不等於 機器文件

int i=40000; 不具備跨平臺
os1: int 2B 32767
os2: int 4B 2147483647

解釋器— 請爲我創建int空間 ,存儲40000
OS1:接受是錯誤的代碼 OS2:接受可以

針對上面的問題:
VM 虛擬機 是個軟件,在底層操作系統當中模擬出完整的操作,好像是一個真正的計算機在運行一樣。

一雙系統 VM Wave

解釋器—-JVM(是個軟件,不是硬件,所以沒有內存) —操作系統
jvm告訴os1 創建2個int空間

.java–編譯器—>.class
.class–解釋器–>JVM –>OS(操作系統)
JVM:Java虛擬機 屏蔽不同OS的差異
JVM+解釋器=JRE(Java 的運行環境)
編譯器+JRE+工具+類庫=JDK(java開發工具包)

將類編譯,編譯的命令叫javac

環境變量:
JAVA_HOME: JDK的安裝目錄
path: JAVA_HOME/bin目錄
CLASSPATH: .
編譯:
javac 原文件名
一個類編譯之後,會對應一個.class文件。
運行:
java 類名

一個源文件中可以定義多個類。
一個源文件中只能定義一個公開類,公開類的類名,必須和文件名完全相同。

三個環境變量:
JAVA_HOME: JDK的安裝目錄,是給其他軟件用的。
tomcat 使用web編程,會用到這個軟件。
tomcat安裝程序,會檢查你是否安裝jdk。就會找有沒有一個環境變量是JAVA_HOME 。
PATH : 是找根目錄去運行。
CLASSPATH:是編譯器和虛擬機到哪裏去找需要的類

包:類—-》.class文件

包=文件目錄 一個包對應一個目錄
這個類屬於哪一個包
package + 包名
.class文件放在包裏面
一個類有了包,就像是一個人有了姓。姓+類名

javac -d . Hello.java

.是源目錄
java 包名.類名(權限定名)

任何類都放在某一個包下面。
用到其他的類,要寫包名。
引進包名 import java.util.List;
java中任何一個語句,都要以;結束。

import java.util.; 包裏面的所有類
import java.lang.*;

import 引入包,避免重複的寫包名

String System
他們是 java.lang.String
系統會默認爲每個程序加上import java.lang.*; 系統默認增加的

package 0-1
import 0-n
class 1-n 公開類 0-1

3、註釋
描述代碼的文字。
寫程序的標準,好與壞區分。
能夠正確運行的前提,代碼的可讀性。

一個程序員的軟件,更新的,要修改時,要在原基礎上修改。
加註釋法:1) // 單行註釋
2) /* */ 多行註釋 多行註釋中不能再嵌套多行註釋。
3) /* / 多行註釋,配合JavaDoc工具使用。
( /* / ) –javadoc—> 文檔
看index.html
javadoc -d doc TestComment.java 要用到bin目錄
生成的文檔是API文檔
想知道類庫怎麼用,需要查一下API的文檔。

4、標識符
語法:
1)字母、數字、_、$ 首字母不能是數字
2)大小寫敏感。
3)不能使用關鍵字和保留字。
4)沒有長度限制。
英文字母永遠不會亂碼的,中文會亂碼。
java關鍵字都是由小寫字母組成的。
true、false 也不能做標識符。

習慣:
1)望文生義
2)大小寫
包名:全小寫
類名:單詞首字母大寫
變量/函數:首單詞小寫,後面的單詞首字母大寫
常量名:全大寫

5、數據類型 變量
變量—–》 存儲空間(存儲數據)
強類型 變量類型必須和數據類型相對應
定義變量 : 變量類型 變量名;
int a=1、b=2;
數據類型
對象類型 (每寫一個類,就是對象類型)
簡單類型(基本類型,原始類型) 8種

簡單類型:整數 byte 1B -128—127
short 2B -32768–32767
int 4B
long 8B( 一個字節是8位)

——– 第一類是符號類 0 1
字面值:
float 4B
double 8B

1.4 默認是double
1.4e10=1.4X 10的10次方

char 2B 字符unicode編碼方式
char類型的字面值:
char c1= ‘A’ ;
char c2=65;
char c3=’\u0041’ ;
16進制 41
10進制 65

轉義字符 ‘\t’ ‘\n’ ‘\” ‘\”’ ‘\’
boolean字面值 true false 不能參與運算

String 字符串 有字面值 “Hello World”
只能參與加法運算,是字符串連接。
‘A’+‘B’ 131
“A”+“B” AB

類型轉換
int i; short s;

自動類型轉化 i=s;
強制類型轉換 s=(short)i;
自動類型提升: byte a1=1,a2=2;
byte a3=(byte)(a1+a2);
a+b
如果a或b是double =====>double
如果a或b是float=====》float
如果a或b是long=====>long
默認 ====>int
6、表達式
變量和字面值用某個運算符連接的式子。
表達式必須有固定的值
運算符
+ - * / %
a+=3 不會部分類型提升

= += -= *= /= …
++ –
a++ 等同於 a+=1
++a
布爾運算符

== 結果是false true

< <= >=
&& 與
|| 或
! 非
類運算符 & | ^ -
?: (a>b)?3:2

7、局部變量
在函數內部定義的變量
1)先賦值,後使用
2)作用範圍:{ }代碼塊。定義開始,到定義它的代碼塊結束。
3)在重合範圍內,不允許兩個局部變量發生命名衝突。

8、條件語句
1) if(布爾表達式){}
布爾語句爲真,就執行後面的代碼。爲假,則不執行後面的代碼。
if(布爾表達式){}
else{}
布爾語句爲真,就執行後面的代碼。爲假,則else後代碼塊。

 if(布爾表達式){}
     else if(){}
     else if(){}
2) switch-case     用的少,case後只能是一個數,不能判斷。
   switch(只允許整型表達式)bety  short int char
package chp2;
public class TestSwitch{

     System.out.print("請輸入一個整數:");
        java.util.Scanner s=new java.util.Scanner(System.in);
        int i=s.nextInt();

     switch(i){
          case 5:System.out.println("優秀");break;
          case 4:System.out.println("良好");break;
          case 3:System.out.println("及格");break;
          case 2:System.out.println("不及格");break;
          case 1:System.out.println("不及格");break;
          default:System.out.println("輸入有誤");
     }

}
 while(布爾boolean){}                    
  布爾語句爲真,就執行後面的代碼。爲假,則不執行後面的代碼。
  代碼執行以後,再回到布爾條件判斷。爲假,才跳出循環。
package chp2;
public class TestIf{
    //讓用戶輸入一段整數
    public static void main(String[] args){
        System.out.print("請輸入一個整數:");
        java.util.Scanner s=new java.util.Scanner(System.in);
        int i=s.nextInt();
    //如果這個整數是偶數,側打印偶數。
         if(i%2==0){
        System.out.println("偶數");   
        }
        else{
            System.out.println(i+"奇數"); 
        }
    }   
}

循環流程
while(布爾boolean){} 不確定循環 0——多次
布爾語句爲真,就執行後面的代碼。爲假,則不執行後面的代碼。
代碼執行以後,再回到布爾條件判斷。爲假,才跳出循環。
代碼塊裏是循環體。

do{} 1-多次
while(); 先執行循環體,在判斷條件。 不確定循環

package chp2;
public class TestLoop{
public static void main(String[] args){
      /*int i;
      while(i<10){
      System.out.println("Hello World"+i);
      i++;

      }
      */
      int i=0;
      do{
         System.out.println("Hello World"+i);
         i++;    
      }
      while(i<10);
}
}

for循環 適合用在確定循環裏(事先知道循環幾次) (最常用的) 循環體0-多次
for(1)、賦值語句;2)、條件;語句自加或自減){}
判斷條件,如果爲真就執行循環體,如果爲假就跳出不執行。
3)循環體 4)i++ 5)條件
for(int i=0;i<3;i++){
循環體

9、函數
是代碼:執行特定的任務
定義位置:類中,任何函數的外部
一個類中,多個函數的順序是無關緊要的。
聲明 public static 返回值類型 函數名(參數表)
形式參數(形參):相當於函數內部的有效的局部變量(從定義開始,到代碼塊結束)。
實現:{} 必須和聲明一致(只要之返回值類型)
調用函數:
函數名(實際參數);實參會依次給形參賦值
調用函數,程序流程會進入函數,函數返回,程序流程會返回到函數調用點。

函數的作用:
1)避免冗餘代碼
2)提高程序的可維護性
3)提高程序的重用性
4)提高程序的靈活性

嵌套與遞歸,下面是遞歸

package chp2;
public class TestFunctions{
public static void main(String[] args){
    ma1(3,'A','B','C');
}
public static void ma1(int n,char from,char to,char temp){
    if(n==1){
        System.out.println(from+"---->"+to);
    }    //收斂函數
    else{
    //把n-1個盤子,從from移到temp,藉助to
    ma1(n-1,from,temp,to);
    System.out.println(from+"---->"+temp);
    //把n-1個盤子,從temp移到to,藉助from
    ma1(n-1,temp,to,from);
    }

}
}
發佈了36 篇原創文章 · 獲贊 6 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章