1. 程式人生 > >java運行環境

java運行環境

必須 大小寫 import 跨平臺 classpath 操作 需要 溢出 ||

1.Java開發環境:
1)java編譯運行過程:-----------常見面試題
1.1)編譯期:.java源文件,經過編譯,生成.class字節碼文件
1.2)運行期:JVM加載.class並運行.class(0和1)
特點:跨平臺、一次編程到處使用

2)名詞解釋:
2.1)JVM:java虛擬機
加載.class並運行.class
2.2)JRE:java運行環境
除了包含JVM以外還包含了運行java程序所必須的環境
JRE=JVM+java系統類庫
2.3)JDK:java開發工具包
除了包含JRE以外還包含了開發java程序所必須的命令工具
JDK=JRE+編譯、運行等命令工具
說明:
1)運行java程序的最小環境為JRE
2)開發java程序的最小環境為JDK

3)配置環境變量:
3.1)JAVA_HOME:指向jdk的安裝目錄
3.2)CLASSPATH:表示類的搜索路徑,一般簡寫為.
3.3)PATH:指向jdk下的bin目錄

2.eclipse:
1)IBM、開源的、免費的、不需要安裝僅需解壓即可
2)步驟:
2.1)新建Java項目/工程----------------
2.2)新建Java包--------------------
2.3)新建Java類--------------
3)註釋:解釋性文
3.1)單行註釋://
3.2)多行註釋:/* */
3.3)文檔註釋:/** */

變量:存數的,代詞,指代它所存的那個數
1)聲明:
int a; //聲明一個整型的變量,名為a
int b,c,d; //聲明三個整型的變量,名為b,c,d
2)初始化:第一次賦值
2.1)聲明同時初始化
int a = 100;
2.2)先聲明後初始化
int a;
a = 100;
3)使用:
3.1)對變量的使用就是對它所存的那個數的使用
int a = 5; //聲明整型變量a並賦值為5
int b = a+10; //取出a的值5,加10後,再賦值給整型變量b
System.out.println(b); //輸出變量b的值15
System.out.println("b"); //輸出b,雙引號中的原樣輸出
a = a+10; //取出a的值5,加10後,再賦值給a
//在a本身基礎之上增10
System.out.println(a); //輸出變量a的值15
3.2)變量的操作必須與數據類型匹配
int a = 3.14; //編譯錯誤,數據類型不匹配
3.3)變量在用之前必須聲明並初始化
System.out.println(m); //編譯錯誤,m未聲明
int m;
System.out.println(m); //編譯錯誤,m未初始化
4)命名:
4.1)只能包含字母、數字、_和$符,並且不能以數字開頭
4.2)嚴格區分大小寫
4.3)不能使用關鍵字
4.4)可以中文命名,但不建議
建議:"英文的見名知意"、"駝峰命名法"
2.基本數據類型:
1)int:整型,4個字節,-21個多億到21個多億
1.1)整數直接量默認為int型,但不能超範圍,超範圍則編譯錯誤
1.2)兩個整數相除,結果還是整數,小數位無條件舍棄
1.3)運算時超出範圍則發生溢出,溢出是需要避免的
2)long:長整型,8個字節,很大很大很大
2.1)長整型的直接量,需在數字後加L或l
2.2)算術運算時若有可能溢出,建議在第1個數字加L
2.3)System.currentTimeMillis()用於獲取自
1970.1.1零時到此時此刻的毫秒數
3)double:浮點型,8個字節,很大很大很大
3.1)浮點型直接量默認為double型,表示float時需在數字後加f或F
3.2)浮點型數據參與運算時,有可能會出現舍入誤差
4)boolean:布爾型,1個字節
4.1)只能裝true和false
5)char:字符型,2個字節
5.1)采用Unicode字符集編碼,每個字符都有一個對應的碼
表現形式為字符char,但實質上是碼int(0到65535之間)
(ASCII碼: ‘a‘--97 ‘A‘--65 ‘0‘--48 )
5.2)字符直接量必須放在單引號中,有且僅有一個
5.3)特殊符號需要通過\來轉義
3.基本數據類型間的轉換:
數據類型從小到大依次為:
byte,short,int,long,float,double
char,
1)兩種方式:
1.1)自動類型轉換:小類型到大類型
1.2)強制類型轉換:大類型到小類型
(要轉換成為的數據類型)變量
強轉有可能會溢出或精度丟失
2)兩點規則:
2.1)整數直接量可以直接賦值給byte,short,char,
但不能超出範圍
2.2)byte,short,char型數據參與運算時,
先一律轉換為int再運算
4.Scanner的用法:
1)在package下:
import java.util.Scanner;
2)在main()方法中:
Scanner scan = new Scanner(System.in);
3)在第2步之下:
System.out.println("請輸入年齡:");
int age = scan.nextInt();
System.out.println("請輸入價格:");
double price = scan.nextDouble();

