JAVA編程基礎
程序的意義 | |||
---|---|---|---|
數據 | |||
存儲數據 | 內存 | 變量 | 大小 |
處理數據 | CPU | 命令 | 快慢 |
數據種類
數字:整數、小數
布爾值:true、false
字符串:幾乎所有的內容都是字符串
存數據的變量類型
整數:int
小數:double
布爾值:boolean
字符串:String
如何把一個數據存起來
申明變量類型:分配內存
取變量名:記錄內存位置
用=:往變量指向的內存放數據,專業名詞:賦值符
數據:要存儲的事情
“;”:命令行結束
如何把一個數據存起來
int age=18
double money=8888.88
String company=”上海果芽軟件科技有限公司”;
String type=”RMB”;
密碼:String password=”123456”;
String pwd=”123456”;
訂單金額:double amount=99.99;
點燈是否開著:boolean isLight=true;
如何存一批數據
1個變量(基本數據類型):存1個數據
多個變量(引用變量類型):容器
容器種類
數組Array:個數固定、數據含義相同、單個值
鏈表ArrayList:動態增加、數據含義相同、單個值
HashSet:動態增加、數據含義相同、單個值、自動去重
HashMap:個數變化、數據含義不同、數據需要給含義,一對一對的數據,鍵值對/key=value
JavaBean:個數固定、數據含義不同、數據需要給含義,一對一對的數據,鍵值對
數據的操作
增、刪、改、查、統計
變量的增刪改查統計
界面功能的增刪改查統計:支付、學生信息、面試信息
組織一次活動的增刪改查統計:聚餐
單個變量的增刪改查統計
增:int age=18;
刪:方法執行結束,系統會自動回收內存
// int age = 18;
/* int age = 18; */
改:age=38;
查/取:age
數組的增刪改查統計11
新建容器:int[] ages=new int[30];
增:下標 ages[0]=18; ages[8]=28; ages[29]=38; ages[30]=48;
刪:ages[8]=null;
改:ages[29]=20;
查/取:ages[8]
統計:ages.length返回數組大小
int[] scores={100,10,60,79};
等價
int[] scores=new int[4];
scores[0]=100;
scores[1]=10;
ArrayList的新建/增/刪/改/查/統計
新建容器:List<int> ages=new ArrayList<int>();
List:接口,定義實現類要寫什么內容
ArrayList:實現類
<>:泛型
():構造方法
增:ages.add(18); ages.add(28);
刪:
改:
查/取:ages.get(2); ages.get(4);
統計:ages.size();返回大小
報錯/異常日志
HashSet的新建/增/刪/改/查/統計
新建容器:Set<Integer> ages=new HashSet<Integer>();
Set:接口,定義實現類要寫什么內容
HashSet:實現類
<>:泛型
():構造方法
增:ages.add(18); ages.add(28);
刪:
改:
查/取:
統計:ages.size();返回大小
HashMap的新建/增/刪/改/查/統計
新建容器:Map<String,String> phones=new HashMap<String,String>();
Map:接口,定義實現類要寫什么內容
HashMap:實現類
<>:泛型
():構造方法
增:phones.put("王慧碩", "1232321231");
刪:
改:phones.put("王慧碩", "8765432123");
查/取:phones.get("王慧碩")
統計:phones.size();返回大小
main方法:編寫
main
alt+/
enter ******* public static void main(String[] args) {
}
syso
alt+/ ******** System.out.println("測試");
enter
main方法:執行方式1
main方法:執行方式2
main方法:作業提交截圖樣例
變量和容器練習
使用變量和不同的容器,存儲登錄界面的數據。
用戶名:userName
密碼:password
校驗碼:checkCode
變量和容器練習:流程
每個練習選一個人上臺直播寫,下邊說,上邊寫
所有練習學生輪流直播寫一輪后,開始正式全員動手寫
演示截圖樣例
使用上傳總結界面,每道題全部通過后,進行下一道題,先做完的輔導分派到其它組進行指導
全員動手寫一遍后,復習動口一輪
再選人直播寫一遍
變量和容器練習:使用變量存儲
String userName= "lilei";
String password="123466";
String checkCode="1234";
變量和容器練習:使用數組存儲
String[] datas=new String[3];
datas[0]="李磊";
datas[1]="123466";
datas[2]="1234";
變量和容器練習:使用ArrayList存儲
List<String> list = new ArrayList<String>();
list.add("lilei");
list.add("123456");
list.add("1234");
變量和容器練習:使用HashMap存儲
Map<String, String> map = new HashMap<String,String>();
map.put("userName", "lilei");
map.put("password", "123466");
類和JavaBean新建類
-
類名:首字母大寫,駝峰命名法
image.png
image.png
工程結構:java三大特性之一:封裝
project工程
-
package包
包名
“.”
查看文件夾路徑 class類
.java后綴:源文件
.class后綴:源文件編譯后的文件field字段
-
method方法
image.png
方法的結構
權限:public/private
返回值類型:void不返回
方法名method
()參數列表
入參類型 入參變量名
{}方法體
為什么返回只需要寫類型,
但是入參需要些類型
和變量名?
public void test(){
System.out.println("test");
}
public void sayHello(String name){
System.out.println("hello");
}
public String answer(String question){
return "答案";
}
public String answer(String question,int a){
return "答案";
}
類的作用
打包封裝:字段和方法
方法的作用
打包封裝:命令
main方法的作用
代表一個程序:
1個程序只有一個main方法
所有代碼可以全部寫在一個main方法里面
不在main方法里面的內容不會執行
main方法的命令可以封裝成方法打包調用
Main方法的內容
快捷寫法:
main
alt+/
enter
-
手工寫
public static void main(String[] args){}
權限:public
靜態的static
返回值類型:void
方法名:main
參數列表()
入參是一個數組:String[] args
方法體:{}
程序只會執行main方法里面的內容. 其他方法要想被執行,只能加到main方法里面
方法的作用:封裝(重構)--高手必經之路(把屎一樣的代碼寫得像詩一樣)
一個程序最少的構成元素
1個工程
1個包
1個類
1個main方法
把1個main方法的命令拆分封裝成很多個可復用的方法
把1個類拆分封裝成很多個子類
把1個包里的很多個類拆分封裝成很多個子包
把1個工程里的很多業務拆分成很多個子工程
把1個公司的業務拆分成很多個專項子公司
從無到有
從有到優
人無我有
人有我優
人優我轉
封裝的目的
代碼簡單
復用
用main方法實現加法運算
- 變量可以復用
-
加法和打印命令重復了好多次
image.png
對重復代碼進行重構(封裝)
“+”運算符
數字+數字: 1+2=3
字符串+字符串: “abc”+”def”=“abcdef”
數字+字符串: 231+”def”=“231def”
字符串+變量: int a=231; ”def”+ c =“def231”
算術運算符:取余
有一批學生,從學號1開始報數,每4個唱首歌
用1個變量存放學號
int no=0;
no=1;
if( no % 4 == 0 ){
System.out.println(“唱歌”);
}
no=2;
if( no % 4 == 0 ){
System.out.println(“唱歌”);
}
算術運算符:自增
有一批學生,從學號1開始報數,每4個唱首歌
用1個變量存放學號
int no=0;
no++;
if( no % 4 == 0 ){
System.out.println(“唱歌”);
}
no++;
if( no % 4 == 0 ){
System.out.println(“唱歌”);
}
賦值運算符
= | int a=1 | a=1 |
---|---|---|
+= | a+2=2 | a=a+2;a=3 |
-= | a-=3 | a=a-3;a=0 |
*= | a*=3 | a=a*3;a=0 |
/= | ||
%= | a=7;a%=3 | a=a%3;a=1 |
邏輯運算符
&& | int a=5; a>3 && a<10; true | a>6 && a<10; false | ||
---|---|---|---|---|
int a=5; a>6 | a<10; true | |||
! | int a=5; int b=6; a!=6 true | |||
boolean result = 2==3 | 1==1; |
boolean result ;
2==3 false
1==1 true
false || true result=true
條件運算符
variable x = (expression) ? value if true : value if false
int a = (age <= 18) ? 少年: 大叔;
int a = (sex == 0 ) ? 美女 : 野獸;
分支結構
媳婦讓你去買6個包子,如果看到西瓜,買一個。
最后只買了1個包子
分支結構:if 語句
if(布爾表達式)
{
//如果布爾表達式為true將執行的語句
}
public static void main(String args[]){
int x = 10;
if( x < 20 ){
System.out.print("這是 if 語句");
}
}
分支結構:if...else語句
if(布爾表達式){
//如果布爾表達式的值為true
}else{
//如果布爾表達式的值為false
}
public static void main(String args[]){
int x = 30;
if( x < 20 ){
System.out.print("這是 if 語句");
}else{
System.out.print("這是 else 語句");
}
}
分支結構:if...else if...else 語句
if(布爾表達式 1){
//如果布爾表達式 1的值為true執行代碼
}else if(布爾表達式 2){
//如果布爾表達式 2的值為true執行代碼
}else if(布爾表達式 3){
//如果布爾表達式 3的值為true執行代碼
}else {
//如果以上布爾表達式都不為true執行代碼
}
public static void main(String[] args){
int x = 30;
if( x == 10 ){
System.out.print("Value of X is 10");
}else if( x == 20 ){
System.out.print("Value of X is 20");
}else if( x == 30 ){
System.out.print("Value of X is 30");
}else{
System.out.print("這是 else 語句");
}
}
分支結構:嵌套的 if…else 語句
if(布爾表達式 1){
////如果布爾表達式 1的值為true執行代碼
if(布爾表達式 2){
////如果布爾表達式 2的值為true執行代碼
}
}
public class Test {
public static void main(String[] args){
int x = 30;
int y = 10;
if( x == 30 ){
if( y == 10 ){
System.out.print("X = 30 and Y = 10");
}
}
}
}
循環結構 for循環
int i=0;
if(i<30){
System.out.println(“唱歌”);
i++;
}
if(i<30){
System.out.println(“唱歌”);
i++;
}
if(i<30){
System.out.println(“唱歌”);
i++;
}
for(int i=0;i<30;i++){
System.out.println(“唱歌”);
}
for:for循環控制器
():循環的條件
int i=0:初始值
i<30:最大值
i++:增量為1(i+=2:增量為2)
{}:要循環執行的命令
循環結構:while 循環
while( 布爾表達式 ) {
//循環內容
}
while可以替換for循環
但是for循環不能完全替換while循環
public static void main(String args[]) {
int x = 10;
while( x < 20 ) {
System.out.print("value of x : " + x );
x++;
System.out.print("\n");
}
}
循環結構:break關鍵字
break; 終斷
public static void main(String args[]) {
int [] numbers = {10, 20, 30, 40, 50};
for(int x : numbers ) {
// x 等于 30 時跳出循環
if( x == 30 ) {
break;
}
System.out.print( x );
System.out.print("\n");
}
}
循環結構:continue關鍵字
continue; 當前的結束,繼續下一個
public static void main(String args[]) {
int [] numbers = {10, 20, 30, 40, 50};
for(int x : numbers ) {
if( x == 30 ) {
continue;
}
System.out.print( x );
System.out.print("\n");
}
}
循環結構:增強 for 循環
for(聲明語句 : 表達式)
{
//代碼句子
}
public static void main(String args[]){
int [] numbers = {10, 20, 30, 40, 50};
for(int x : numbers ){
System.out.print( x );
System.out.print(",");
}
System.out.print("\n");
String [] names ={"James", "Larry", "Tom", "Lacy"};
for( String name : names ) {
System.out.print( name );
System.out.print(",");
}
}