java程序語言基礎
java基礎語法
界面輸出-輸出語句
System.out.println();在打印信息后會自動換行
System.out.print();在打印信息后不會自動換行
例如:
public class Main() {
public static void main(String [] args) {
// 在大括號里輸入代碼
// 打印信息后自動換行
System.out.println("姓名:王藝博");
System.out.println("年齡:18");
}
}
/*輸出結果為:
姓名:王藝博
年齡:18
*/
這里的 // 是可以注釋的意思單行代碼 葵袭,在//后面的寫的內容不會在輸出界面顯示 孩灯。還有/**/這個的意思是多行注釋迷雪,可以注釋多行內容或代碼岳遥,在兩個星號中間輸入的內容是不會在輸出界面顯示的
public class Main() {
public static void main(String [] args) {
// 在大括號里輸入代碼
// 打印信息后不會自動換行
System.out.print("姓名:王藝博");
System.out.print("年齡:18");
}
}
/*輸出結果為:
姓名:王藝博年齡:18
*/
變量
語法格式
-
數(shù)據(jù)類型(確定變量類型) 變量名(確定變量名) ,變量名 = 值(給變量一個默認值);例如:int num; num = 12;
-
數(shù)據(jù)類型 變量名 = 值 如:int a = 12致份; ";"英文狀態(tài)下的字符
注意:
-
變量可以包括數(shù)字嫌术,但不能以數(shù)字開頭
-
變量必須以字母開頭、下劃線“_”或“$”符開頭
-
除了“_”或“$”以外滓窍,變量名不能包含任何特殊字符
-
不能使用java語言關鍵字,如 int巩那、public吏夯、class等
-
java語言區(qū)分大小寫
-
同時,為了我們的代碼更加規(guī)范我們還應該遵循以下命名規(guī)范:
-
盡量使用有意義的變量名即横,變量名要簡短且能清楚地表明變量的作用
-
-
第一個單詞首字母小寫噪生,其后單詞的首字母大寫
-
-
java數(shù)據(jù)類型
-
基本數(shù)據(jù)類型
-
整數(shù)類型
-
byte :節(jié)約空間,占用空間只有int的四分之一 例如:byte b = 5;
-
short:節(jié)約空間东囚,占用空間只有int的二分之一 例如:short s = 10;
-
int :一般地整型變量默認為 int 類型(常用) 例如:int i = 12;
-
long:主要用在存儲比較大的數(shù)據(jù) 例如:long l = 23121312L; 注意:這里給變量賦的值要加L
-
-
浮點數(shù)類型
-
float:用于儲存帶有小數(shù)的數(shù)據(jù) 例如:float a = 1.11f; 注意:這里給變量賦的值要加f
-
double:用于儲存帶有小數(shù)的數(shù)據(jù)(常用) 例如:double high = 1.75;
-
-
-
特殊數(shù)據(jù)類型
-
布爾類型
-
boolean:只有兩個值true(真)/false(假)跺嗽, 默認值為false 例如:boolean flag = true;
-
-
字符型
-
char:用于儲存單個字符,例如页藻,性別“男”和“女” char sex = '男'; 注意:這里是用的單引號
-
-
-
引用數(shù)據(jù)類型
-
字符串型
-
String: 用于儲存一串字符桨嫁,例如:String haha = "哈哈哈哈哈哈哈";
-
-
public class Main() {
public static void main(String [] args) {
// 在大括號里輸入代碼
byte b = 5;
short s = 10;
int i = 12;
long l = 23121312L;
float a = 1.11f;
double high = 1.75;
char sex = '男';
boolean flag = true;
String haha = "哈哈哈哈哈哈哈";
// 這里直接打印變量名
System.out.println(b);
System.out.println(s);
System.out.println(i);
System.out.println(l);
System.out.println(a);
System.out.println(high);
System.out.println(sex);
System.out.println(flag);
System.out.println(haha);
}
/*
輸出的結果為:
5
10
12
23121312L
1.11f
1.75
男
true
哈哈哈哈哈哈哈
*/
}
運算符
-
賦值運算符
-
= 說明: 將等號右邊的值賦值給左邊的變量 例如:int money = 100;使用“=”將數(shù)值100放入變量money的儲存空間中
-
-
算數(shù)運算符
-
% + - * / 說明 : 數(shù)學中的加減乘除, %:取余 - 左操作數(shù)除以右操作數(shù)的余數(shù)
-
-
關系運算符
-
!= > < >= <= == 說明 : 不等于份帐、大于瞧甩、小于、大于等于弥鹦、小于等于、等于 例如:99 != 100,結果為true(真)爷辙、99 > 100,結果為false(假)彬坏、99 < 100,結果為true(真)、99 >= 100,結果為false(假)膝晾、99 <= 100,結果為true(真)栓始、地球的大小 == 籃球的大小,結果為false
-
-
邏輯運算符
&& 說明: 與血当、并且 當且僅當兩個操作數(shù)都為真幻赚,條件才為真。 例如: (A && B)為假臊旭。
|| 說明: 或落恼、或者 如果任何兩個操作數(shù)任何一個為真,條件為真离熏。 例如: (A | | B)為真佳谦。
! 說明: 非 用來反轉操作數(shù)的邏輯狀態(tài)滋戳。如果條件為true钻蔑,則邏輯非運算符將得到false 例如:I犊獭(A && B)為真。
public class Main {
public static void main(String[] args) {
// 把“=”號后面的值賦值給等號前面的變量
System.out.println("賦值運算符和算術運算符咪笑,變量名是自己定義的可帽,如下面的num,num1,num2等等");
int num = 7+1;// + 加
int num2 = 9-1;// - 減
int num3 = 2*4;// * 乘
int num4 = 16/2;// 除/
int num5 = 18%10;// 取余數(shù) %
System.out.println(num);// 8
System.out.println(num2);// 8
System.out.println(num3);// 8
System.out.println(num4);// 8
System.out.println(num5);// 8
System.out.println("----------------------------");
System.out.println("關系運算符,返回true和false");
int num99 = 99;
int num100 = 100;
System.out.println(num99 != num100);// true
System.out.println(num99 > num100);// false
System.out.println(num99 < num100);// true
System.out.println(num99 >= num100);// false
System.out.println(num99 <= num100);// true
System.out.println(num99 == num100);// false
}
/* 打印結果為:
賦值運算符和算術運算符,變量名是自己定義的窗怒,如下面的num,num1,num2等等
8
8
8
8
8
----------------------------
關系運算符
true
false
true
false
true
false
*/
}
數(shù)據(jù)類型轉換
自動數(shù)據(jù)類型轉換:1.要轉換的兩種類型要兼容(整數(shù)和浮點型)互相兼容映跟。2.我要轉換的類型大于源類型 例如:int num = 10;double d = num;這里double類型變量分配的空間大于int類型分配的空間
強制類型轉換:(數(shù)據(jù)類型)表達式 例如:double d = 12.13; int i = (int)i;運行后i的值為12
public class demo01 {
public static void main(String[] args) {
// 數(shù)據(jù)類型轉換,直接轉換
int num = 12;
double num1 = num;// 12.0 因為double是浮點數(shù)類型兜粘,所以int(整數(shù))類型的num的值轉換為double(浮點數(shù))類型num1的值會加個.0
System.out.println("原數(shù)據(jù):" + num);
System.out.println("轉換double類型后:" + num1);
// 強制轉換
double num2 = 12.99;
int num3 = (int)num2;// 12 因為int是整數(shù)類型申窘,所以double(浮點數(shù))類型的num2的值轉換為int(整數(shù))類型num3的值會把小數(shù)點和后面的值去掉,這里不遵循四舍五入方法
System.out.println("原數(shù)據(jù):" + num2);
System.out.println("轉換int類型后:" + num3);
}
}
/* 輸出結果為:
原數(shù)據(jù):12
轉換double類型后:12.0
原數(shù)據(jù):12.12
轉換int類型后:12
*/
Scanner對象
java.util.Scanner是java5的新特征孔轴,我們可以通過Scannner類來獲取用戶的輸出剃法。
Scanner類:
Scanner類是引用數(shù)據(jù)類型的一種,我們可以使用該類來完成用戶鍵盤錄入路鹰,獲取到錄入的數(shù)據(jù)贷洲。
Scanner使用步驟:
導包:import java.util.Scanner;
創(chuàng)建對象實例:Scanner sc = new Scanner(System.in);
基本語法:
Scanner s = new Scannner(System.in);
import java.util.Scanner;
public class demo01 {
public static void main(String[] args) {
//創(chuàng)建Scanner引用類型的變量
Scanner sc = new Scanner(System.in);
//獲取數(shù)字
System.out.println("請輸入一個數(shù)字");
int n = sc.nextInt();
System.out.println("n的值為" + n);
//獲取字符串
System.out.println("請輸入一個字符串");
String str = sc.next();
System.out.println("str的值為" + str);
}
}
Scanner方法:
next():
1.一定要讀取有效字符后才可以結束輸入。
2.對輸入字符前遇到的空白晋柱,next()方法可以自動將空白去掉
3.只有輸入有效字符后才將其后面輸入的空白作為分隔符或者結束符
next()方法不能得到帶有空格的字符串
流程控制語句
-
if選擇結構
-
if單選擇結構:
語法:
if(布爾表達式){ //如果布爾表達式為true將執(zhí)行的語句 } public class demo02 { public static void main(String[] args) { if ( 1+1 == 2 ) { System.out.println("1+1= 2"); } } } /* 打印結果 1+1= 2 */
-
if雙選擇結構:
語法:
if(布爾表達式){ //如果布爾表達式為true將執(zhí)行的語句 }else{ //如果布爾表達式為false將執(zhí)行語句 } public class demo02 { public static void main(String[] args) { if ( 1+1 == 3 ) { System.out.println("1+1= 2"); }else { System.out.println("1+1= 3"); } } } /* 打印結果 1+1= 3 */
-
if多選擇結構:
語法:
if(布爾表達式1){ //如果布爾表達式1的值為true執(zhí)行代碼 }else if(布爾表達式2){ //如果布爾表達式2的值為ture執(zhí)行代碼 }else if(布爾表達式3){ //如果布爾表達式3的值為true執(zhí)行代碼 }else{ //如果以上表達式的值都不為true執(zhí)行代碼 } public class demo02 { public static void main(String[] args) { System.out.println("請輸入你的成績:"); Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); if ( num == 100 ) { System.out.println("獎勵100元"); }else if ( num <100 && num >= 80) { System.out.println("獎勵95元"); }else if ( num <80 && num >= 60) { System.out.println("獎勵60元"); }else if ( num < 60 && num >= 0) { System.out.println("沒有獎勵"); }else{ System.out.println("輸入的成績不合法"); } } } /*打印結果 請輸入你的成績: 88 獎勵95元 */
/** * if 語句至多有一個else語句优构,else在所有的else if語句之后。 * if 語句可以由若干個else if 語句雁竞,他必須在else語句之前钦椭。 * 一旦其中一個else if 語句檢測為true,其他的else if語句以及else語句都將跳過執(zhí)行碑诉。 */
嵌套的if結構:
if(布爾表達式){ //如果布爾表達式為true將執(zhí)行的語句 if(布爾表達式){ //如果布爾表達式為true將執(zhí)行的語句 } } public class Demo06 { public static void main(String[] args) { System.out.println("輸入比賽成績:"); Scanner scanner = new Scanner(System.in); double miao = scanner.nextDouble(); if (miao <= 10 ) { System.out.println("請輸入性別:"); String sex = scanner.next(); if ("男".equals(sex)) { System.out.println("進入男子組"); }else if ("女".equals(sex)){ System.out.println("進入女子組"); }else{ System.out.println("額..."); } }else{ System.out.println("無法進入決賽"); } scanner.close(); } } /* 打印結果 輸入比賽成績: 10 請輸入性別: 男 進入男子組 */
-
-
switch選擇結構
switch(expression){ case value : //value是變量類型 //語句 break; //可選彪腔,如果不打break會直接執(zhí)行下一個分支 case value : //語句 break; //可選 //你可以有任意數(shù)量的case語句 default ://可選 //語句 }
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入快捷鍵:");
int num = scanner.nextInt();
switch (num) {
case 1:
System.out.println("爸爸");
break;
case 2:
System.out.println("媽媽");
break;
case 3:
System.out.println("爺爺");
break;
case 4:
System.out.println("奶奶");
break;
default:
System.out.println("尚未設置此數(shù)字的自動撥號");
}
scanner.close();
}
}
/* 打印結果
請輸入快捷鍵:
3
爺爺
*/
```
循環(huán)結構
while
do-while
-
for
-
while循環(huán):
while(布爾表達式){ //循環(huán)內容 }
public class Demo01 {
public static void main(String[] args) {
System.out.println("學習是否合格?(y/n)");
Scanner scanner = new Scanner(System.in);
String answer = scanner.next();
while ("n".equals(answer)) {
System.out.println("上午學理論进栽!");
System.out.println("下午學編程德挣!");
System.out.println("學習是否合格?(y/n)");
answer = scanner.next();
}
System.out.println("完成學習任務快毛!");
scanner.close();
}
}
/* 打印結果
學習是否合格格嗅?(y/n)
n
上午學理論!
下午學編程唠帝!
學習是否合格屯掖?(y/n)
y
完成學習任務!*/
* 只要布爾表達式為true襟衰,循環(huán)就一直執(zhí)行下去懂扼。 * **我們大多數(shù)情況是會讓循環(huán)停止下來的,我們需要一個讓表達式失效的方式來結束循環(huán)。** * 少部分情況需要循環(huán)一直執(zhí)行阀湿,比如服務器的請求響應監(jiān)聽等赶熟。 * 循環(huán)條件一直為true就會造成無限循環(huán)【死循環(huán)】,我們正常的業(yè)務編程中應該盡量避免死循環(huán)陷嘴。會影響程序性能或者造成程序卡死崩潰映砖! - #### do...while 循環(huán): * 對于while 語句而言,如果不能滿足條件則不能進入循環(huán)灾挨。但有時候我們需要即使不滿足條件邑退,也至少執(zhí)行一次。 * do...while 循環(huán)和 while 循環(huán)相似劳澄,不同的是 do...while循環(huán)至少執(zhí)行一次地技。 ```java do { //代碼語句 }while(布爾表達式); package edu.xcdq; public class Demo03 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String shifouhege = ""; do { System.out.println("上機編寫程序"); System.out.println("是否合格:(y/n)"); shifouhege = scanner.next(); }while (shifouhege.equals("n")) ; System.out.println("恭喜你合格了"); } } /* 上機編寫程序 是否合格:(y/n) n 上機編寫程序 是否合格:(y/n) y 恭喜你合格了 */
- While 和do...while的區(qū)別:
- while先判斷后執(zhí)行。do...while是先執(zhí)行后判斷秒拔!
- do...while總是保證循環(huán)體會被至少執(zhí)行一次莫矗!這是它們的主要差別。
-
For循環(huán):
- 雖然所有循環(huán)結構都可以用while或者do...while表示砂缩,但java提供了另一種語句——for循環(huán)作谚,使一些循環(huán)結構變得簡單。
- for循環(huán)語句是支持迭代的一種通用結構庵芭,是最有效妹懒,最靈活的循環(huán)結構。
- for循環(huán)執(zhí)行的次數(shù)是在執(zhí)行前都確定的双吆。語法格式如下:
for(初始化;布爾表達式;更新){ //代碼語句 } public class Demo01 { public static void main(String[] args) { for (int i = 0;i < 10;i++) { System.out.println( "第" + i + "次循環(huán)" ); } } } /* 打印結果 第0次循環(huán) 第1次循環(huán) 第2次循環(huán) 第3次循環(huán) 第4次循環(huán) 第5次循環(huán) 第6次循環(huán) 第7次循環(huán) 第8次循環(huán) 第9次循環(huán) */
-
跳轉語句
-
break:通常用在switch眨唬、循環(huán)語句中來終止語句
public class demo09 { public static void main(String[] args) { for (int i = 0; i < 10; i++) { if ( i == 5 ) {// 第五次循環(huán)結束 break; } System.out.println("第" + i + "次循環(huán)"); } } } /* 第0次循環(huán) 第1次循環(huán) 第2次循環(huán) 第3次循環(huán) 第4次循環(huán) */
-
continue:通常用于循環(huán)語句,跳過本次循環(huán)好乐,執(zhí)行下一次循環(huán)
public class demo09 { public static void main(String[] args) { for (int i = 0; i < 10; i++) { if ( i == 5 ) {// 跳出第五次循環(huán) continue; } System.out.println("第" + i + "次循環(huán)"); } } } /* 打印結果 第0次循環(huán) 第1次循環(huán) 第2次循環(huán) 第3次循環(huán) 第4次循環(huán) 第6次循環(huán) 第7次循環(huán) 第8次循環(huán) 第9次循環(huán) */
數(shù)組
-
儲存多個數(shù)據(jù)
使用方法
int [] scores; 聲明:告訴操作系統(tǒng)有一個數(shù)組的變量 叫scores
int [] scores1 = new int[5];聲明并初始化 申請了內存空間,申請空間成功单绑,則在內存中初始化為0
int [] scores2 = {1.2.5.4} 聲明數(shù)組并直接給值
//定義:給定元素的值
scores1[0] = 45;
scores1[1] = 55;
scores1[2] = 65;
scores1[3] = 75;
scores1[4] = 85;數(shù)組插入元素
package edu.xcdq; import java.util.Arrays; import java.util.Scanner; /** * @author 王藝博 * @date 2021/3/25 10:29 */ public class Demo06 { public static void main(String[] args) { /** * 插入新元素,依舊保持原數(shù)組有序 */ int [] scores = new int[7]; scores[0] = 99; scores[1] = 88; scores[2] = 77; scores[3] = 66; scores[4] = 55; scores[5] = 44; // 1曹宴、獲取要插入的值 System.out.println("請輸入你要插入的值:"); Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); // 2、找到要插入新值的位置 int index = 0; for (int i = 0; i < scores.length; i++) { if ( num > scores[i] ) { index = i; break; } } // 2.1 打印原數(shù)組 System.out.println(Arrays.toString(scores)); // 3.把元素向后移動 index <-> length-1 for (int i = scores.length-1; i > index; i--) { System.out.println("把" + (i-1) + "位置的元素" + scores[i-1] + "移動到" + i + "位置" + scores[i]); scores[i] = scores[i-1]; System.out.println(Arrays.toString(scores)); } // 4歉提、插入新值 System.out.println("在" + index + "位置" + scores[index] + "插入新值:" + num); scores[index] = num; // 5笛坦、打印插入后的結果 System.out.println("降序"); for (int i = 0; i < scores.length; i++) { System.out.print(scores[i] + "\t"); } System.out.println(); System.out.println("升序"); for (int i = scores.length-1; i >= 0; i--) { System.out.print(scores[i] + "\t"); } } } /* 打印結果 請輸入你要插入的值: 60 [99, 88, 77, 66, 55, 44, 0] 把5位置的元素44移動到6位置0 [99, 88, 77, 66, 55, 44, 44] 把4位置的元素55移動到5位置44 [99, 88, 77, 66, 55, 55, 44] 在4位置55插入新值:60 降序 99 88 77 66 60 55 44 升序 44 55 60 66 77 88 99 */
java面向對象
類 例如:學生類
-
對象
-
屬性 名字、年齡苔巨、性別版扩、身高、等等
-
方法 也就是行為 比如 吃侄泽、玩礁芦、睡覺
-
語法格式:
public class Student() { // 定義屬性部分 // 屬性1的類型 屬性1 // 屬性2的類型 屬性2 // 屬性n的類型 屬性n // 定義方法部分 // 方法1 // 方法2 // 方法n }
-
```java
public class Student {
// 屬性 定義在類中,叫屬性,有對應的默認值 如果基本數(shù)據(jù)類型的變量定義在方法中柿扣,不給值則沒有默認值
String name;
int age;
char sex;
double high;
double height;
// 方法
public void eat() {
System.out.println("吃吃吃");
}
public void play() {
System.out.println("玩耍");
}
public void sleep() {
System.out.println("睡覺");
}
}
```
### 對象的創(chuàng)建與使用:
#### 語法格式:
###### 類名 對象名 = new 類名();
###### 在創(chuàng)建類的對象時肖方,需要用到java中的new關鍵字
###### 例如:Student wangyibo = new Student();
###### 在java中要引用對象的屬性和方法,需要使用“.”操作符未状,對象名在“.”前面俯画,屬性或方法在“.”后面
#### 語法格式
###### 對象名.屬性 引用對象的屬性
###### 對象名.方法 引用對象的方法
###### 例如:創(chuàng)建Student類的對象后,就可以給對象的屬性賦值或調用方法了司草,代碼如下
```java
package demo; // 包 包名
/*
* public 公有的艰垂,公共的 其他程序都可以訪問,最大的權限埋虹,其他程序都能訪問
* class 類
* Main 類的名稱猜憎,隨便取名字,最好有意義的搔课,一般要求首字母大寫
*
*/
public class Main {
/*
* public 公有的胰柑,公共的 其他程序都可以訪問,最大的權限辣辫,其他程序都能訪問
* static 靜態(tài)的 沒有對象也可以調用旦事,屬于公共資源
* void 空 方法的返回值,由于main是主方法急灭,不需要跟任何程序返回內容姐浮,因此就寫空
* main 主要的 方法的名字,可以隨便取葬馋,但是入口主方法只能寫成main卖鲤,自定義的方法可以自己取,建議有意義畴嘶,建議首字母小寫蛋逾,駝峰命名法
* (String[] args) 方法的參數(shù) String[] -> 參數(shù)的類型 args 數(shù)組的名字
* */
public static void main(String[] args) {
// 對象的創(chuàng)建 類型 對象名 = new 類名()
Student wangyibo = new Student();
// 屬性的賦值
wangyibo.name = "王藝博";
wangyibo.age = 18;
wangyibo.sex = '男';
wangyibo.high = 1.75;
wangyibo.height = 63;
// 屬性的調用
System.out.println(wangyibo.name);
System.out.println(wangyibo.age);
System.out.println(wangyibo.high);
System.out.println(wangyibo.height);
System.out.println(wangyibo.sex);
// 方法的調用
wangyibo.eat();
wangyibo.play();
wangyibo.sleep();
}
}
```