運算符:
1)算術運算符:+-*/%,++,--
2)關系運算符:>,<,>=,<=,==,!= boolean
3)邏輯運算符:&&,||,! boolean
4)賦值運算符:=,+=,-=,*=,/=,%=
5)字符串連接運算符:+
6)條件/三目運算符: boolean?數1:數2
2.分支結構:有條件的執行某語句
1)if:1條路
2)if...else:2條路


筆記:
1.分支結構:
1)if結構:1條路
2)if...else結構:2條路
3)if...else if結構:多條路
4)switch...case結構:多條路
優點:效率高、結構清晰
缺點:整數、相等
break:跳出switch
2.循環:
1)反復執行一段相同或相似的代碼
2)循環三要素:
2.1)循環變量的初始化
2.2)循環的條件(以循環變量為基礎)
2.3)循環變量的改變(向著循環的結束變)
循環變量:在整個循環過程中所反復改變的那個數
3)循環結構:
3.1)while:先判斷後執行,有可能一次都不執行
3.2)do...while:先執行後判斷,至少執行一次
要素1與要素3相同時,首選do...while

循環結構:
1)while:
2)do...while:
3)for:固定次數循環
2.break:跳出循環
continue:跳過循環體中剩余語句而進入下一次循環
3.三種循環結構的更佳適用情況:
1)while:"當..."
2)do...while:"直到..."
要素1與要素3相同時,首選do...while
3)for:固定次數,應用率最高
4.嵌套循環:
1)循環中套循環,一般多行多列時使用,外層控制行,內層控制列
2)執行規則:外層循環走一次,內層循環走所有次
3)建議:循環層次越少越好,能用一層就不用兩層,能用兩層就不用三層
若你的需求必須得通過三層以上的循環才能解決,說明設計有問題
4)break只能跳出一層循環
6.程序=算法+數據結構
1)算法:解決問題的流程/步驟(順序、分支、循環)
2)數據結構:將數據按照某種特定的結構來保存
設計合理的/良好的數據結構會導致好的算法
7.數組:
1)相同數據類型元素的集合
2)數組是一種數據類型(引用類型)
3)數組的定義:
int[] arr = new int[10];
4)數組的初始化:
int[] arr = new int[3]; //0,0,0
int[] arr = {2,5,8}; //2,5,8
int[] arr = new int[]{2,5,8}; //2,5,8
int[] arr;
arr = {2,5,8}; //編譯錯誤
arr = new int[]{2,5,8}; //正確
5)數組的訪問:
5.1)通過(數組名.length)可以獲取數組的長度
int[] arr = new int[3];
System.out.println(arr.length); //3
5.2)通過下標/索引來訪問數組中的元素
下標從0開始,最大到(數組的長度-1)
int[] arr = new int[3];
arr[0] = 100; //給arr中的第1個元素賦值為100
arr[1] = 200; //給arr中的第2個元素賦值為200
arr[2] = 300; //給arr中的第3個元素賦值為300
//arr[3] = 400; //數組下標越界異常
System.out.println(arr[arr.length-1]); //輸出arr中最後一個元素的值
6)數組的遍歷:
int[] arr = new int[10];
for(int i=0;i<arr.length;i++){
arr[i] = 100;
}
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
for(int i=arr.length-1;i>=0;i--){
System.out.println(arr[i]);
}

數組:
7)數組的復制:
7.1)System.arraycopy(a,1,a1,0,4); //靈活性好、效率高
7.2)int[] a1 = Arrays.copyOf(a,6); //靈活性差、效率低
a = Arrays.copyOf(a,a.length+1); //特殊用途(數組的擴容)
8)數組的排序:
8.1)Arrays.sort(arr); //升序排列
8.2)冒泡排序:---------------常見面試題
8.2.1)五個數冒四輪
8.2.2)每一輪都是從第1個元素開始冒
每一次都是和它的下一個元素比
8.2.3)冒出來的就不帶它玩了
2.方法:函數、過程
1)用於封裝一段特定的業務邏輯功能
2)盡可能的獨立,一個方法只幹一件事
3)方法可以被反復多次調用
4)減少代碼重復、便於代碼的維護、有利於團隊的協作
3.方法的定義:
修飾詞 返回值類型 方法名(參數列表){
方法體
}
4.方法的調用:
1)無返回值: 方法名(有參傳參);
2)有返回值: 數據類型 變量 = 方法名(有參傳參);
5.return的用法:
1)return 值; //1.1)結束方法的執行 1.2)返回結果給調用方
-------------------寫在有返回值的方法中
2)return; //2.1)結束方法的執行
-------------------寫在無返回值的方法中

java運行環境