Java入门1
?
一、eclipse的簡單使用
1.新建項目
在package explorer的空白處點擊右鍵,新建一個項目(new->Java Project)或者點擊菜單欄的File->JavaProject,然后點擊Finish完成。
Project name(項目名稱)命名規則:帕斯卡命名規則,只能用下劃線,數字,英文字母,數字不能開頭。例如HelloWorld1。
帕斯卡命名法:首字母大寫,后續所有單詞首字母大寫,類名,接口,枚舉enum適用。? ? ? ??
2.新建Package
? 在新建的Java項目右鍵new->Java Package,包名處所有字母都小寫,網址倒寫,com.網址.工程名.包名(例如:com.jredu100.HelloWorld.helloworld)。然后點擊Finish完成建包。
? ? ? ?
3.新建Class(類)
? 在新建包Package右鍵new新建一個Class類,類名符合帕斯卡命名規則(帕斯卡命名規則,只能用下劃線,數字,英文字母,數字不能開頭。),類名用名詞不用動詞。勾選下圖所標注選項可自動創建main方法。
? ? ? ?
4.運行步驟
5.基本輸入輸出語句
package com.jredu100.lianxi;import java.util.Scanner;public class HelloW {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("請輸入");Scanner sc=new Scanner(System.in);int n=sc.nextInt();//輸入System.out.println(n);//輸出 }}結果:
二、Java入門知識
1.命名規則
? 帕斯卡命名法:首字母大寫,后續所有單詞首字母大寫。類名,接口,枚舉enum。 ? 駝峰法則:首字母小寫,后續所有單詞首字母大寫。方法名,變量名。 ? 匈牙利法則:所有字母都小寫,中間用_隔開。 ? 項目名稱命名:帕斯卡命名規則,只能用下劃線,數字,英文字母,數字不能開頭。 ? Package命名:小寫,com.jredu100.helloworld,helloworld項目名。(網址倒寫,com.網址.工程名.包名,所有字母都小寫。) ? Class命名:帕斯卡命名規則,類名用名詞不用動詞。 ? 標識符:字母、數字、下劃線、$,不能以數字開頭。名字語意直觀。類名,變量名,方法名。 public、static、class等關鍵字,被系統所占用,有特殊的含義,不能做命名。2.8種基本數據類型
| 整型int | 4字節32位有符號整數 |
| 長整型long | 8字節64位有符號整數 |
| 短整型short | 2字節16位有符號整數 |
| 字節byte | 1字節8位有符號整數 |
| 字符char ? | 2字節16位Unicode編碼 |
| 單精度浮點型float | 4字節32位浮點數 |
| 雙精度浮點型double | 8字節64位浮點數 |
| 布爾boolean | 1字節8位 |
?
?
?
?
?
?
?
?
注:char是寬字節碼,可以保存一個中文字。
3.基本數據類型的轉換
基本數據類型按值傳遞,傳遞復本(例如復制的),修改副本不會影響原有的數據。枚舉按值傳遞。?
不同的基本數據類型之間可以進行強制轉換,int->long自動轉換,long->強制轉換,bool不考慮轉換。
byte ? ?short int long float double char 由高到低-----》》》 自動轉換:由低到高,高存儲空間可存儲小的,可能會浪費存儲空間。例: float f=1.054f; double d=f; System.out.println(d);//自動轉換 強制類型轉化:由高到低,數據類型由高換低,可能造成精度損失。例: float f=0.1f;//強制類型轉換”f“重要 System.out.println(f); int n3=100; short s_int2=(short)n3;//類型不匹配 (short)強制類型轉換 System.out.println(s_int2);4.運算符
(1)算術運算符:+ - * / % //算術運算符 int n=10; int m=20; System.out.println(n+m); System.out.println(n-m); System.out.println(n*m); //注意數據類型,如果都是整型,將執行整除運算 //所以結果10/20=0 System.out.println(n/m); //如果需要轉換成float類型的結果則需要進行強制轉換 (2)關系運算:== !=?< ?> ?>= <= //關系運算符 //n=0 m=20 //1 System.out.println(n==m);//false System.out.println(n>m);//false System.out.println(n<m);//true System.out.println(n+50>=m);//true System.out.println(n+20<=m);//true //2 boolean isGreate=n>m;//bool型用變量接收 System.out.println(isGreate); (3)位運算 :?& ?| ?^ //按位與& //現將左右兩邊的表達式轉換成二進制數,分別按每一位進行與操作。 //將與操作的結果的二進制數轉換成十進制為最后的結果。 int n=2; //0010 int m=8; //1000相與得0000 int n7=n&m; System.out.println(n7);//或 int n8=n|m; System.out.println(n8); //異或* int n9=n^m;//取反后相或 System.out.println(n9); (4)邏輯運算: && || ?! //邏輯運算符 // 短路與&&System.out.println("****************************");boolean bool=n>m&&n-10>m;//與,真真才為真 System.out.println(bool);bool=n<m&&n+10>m;//真假為假 System.out.println(bool);bool=n<m&&n+10<m;//真真為真 System.out.println(bool); //&&短路與 兩邊都為真,結果才為真。 //但如果左邊表達式為假,則不再計算右邊的表達式,直接返回假(面試)//邏輯或|| //左右兩個表達式有一個為真則為真 bool=n>m||n>0;//false System.out.println(bool);bool=n<m||n>0;//true System.out.println(bool);//邏輯非! 又叫取反 //右邊的表達式為真結果為假,反之。bool=!(n>m);System.out.println(bool); (5)賦值運算:= += -= *= /= %= //賦值運算符n=11 m=20n+=2;System.out.println(n);n-=5;//n=n-5System.out.println(n);//8 n*=2;System.out.println(n);//16 n/=4;System.out.println(n);//4 n%=2;System.out.println(n);//0 (6)單目運算:++ -- int n4=n++;//先賦值后自增 System.out.println(n4);int n5=++n;//n++后n5為12 System.out.println(n5);int n6=--n; System.out.println(n6); (7)多目運算(三元):min=(a<b)?a:b //三元運算符(三木、 條件運算符) //格式:表達式1?值1:值2 //如果表達式1結果為真取值1,如果表達式為假,取值2 int n=2;int m=3; int n10=n==m?9:10;System.out.println(n9); (8)位移運算符<<帶符號左移 >>帶符號右移 >>>無號右移5.變量
變量:是一個暫時性的存儲。 (1)聲明(2)賦值(3)使用 int n;//聲明 n=10;//賦值 System.out.println(n);//使用 常量聲明:程序運行過程中不可修改。 //程序中的常量//封裝變化 //float pi=3.14f; //pi=3.1415f;//聲明常量需要用final來進行修飾 //常量名所有字母都大寫 //常量在程序運行過程中不可被修改 final float PI =3.14f;//例如需要修改圓的個數,則只需改PI //PI=3.14f; float area=10*10*PI; System.out.println(area);練習:
(1)獲得會員卡號四位數字
(2)拆分會員卡號的每一位數字
(3)將每位數字進行相加
(4)判斷和是否大于20,如果大于20,顯示50,否則,顯示0。
public class MemberTest {public static void main(String[] args) {// TODO Auto-generated method stub// 1.獲得會員卡號四位數字System.out.println("請輸入會員卡號(四位整數):");//System.in(參數)標準的輸入流,控制臺輸入***Scanner sc=new Scanner(System.in);//實例化Scanner對象,console控制臺,控制臺檢索輸入流int cardID=sc.nextInt();//sc.nextInt從標準輸入流讀取一個int型的數字 System.out.println(cardID);int qianwei=cardID/1000;int baiwei=cardID%1000/100;int shiwei=cardID%1000%100/10;int gewei=cardID%10;//3.將每位數字進行相加int sum=qianwei+baiwei+shiwei+gewei;int money=sum>20?50:0;System.out.println(money);}}6.包裝類型(8個,首字母大寫)對應8個基本數據類型
Object Boolean ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Number ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Character Long Short Double Float Integer Byte (1)基本數據類型<->包裝類 包裝類是引用數據類型,裝箱是讓值類型轉變為引用類型,拆箱讓引用類型轉變為值類型。 JAVA里有8種包裝類,分別對應8種數據類型 基本數據類型是值類型,包裝類是引用數據類型 基本數據類型轉成包裝類,即值類型轉成引用數據類型稱為裝箱。 //裝箱 int m=20; Integer num2=new Integer(m); boolean bool1=true; Boolean bool3=new Boolean(bool1); 包裝類轉成基本數據類型,即引用數據類型轉成值類型稱為拆箱。 //相當于int num=10值類型 //創建對象需要用到new關鍵字 //語法格式是類名 對象名=new 類名(參數); Integer num=new Integer(10);//引用類型 //引用數據類型 new了一個integer的num對象 //可以通過.語法來調用對象的方法 //下面這行代碼是要獲取對象的int型的值 int n=num.intValue();//值類型 由引用轉換成值類型拆箱 Boolean bool=new Boolean(true); boolean bool2=bool.booleanValue();Double dou=new Double(1.555); Double w=dou.doubleValue();7.字符串<->基本數據類型
(1)字符串->基本數據類型 //字符串轉成基本數據類型 String s="36";//String代表字符串 //***包裝類對象.parse***(參數)方法,是將字符串轉成基本數據類型*** int n2=Integer.parseInt(s);double d2=Double.parseDouble(s);String b2="false"; boolean b1=Boolean.parseBoolean(b2);String f1="0.1"; float f2=Float.parseFloat(f1); System.out.println(f2);(2)字符串<-基本數據類型
String.valueOf();8.分支與循環
三種基本流程結構:順序,選擇,循環 (1)循環結構 while do-while for foreach while循環: while循環(參考工程HelloJava------WhileTest.java)未知循環次數 while(循環條件(符合條件,繼續執行;否則,循環退出)){ 循環操作(循環被重復操作) } package com.jredu100.hellojava;public class WhileTest {public static void main(String[] args) {// TODO Auto-generated method stubint i=0;while(i<10){System.out.println(i+1+".讓每個夢想成為現實");i++;}} }do while循環:
do {循環操作}while(循環條件); (參考工程HelloJava------DoWhileTest.java)未知循環次數,先執行一遍,然后去判斷。 package com.jredu100.hellojava;public class DoWhileTest {public static void main(String[] args) {// TODO Auto-generated method stubint i=1;int sum=0;do{sum+=i;i++;}while(i<=100);System.out.println(sum);} }for循環:
for循環(參考工程HelloJava------ForTest.java)已知循環次數 for(表達式1;表達式2;表達式3){ 循環操作; } package com.jredu100.hellojava;public class ForTest {public static void main(String[] args) {// TODO Auto-generated method stubint sum=0;for(int i=1;i<=100;i++){sum+=i;}System.out.println(sum);} } (2)跳轉語句 break,continue, return 1.break結束本層循環,繼續執行循環后面的語句,嵌套循環break往外跳一層。 2.continue 結束本次循環剩余的語句,繼續執行下一次循環,continue作用于while循環時,必須將變量更新語句放到continue上面,否則將造成死循環。 3.return直接結束當前方法main,遇到return后方法中的所有代碼將不再執行。 for( int i=1;i<20;i++){if(i%3==0){continue;}System.out.println(i); }for( int i=1;i<20;i++){if(i%3==0){break;}System.out.println(i); } for( int i=1;i<20;i++){if(i%3==0){return;}System.out.println(i); } (3)選擇語句 if else語句 int n1=20; int m1=30; if(n1>m1&&n1>20){System.out.println(n1);}else if(m1>n1){System.out.println(m1);}else{System.out.println("相等"); }switch語句
package com.jredu100.hellojava;import java.util.Scanner;public class SwitchTest {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("請輸入你要購買的商品編號:");Scanner sc=new Scanner(System.in);int userNum=sc.nextInt();//1.綠茶,3塊錢//2.冰紅茶,3塊錢//3.脈動,5塊錢//4.咖啡,6塊錢//5.酸奶,5塊錢switch (userNum) {//switch case 用作相等分支case 1://case的值匹配表達式的結果System.out.println("1.綠茶,3塊錢");break;case 2:System.out.println("2.冰紅茶,3塊錢");break;case 3:System.out.println("3.脈動,5塊錢");break;case 4:System.out.println("4.咖啡,6塊錢");break;case 5:case 6:System.out.println("5.酸奶,5塊錢");break;default:System.out.println("無此商品");break;}}}9.數組
數組是一組變量集合,存儲相同數據類型的一組數據,開辟一塊連續的區間。 聲明一個變量是在內存空間劃出一個合適的空間。 聲明一個數組是在內存空間劃出一串連續的空間。 數組名:即標識符,連續的空間首地址。表示連續空間的首地址,通過首地址可以依次訪問數組所有元素。 以下代碼分情況說明,利用注釋解決。 package com.jredu100.helloday4;import java.util.Scanner;public class ShuZu {public static void main(String[] args) {// TODO Auto-generated method stub/*** 1.數組:在內存中開辟的一串用于存儲相同數據類型的連續空間* 2.數組名:表示連續空間的首地址,通過首地址可以依次訪問數組所有元素* 3.下標:元素在數組中的排序叫做下標,從0開始。* 【數組的聲明】* 1.聲明數組:int []arr;* 2.給數組分配空間:arr=new int [5];* 3.給數組賦值:arr[0]=1;arr[1]=2;* 4.訪問數組數據,使用數組下標訪問* 5.數組長度一旦聲明將不可改變不可追加* 6.數組聲明縮寫* int[] arr={1,2,3,4,5};//自動分配五個空間*****最常用的聲明* int []arr=new int[]{1,2,3,4,5};//[]里不能加數字,不能放內存大小*/ // int [] arr;//聲明一個int類型的數組//int srr[]=new int[]; // arr=new int [5]; // arr[0]=1; // arr[1]=2; // System.out.println(arr[4]);//int[] arr={1,2,3,4,5};//自動分配五個空間//int []arr=new int[]{1,2,3,4,5};//[]里不能加數字/*** 使用循環遍歷給數組賦值,輸出數組*/Scanner in=new Scanner(System.in);int [] arr=new int[5];for(int i=0;i<arr.length;i++){System.out.println("請輸入數組的第"+(i+1)+"個值");arr[i]=in.nextInt(); // System.out.println(arr[i]);//放在這輸一遍打印一遍 }for(int i=0;i<arr.length;i++){System.out.println(arr[i]);}}} 下標:元素在數組中的排序叫做下標,從0開始。 int [] arr; int arr[]; int [] infoZhang=new int[]{70,60} int infoLi=infoZhang; 對引用數據類型,復制就是把原對象的地址傳遞給下一個變量。 總練習:
需求描述:假設一個簡單的ATM機的取款過程為:
首先提示用戶輸入密碼(password),假設默認密碼為111111,最多只能輸入3次,
超過3次則提示用戶“密碼錯誤,請取卡”,結束交易。
如果用戶密碼正確,再提示用戶選擇金額(amount),
“請輸入0到6中任意數字選擇對應錢數:0à手動輸入金額,1.100元, 2.300元,
3.500元, 4.1000元, 5.3000元, 6.5000元”。
輸入數字如果錯誤,提示“輸入錯誤,是否繼續 Y/N”,選擇Y重新提示輸入錢數編號,
選擇N提示“輸入錯誤,請取卡!”。選擇數字為1到6,打印對應錢數,
并提示“是否繼續 Y/N”。選擇數字0,ATM機只能輸出100元紙幣,
自定義錢數要求最低為100元,最高為1000元。如果用戶輸入的金額符合上述要求,
則打印輸出用戶取的錢數,并提示“取款完成,是否繼續Y/N”;否則輸出一句話“金額錯誤,
是否繼續 Y/N”,如果用戶輸入Y,提示用戶重新選擇取款金額,如果用戶輸入 N,
打印“交易取消,請取卡!”
ps:取款成功后,應該提示用戶是否繼續,總取款金額不能超過2萬
?【解題思路】
?1、驗證密碼
?① 密碼正確,繼續執行下面操作;
?② 密碼錯誤3次,return;
?2、取款操作。全部包含在 while循環內部。
?① 提示選擇編號;
?② 根據編號,給money賦值。用switch結構實現。
1~6:直接給money賦固定值,0:手動賦值操作;
?③ 驗證取款是否成功。money-本次取款金額,moneySum-本次取款之前的總金額
?判斷moneySum+money是否>20000,3種情況:
?>2000 本次取款超額,但moneySum之前并不足20000,繼續下次循環;
?=2000 取完本次money后,剛好滿額。money可以加到sum上,然后return;
?<2000 取完本次money后,仍未上限。money可以加到sum上,繼續下次循環。
?④ 驗證是否繼續,while-if結構實現,有3種情況:
?Y/y 將小循環break,繼續執行取款大循環;
?N/n 直接return,停止所有操作;
?其他 continue,繼續執行小循環,重復輸入Y/N
?
?
轉載于:https://www.cnblogs.com/gcywj/p/8645631.html
總結
- 上一篇: st-lab1
- 下一篇: java美元兑换,(Java实现) 美元