今天給大家帶來的是初級Java基礎部分的知識:包括初識Java、變數、常量、資料型別、運算子、各種選擇結構、迴圈結構、陣列等Java的基礎語法部分!!!內容、步驟超詳細,附有各種案例的原始碼(可以直接用O(∩_∩)O~)!!!仔細看完它,紮實的基礎不再是空談,萬丈高樓平地起,當有了紮實的基礎知識,後面學習物件導向以及專案的開發時,壓力就減少了很多,所以基礎知識不能被輕易的忽略。
一、初識Java
使用記事本開發程式的步驟(注意:整個操作過程都是英文):
1 編寫源程式
首先新建一個文字檔案,修改其字尾名為“.java" ---->然後再裡面編寫我們需要的程式碼
public class HelloWorld{ public static void main(string[] args){ system.out.println("Hello kh87"); } }
public:公共的公開的,處處可以訪問。
class:類,類別,類似狗狗類,電腦類等。
HelloWorld:類名稱,有一個要求,必須和檔名稱保持一致
public static void main(String[] args){} ---->>> 入口方法,所有需要執行的程式碼都需要放到這裡來,固定寫法
static:關鍵字(計算機中已經使用的名字,我們就不能再使用)
void:返回值型別,void表示沒有返回值
main:是入口方法的方法名
易錯點:
①大括號要成對出現
②String中的”s”要大寫
③我們在每一句話之後都需要使用英文的分號結束
④System中的”s”需要大寫
⑤類名需要和檔名保持一致
所有的輸出內容需要在引號裡面
2 編譯源程式
因為編寫的是我們人寫的,但是計算機是看不懂的,所以需要一個“翻譯” 編譯成一個 ".class" 結尾的檔案(半機器語言)。我們在dos命令中進入到檔案所在目錄,輸入命令 javac xxx.java 類編譯同時會生成一個以“class”結尾的位元組碼檔案
3 執行
編譯成功之後,即可執行,輸入 java xxx 即可.在控制檯即可出現在列印語句中雙引號中的內容了(所有需要列印的內容都需要在雙引號中)
符號的含義:
\t:一個製表符的空格
\n:換到下一行的初識位置
註釋的作用:
解釋說明,不會被編譯執行
單行註釋: //
多行註釋: /* */
文件註釋: /** */
1.變數
1.1 定義:
一個儲存空間的表示,其值是可以變化的。(例如買了一雙鞋,鞋盒用來孵小雞,鞋盒就是變數,鞋子和小雞是裡面的值。)
通過變數名可以簡單快速的找到它儲存的資料!!!
1.2 使用步驟:
第一步:宣告變數(宣告變數的時候變數名不能重複)
即根據資料型別在記憶體申請空間
資料型別 變數名;int money;(int是資料型別,money是變數名)
第二步:賦值
即將資料儲存在對應的記憶體空間
變數名=數值; money=1000;
上面兩步可以合二為一
int money =1000; 其含義是:在記憶體中開闢了一個int型別的空間,給其命名為money,併為其賦值為1000;
第三步:使用
即取出資料
注意:
在宣告變數的時候變數名不能重複
當在程式中使用“+”的時候,符號左右兩側如果有一個資料是字串則將兩個值拼接(如果後面有多個“+”則將多個值拼接),如果都是數值型則計算和
1.3 命名的規則
1、以數字,字母,下劃線和$符號組成,其中不能以數字開頭
2、不能和java中的關鍵字重名
3、儘量遵守見名知意和駝峰命名(有多個單詞首個單詞首字母小寫後面單詞首字母大寫)規則
public static void main(String[] args) {
//1宣告
int money;
//2賦值
money=100;
/**
* 第一第二兩步合併
* 宣告變數的時候變數名不能重複
*/
int m = 100;
String name="張三";
int age =27;
double score=89.0;
//是否及格 使用 true : 及格 false:不及格
boolean flag =true;
//3使用
System.out.println("和"+age+score);
System.out.println("金額::"+money);
System.out.println("姓名:"+name);
System.out.println("年齡:"+age);
System.out.println("分數:"+score);
}
2.常量
2.1 定義:
一個儲存空間的表示,其值是不可以發生變化的。
final修飾常量,final修飾的值在宣告的時候就賦值且後面不能改變(在資料型別前加final 如 final int)
2.2 優點:
一旦定義後期不能修改,所以其是相對安全的
2.3 命名規則:
常量名都要大寫,如果是多個單片語成,則使用下劃線分割
public static void main(String[] args) {
// TODO Auto-generated method stub
/**
* 常量的案列演示
* 計算圓的面積
*/
final double MY_PI =3.14;
/*pi=3;*/
double r=2;
double area=MY_PI * r * r;
System.out.println("面積是:"+area);
}
3.資料型別
分類:
3.1 基本資料型別:
1、數值型
1)整型(可以存放整數):
byte(1個位元組)
short(2個位元組)
int(4個位元組) (預設使用)
long(8個位元組)
2)浮點型(表示小數):
float(4個位元組)
double(8個位元組) (預設使用)
2、非數值型
1)字元型—————需要給值加上單引號,只能存一個字元
char(2個位元組):本質上是一個整數,是字元的Unicode碼值
2)布林型————結果只有兩種 true/false
boolean
3.2 引用資料型別:
1)String:可以儲存多個字元使用雙引號引起來
2)陣列
3)列舉
4.運算子
分類:
4.1 賦值運算子:
賦值符號:= 將右邊的值賦給左邊的變數
4.2 算術運算子:
符號:+ - * / % ++ --
++放在變數前指先加1在使用;放在變數後指先使用在加1
--放在變數前指先減1在使用;放在變數後指先使用在減1
%指求餘數
num+=2;(意思為num=num+2;)
public static void main(String [] args){
//++ --
int a=4;
int b=2;
int c=5;
/*
System.out.println((a+b));
System.out.println((a-b));
System.out.println((a*b));
System.out.println((a/b));
System.out.println((a+b));
System.out.println((a+b));*/
System.out.println(a++);//輸出結果為4
System.out.println(a);//輸出結果為5
System.out.println(++a);//輸出結果為6
System.out.println(c%b);//輸出結果為1
}
4.3 關係運算子
運算子 | 含義 | 舉例 | 結果 |
---|---|---|---|
== | 等於 | 5==6 | false |
!= | 不等於 | 5!=6 | true |
> | 大於 | 5>6 | false |
< | 小於 | 5<6 | true |
>= | 大於等於 | 5>=6 | false |
<= | 小於等於 | 5<=6 | true |
注意:
= 為賦值運算子,== 等於運算子
表示式返還給我們的結果型別都是boolean 型別
4.4 邏輯運算子:
運算子 | 含義 | 運算規則 |
---|---|---|
&& | 短路與 | 兩個表示式結果都是true結果才是true |
|| | 短路或 | 只要有一個為true 結果就為true |
! | 取反 | 將原來表示式結果取反 |
& | ||
| |
A | B | A&&B | A||B |
---|---|---|---|
T | T | T | T |
T | F | F | T |
F | T | F | T |
F | F | F | F |
&& 一假必假
|| 一真必真
public static void main(String[] args) {
// TODO Auto-generated method stub
int a=4;
int b=2;
int c=5;
//a>b為T,b>c為F 所以a>b||b>c為T;a<c為T所以整個表示式為T
System.out.println(a>b || b>c && a<c);
}
4.5 三目運算子(條件運算子):
語法:
boolean表示式? 表示式1:表示式2;
當boolean表示式的結果為true的時候 執行表示式1
當boolean表示式的結果為false的時候 執行表示式2
int a=5;
int b=10;
int c= a>b? 0:1;
System.out.println(c);//結果為1
int a=5;
int b=10;
String c= a>b? "正確":"錯誤";
System.out.println(c);//結果為錯誤
返回值的資料型別需要和執行的表示式的資料型別一致
運算子優先順序
5.型別轉換
5.1 自動型別轉換
好比生活中有兩個水杯,一個大的一個小的,如果將裝滿水的小杯中水倒入空的大杯,是可以的,類似於這樣的場景在java中稱之為自動型別轉換
double first=81.99;
int duo=2;
double seconde=first+duo;
規則:
①在整個表示式中,如果有double資料型別的話,則整個表示式的結果會自動的提升為double型別
②在自動型別轉換的表示式中資料型別需要相容
如:都是數值型
③目標型別要大於原型別
5.2 強制型別轉換
好比生活中有兩個水杯,一個大的一個小的,如果將裝滿水的大杯中水倒入空的小杯,是可以的但是會溢位,類似於這樣的場景在java中稱之為自強制型別轉換
語法:
資料型別 變數名=(資料型別)(表示式);————是先運算表示式,然後將結果轉換
如:int seconde=(int) (first+duo); 或 int seconde=(int) (first)+duo;————先將first轉換為int型別在計算,最後將結果轉換為int型別
缺點:丟失精度,慎用(double轉int 丟失的是小數點後面的所有值不是四捨五入)
double first=81.99;
int duo=2;
int seconde=(int) (first+duo);//結果是83
6.Scanner
作用:接收使用者在鍵盤輸入的值
使用步驟:
①導包
import java.util.Scanner; / import java.util.*; (java.util是包名 Scanner是類名,
如果用*則表示取java.util包下的所有類,兩種方法都行)
②建立Scanner 物件
Scanner tx = new Scanner (System.in);
③使用 常用方法
接收int型 int age= tx.nextInt();
接收double型 double score=tx.nextDouble();
接收String型別 String name=tx.next();
注意
第二步中新建的Scanner中用的什麼名(tx)第三步中就用什麼名
由於工具的原因,在編寫提示語的時候將ln去掉;如將System.out.println("請輸入年齡:");的ln去掉即為System.out.print("請輸入年齡:");
package cn.kgc.tx.ketang;
//1、導包
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//2、建立Scanner 物件
Scanner tx = new Scanner (System.in);
//3、使用
System.out.print("請輸入年齡:");
int age=tx.nextInt();
System.out.print("請輸入姓名:");
String name=tx.next();
System.out.print("請輸入分數:");
double score=tx.nextDouble();
System.out.print("年齡是:"+age+",姓名是:"+name+",分數是:"+score);
}
}
7.包的使用
新建的包都使用小寫字母組成,不能有中文或者特殊符號
新建的包使用公司域名去掉3w其他內容倒寫,如 www.kgc.cn cn.kgc.公司定義
新建的每個類我們使用的每個單詞的首字母大寫
在每個類中都會有且只有一個 package+包的名字(且在程式碼的第一行)
3.1基本選擇結構
語法:
if(布林型別的條件){
如果條件為真,則執行
}
條件為假的時候執行大括號後面的內容
流程圖
案例:
如果張浩的Java考試成績大於98分,張浩就能獲得一個MP4作為獎勵
public static void main(String[] args){
// 如果 。。。java>98
//就有獎勵
double javaScore=100;
if(javaScore >98){
//條件為真則執行這裡再向下執行
System.out.println("有一個硬碟獎勵");
}
//條件結果為假的話,直接跳到這裡執行
System.out.println("程式結束");
}
3.2複雜程式結構
主要是和我們的各種運算子相互結合使用
如:張浩的Java成績大於98分,而且音樂成績大於80分,老師會獎勵他;或者Java成績等於100分,音樂成績大於70分,老師也會獎勵他
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner tx=new Scanner(System.in);
System.out.print("張浩的Java成績是:");
int javaScore=tx.nextInt();
System.out.print("張浩的音樂成績是:");
int musicScore=tx.nextInt();
if((javaScore>98&&musicScore>80)||(javaScore==100&&musicScore>70)){
System.out.println("獎勵張浩一個MP5");
}
System.out.println("程式結束");
}
if-else
為什麼使用if-else ?
使用傳統的if選擇結構也可能完成如果否則之類的問題,但是可能造成程式碼的冗餘,浪費時間。
如:
if(zhangScore>98){
System.out.println("獎勵一個MP4");
}
//使用之前的基本選擇結構可以做,但是可能會造成程式碼的冗餘
//執行的效率就降低了
if(zhangScore<60){
System.out.println("俯臥撐30個");
}
所以我們使用if-else
語法:
if(){ //布林型別的表示式
//條件為真進入執行程式碼塊1
}else{
//條件為假進入程式碼塊2
}
流程圖:
案例:
if(zhangScore>98){ //如果張浩成績大於98有獎勵
System.out.println("獎勵一個MP4");
}else { //否則俯臥撐30個
System.out.println("俯臥撐30個");
}
多重if選擇結構
語法:
if(){
}else if(){
}else if(){
}else{
}
流程圖:
案例:
//對學員的結業考試成績評測 成績>=80 :良好 成績>=60 :中等 成績<60 :差
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner tx=new Scanner(System.in);
System.out.print("請輸入考試成績:");
int score=tx.nextInt();
if(score>=80){
System.out.println("良好");
}else if(score>=60){
System.out.println("中等");
}else {
System.out.println("差");
}
}
在我們執行的程式過程中,程式是自上而下執行的,所以條件判斷的時候,會在第一個判斷條件滿足的時候停下並執行,後面的內容就不會再執行了
所以,在條件判斷的時候,條件的語句順序不能隨便的寫,要按照一定的順序
巢狀if選擇結構
語法:
if(條件1){
if(條件2){
// 程式碼塊1 當兩個if都滿足時才執行
}else{
//程式碼塊2
}
}else{
//程式碼塊3
}
流程圖:
案例:
@Test
public void demo8(){
System.out.print("請輸入你的跑步成績:");
//輸入成績
double score=tx.nextDouble();
//對成績進行判斷
if(score<=10){
//如果成績合格在判斷性別
System.out.print("請輸入你的性別:");
String sex=tx.next();
//判斷性別
if(sex.equals("男")){
System.out.println("恭喜進入男子組決賽");
}else if(sex.equals("女")){
System.out.println("恭喜進入女子組決賽");
} else {
System.out.println("輸入錯誤");
}
}else{
System.out.println("很遺憾你沒有進入決賽");
}
}
switch選擇結構
語法:
switch(表示式){ //表示式為 int、short、byte、char、列舉、String型別
case常量1: //計算表示式的值
語句; //如果等於常量1
break;
case常量2:
語句; //如果等於常量2
break;
……
default:
語句; //如果沒有找到匹配的值
break;
}
注意:
switch後面只能跟6種型別
3種整數型:byte、short、int
兩個字元相關:char、String
一個列舉型
字串需要在jdk7.0之後才能使用
案例
韓嫣參加計算機程式設計大賽
如果獲得第一名,將參加麻省理工大學組織的1個月夏令營
如果獲得第二名,將獎勵惠普膝上型電腦一部
如果獲得第三名,將獎勵行動硬碟一個
否則,不給任何獎勵
@Test
public void demo3(){
int mc=2;
if(mc==1){
System.out.println("夏令營");
}else if(mc==2){
System.out.println("電腦");
}else if(mc==3){
System.out.println("硬碟一個");
}else{
System.out.println("明年繼續努力");
}
System.out.println("程式結束");
}
以上是使用多重if選擇結構的完成,但是從程式碼的結構上看,顯得程式碼冗餘,結構複雜,有多次的等值判斷。
為了解決上述問題,我們引出switch的選擇結構
if選擇結構和switch選擇結構的使用場景
if選擇結構我們一般都是使用在區間判斷上,而switch選擇結構一般是作用在等值判斷
注意:
①常量名不能重複
②case後面的常量不是必須要按照某種順序的,switch後面的值會去找和自己匹配的常量值,然後執行對應的程式碼塊,如果沒有找到,則執行default中的值
③break結束當前的執行內容,在case後面執行,如果沒有break程式碼會繼續向下執行,一直到遇到break或整個switch語句執行完
④default在最後的時候,break是可以省略的(不推薦),在其他位置的時候,不能省略,否則會一直向下執行直到遇到break為止
案例:
@Test
public void demo9(){
System.out.print("輸入1到7選擇週一到週日大禮包:");
String num=tx.next();
switch(num){
case "1":
System.out.println("早上8點起床寫程式碼");
break;
case "2":
System.out.println("早上9點起床寫程式碼");
break;
case "3":
System.out.println("早上8半點起床寫程式碼");
break;
case "4":
System.out.println("早上7點半起床寫程式碼");
break;
case "5":
System.out.println("早上7點起床寫程式碼");
break;
case "6":
System.out.println("寫程式碼寫到晚上12點");
break;
case "7":
System.out.println("早上8點起床寫程式碼");
break;
default:
System.out.println("別想逃,輸別的沒有用的");
break;
}
比較switch和多重if選擇結構
相同點
都是用來處理多分支條件的結構
不同點
if多用於區間的判斷
switch用於等值條件的判斷
用switch能做的,用if都能做,但反過來則不行
如何處理系統異常
使用hasNextInt()解決問題2
Scanner input = new Scanner(System.in);
//如果輸入的是數字
if (input.hasNextInt()) {
int num = input.nextInt();
switch (num) {
case 1:
//顯示系統主選單;
break;
case 2:
System.out.println("謝謝您的使用!"); break;
default:
System.out.println("輸入錯誤。");break;
}
} else { //如果輸入的不是數字
System.out.println("請輸入正確的數字!");
}
為什麼使用迴圈:
在達到同樣的效果的同時可以用較簡潔的程式碼
public void demo1(){
//直接列印:易錯、程式碼量多、效率低
System.out.println("好好學習第一遍");
System.out.println("好好學習第二遍");
System.out.println("好好學習第三遍");
System.out.println("好好學習第四遍");
}
使用迴圈即可解決
概念:
一直重複做的有開始有結束的事
迴圈的特徵:
迴圈條件:開始結束的條件
迴圈操作:一直需要重複做的事
迴圈變數:能夠對迴圈條件的結果產生影響的量
4.1 while迴圈
特點:
先判斷,後執行
如果迴圈條件開始就不符合的時候,迴圈操作一遍也不會執行
語法:
while(迴圈條件//boolean型別表示式){
迴圈操作
}
流程圖:
案例:
/*列印50份試卷
* 迴圈特徵:
* 迴圈條件:開始結束的條件
* 迴圈操作:一直需要重複做的事
* 迴圈變數:能夠對迴圈條件的結果產生影響的量
*
*/
@Test
public void demo3(){
int a=1;
while (a<=50){ //迴圈條件
//迴圈操作
System.out.println("列印第"+a+"份試卷");
a++; //迴圈變數
}
}
4.2 do—while迴圈
為什麼需要使用do—while迴圈?
在生活中往往會有一些事情是需要我們先做然後再去判斷的。如:期末考試之前需要先學習一個學期
語法:
do{
迴圈操作
}while(迴圈條件);//迴圈條件時boolean型別
流程圖:
執行特點:
先執行,後判斷。
條件為假,也至少執行一次迴圈操作
案例:
經過幾天的學習,老師給張浩一道測試題,
讓他先上機編寫程式完成,
然後老師檢查是否合格。如果不合格,則繼續編寫。……
@Test
public void demo1(){
String answer;
do {
//迴圈操作
System.out.println("先上機考試");
System.out.println("老師我合格了嗎?");
answer=tx.next();
}while ("n".equals(answer));
System.out.println("程式結束");
}
4.3 for迴圈
為什麼使用for迴圈:
程式碼更簡潔:while迴圈中有的表示式在for中都有
適用場景:迴圈次數固定的情況下使用
語法:
for(初始化迴圈變數;迴圈條件;修改迴圈變數的值){
迴圈操作
}
易錯點:
初識化迴圈變數可以省略但是需要在for上面寫
迴圈條件和修改迴圈變數的值不能省略否則會死迴圈
初始化迴圈變數、迴圈條件、修改迴圈變數的值都不寫的話(分號不能省)會死迴圈
案例:
商場對顧客的年齡層次進行調查
計算各年齡層次的顧客比例
@Test
public void demo6(){
double num2=0; //宣告30歲以下人員數
double num3=0; //宣告30歲以上人員數
for (int i=1;i<=10;i++){
System.out.print("請輸入第"+i+"位顧客的年齡:");
int num1=tx.nextInt();
if (num1<=30){
num2++;
}else {
num3++;
}
}
System.out.println("30歲以下的比列是:"+(num2/(num2+num3)));
System.out.println("30歲以上的比列是:"+(num3/(num2+num3)));
}
4.4 break和continue的不解之緣
含義:
break:終止本迴圈,繼續向後執行
continue:終止本次迴圈,繼而執行下一次的迴圈操作
break作用:
改變程式控制流
用於do-while、while、for中時,可跳出迴圈而執行迴圈後面的語句
break通常在迴圈中與條件語句一起使用
案例:
break:
迴圈錄入某學生5門課的成績並計算平均分。如果某分數錄入為負,停止錄入並提示錄入錯誤
迴圈錄入成績,判斷錄入正確性。錄入錯誤,使用break語句立刻跳出迴圈;否則,累加求和
@Test
public void demo7(){
int sum=0; //成績總和
boolean flag=false; // false 表示輸入的分數不是負數 true表示輸入的分數是負數
for (int i=0;i<5;i++){
System.out.print("請輸入第"+(i+1)+"門課的成績:");
//迴圈錄入的成績
int score=tx.nextInt();
if (score<0){
flag =true;
break;
}
sum=sum+score;
}
if(flag){
System.out.println("輸入錯誤");
}else {
int avg= sum/5;
System.out.println("平均分為:"+avg);
}
}
continue:
@Test
/*
* 迴圈錄入Java課的學生成績,統計分數大於等於80分的學生比例
*/
public void demo9(){
int sum=0; //用來累加學生人數的變數
System.out.print("班級總人數為:");
int penNo=tx.nextInt();
for (int i=1;i<=penNo;i++){
System.out.print("輸入第"+i+"位學生的成績:");
double score=tx.nextDouble();
if (score<80){
continue;
}
sum++;
}
double a=(double)sum/penNo*100;
System.out.println("80分以上的學生個數為:"+sum);
System.out.println("80分以上學生佔比為:"+a+"%");
}
對比break和continue:
使用場合:
break常用於switch結構和迴圈結構中
continue一般用於迴圈結構中
作用(迴圈結構中):
break語句終止某個迴圈,程式跳轉到迴圈塊外的下一條語句
continue跳出本次迴圈,進入下一次迴圈
什麼是陣列:
陣列是一個變數,儲存相同資料型別的一組資料
陣列基本要素:
識別符號:
陣列的名稱,用於區分不同的陣列
陣列元素:
向陣列中存放的資料
元素下標:
對陣列元素進行編號,從0開始,陣列中的每個元素都可以通過下標來訪問
元素型別:
陣列元素的資料型別
注意:
宣告一個變數就是在記憶體空間劃出一塊合適的空間
宣告一個陣列就是在記憶體空間劃出一串連續的空間
陣列長度固定不變,避免陣列越界
陣列中的所有元素必須屬於相同的資料型別
如何使用陣列:
1、宣告陣列
陣列型別 陣列名 [];
陣列型別[] 陣列名;
int[] a; int a[];
2、分配空間
陣列型別[] 陣列名 = new 資料型別[大小];
a=new int[5];
3、賦值
陣列名[元素下標] =要賦的值;
a[0]=8;
賦值:
一、邊宣告邊賦值:賦值的時候給了幾個值,陣列的長度就是多少
陣列型別[] 陣列名 = {x ; y ; z};
int[ ] score = {89, 79, 76};
陣列型別[] 陣列名 = {x ; y ; z};
int[ ] score = new int[ ]{89, 79, 76};
二、動態的從鍵盤錄入資訊並賦值(需要先定義陣列長度)
Scanner input = new Scanner(System.in);
for(int i = 0; i < 30; i ++){
score[i] = input.nextInt();
}
4、處理資料
a[0]=a[0]*10;
Arrays類
返回值型別 | 方法名稱 | 說明 |
---|---|---|
boolean | equals(array1,array2) | 比較array1和array2兩個陣列是否相等 |
sort(array) | 對陣列array的元素進行升序排列 | |
String | toString(array) | 將一個陣列array轉換成一個字串 |
fill(array,val) | 把陣列array所有元素都賦值為val | |
原陣列什麼型別複製的新陣列也是什麼型別 | copyOf(array,length) | 把陣列array複製成一個長度為length的新陣列,返回型別與複製的陣列一致 |
int | binarySearch(array, val) | 查詢元素值val在陣列array中的下標(要求陣列中元素已經按升序排列) |
案例:
@Test
public void test05(){
int[] array1 ={12,21,13};
int[] array2 ={12,21,13};
int[] array3 ={12,21,13,24};
//int binarySearch(array, val) 查詢元素值val在陣列array中的下標(要求陣列中元素已經按升序排列)
Arrays.sort(array3);
int i =Arrays.binarySearch(array3,13);
System.out.println(i);
//copyOf(array,length) 把陣列array複製成一個長度為length的新陣列,返回型別與複製的陣列一致
/*int array4[] =Arrays.copyOf(array3,6);
System.out.println(Arrays.toString(array4));*/
/*//void fill(array,val) 把陣列array所有元素都賦值為val
Arrays.fill (array3,22);
System.out.println(Arrays.toString(array3));
//sort(array) 對陣列array的元素進行升序排列
//String toString(array) 將一個陣列array轉換成一個字串
Arrays.sort(array3);
System.out.println(Arrays.toString(array3));
// boolean equals(array1,array2); 比較 array1 和 array2 是否相等
boolean a=Arrays.equals(array1,array2);
boolean b=Arrays.equals(array1,array3);
System.out.println(a+","+b);*/
}
最後再補充一點關於equals 和 == 的區別哈!!!
== 和 equals 的區別是?
==
既可以比較數值型別,也可以比較引用資料型別。當比較的是數值型別的時候比較的是值比較的是引用資料型別的是後,比較的就是地址值
equals
如果沒有對equals方法進行重寫的時候,比較的方式和==是一樣的,如果重寫的則按照重寫的方式進行比較
在使用equals 的時候我們將肯定有值的變數寫在前面,避免空指標異常的出現
案例:
@Test
public void test2(){
String i =null;//String 的預設值 為空
if (i.equals("")){
System.out.println("合格");
}
System.out.println("程式結束");
}//此時執行會報錯
@Test
public void test2(){
String i =null;
if ("".equals(i)){
System.out.println("合格");
}
System.out.println("程式結束");
}//換位後執行正常