Java基本語法
一、基本框架
1)概念
一個Java程序可以認為是一系列對象的集合,而這些對象通過調用彼此的方法來協同工作
-
對象(object):代表現實世界中可以明確標識的一個實體,存在獨特的標識、狀態和行為。例如,一條魚是一個對象,它的狀態有:顏色、品種;行為有:漫游、魚躍等。
-
類(class):是創建對象的模板,用于描述一類對象的行為和狀態。
-
方法:方法就是行為,一個類可以有很多方法。
public class Welcome { //類 public static void main(String[] args) { //主方法 System.out.println("welcome to java!"); //輸出結果 // System.out.print();//不會換行 // System.out.println();//會在輸出完數據之后自動輸出一個換行符 } }
注意:①每行必須以 ; 結束
②關鍵字或保留字不能在程序中作為標識符
③注釋方法: // -單行注釋
/**/ -多行注釋
④塊:通過 { } 把一些程序語句括起來形成一個塊,塊是可以嵌套的
2)編譯與執行
1、JDK
JDK, 全稱是 Java Development Kit ,即 Java 開發包,是 開發 Java 程序需要的工具包,通常,JDK 中包含了相應版本的 JRE。
開發者編寫的 Java 源程序是.java結尾的文件,JDK 可以將其編譯成.class結尾的文件(這就相當于是某種意義上的 “機器語言”
了),從而在 JRE 上執行。
編譯:
javac Welcome.java
2、JRE
JRE,全稱是 Java Runtime Environment,即 Java 運行時環境,是 Java 運行時需要安裝的環境,這個環境中帶有 JVM 。一臺機器上有 JRE,那么就能運行 Java 程序了。
JRE 可以說是承載了 JVM 的具體環境。不同的硬件平臺上有不同的 JRE,但不同的 JRE 都承載著相同的 JVM。
3、JVM
JVM,全稱是 Java Virtual Machine,即 Java 虛擬機,Java 程序最終運行需要依賴 JVM, Java 程序之所以支持跨平臺,“一次編寫,處處運行”, 正是因為 JVM 。
執行:
java Welcome
注意:每個java程序都必須先編譯再執行。
3)Java特性
- 簡單(simple);
- 面向對象(object oriented);
- 分布式(distributed);
- 解釋型(interpreted);
- 魯棒(robust);
- 安全(secure);
- 體系結構中立(architectural neutral);
- 可移植(portable);
- 高性能(high performance);
- 多線程(multithreaded);
- 動態性(dynamic)。
二、命名習慣
①均不能以下劃線或美元符號開始,也不能以下劃線或美元符號結束
②嚴禁使用拼音與英文混合,更不允許直接使用中文的方式
③類名使用UpperCamelCase風格,必須遵從駝峰形式
正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion
④方法名、參數名、成員變量、局部變量都統一使用 lowerCamelCase 風格,必須遵從駝峰形式。
三、基本輸入輸出
1)輸入
Java Scanner類:獲取命令行輸入的方法
使用Scanner類需要導入包:import java.util.Scanner;
import java.util.Scanner; //明確導入 public class ScannerDemo { public static void main(String[] args) { //實例化一個Scanner類的scanner對象,System.in表示標準輸入設備,默認設備是鍵盤 Scanner input = new Scanner(System.in); //以next方式接收字符串 String string = input.next(); //接收字符串類型的數據 int number = input.nextInt(); //接受int類型的數據 System.out.println("輸入的string為:" + string); //輸出變量string System.out.println("輸入的number為:" + number); //輸出number input.close(); //釋放資源 } }
從鍵盤讀取值:以next方式接受數據,不同的類型不同寫法,包含下面的情況:

2)輸出
System.out表示標準輸出設備,默認設備是顯示器。
使用System.out所包含的方法無需導入額外的包。
主要包含三個方法:
①System.out.print();//純輸出 ②System.out.println();//會在輸出完數據之后自動輸出一個換行符 ③System.out.printf(string format,args); //格式化輸出 --string format %d 整型: %5d 最大5位,不夠補空格 %f 浮點型: %.2f 兩位小數
%5.2f 整數位最大5位寬度,小數位2位,不夠前面補空格 %b 布爾型: true/false %5b(最大5位寬度) %s 字符型:%10s 10位寬度
四、變量與常量
1)常量
常量表示從不改變的永久數據。
常量必須在同一條語句中聲明和賦值,單詞final是聲明常量的java關鍵字。
//聲明常量 final 數據類型 常量名 = 值;
好處:不用重復輸入同一個值;若需修改常量值,只需要在源代碼的一個地方做修改
2)變量
1、概念:通俗的說,變量就是一個存儲容器,容器中存放的“東西”可以進行改變。
2、定義變量的幾種方式
①先聲明后賦值
//聲明: 變量數據類型 變量名 int number; //賦值: 變量名 = 值 number = 15;
②一步完成聲明、賦值
//變量數據類型 變量名 = 值 int number = 15;
③多個變量的初始化,可以一步完成
int num1 = 3,num2 = 23; //中間用英文版逗號( , )隔開
五、數據類型
1)整型
注意:給long賦值時,因為整數默認是int類型,要轉換為long類型的值,后面加上l或L
進制轉換:(輸出結果是十進制)
①默認進制是10進制
②二進制:以0B 或 0b開頭
③八進制:以0開頭
④十六進制:以0X 或 0x開頭
//示例
int num1 = 1200; //十進制 System.out.println(num1); int num2 = 0B10010011; //二進制 System.out.println("0B10010011 = " + num2); int num3 = 07265; //八進制 System.out.println("07265 = " + num3); int num4 = 0xAB7E; //十六進制 System.out.println("0xAB7E = " + num4);

數值類型轉換
①自動類型轉換(小范圍轉大范圍)
byte short char =>> int =>> long = >> float =>> double
注意:當byte short char 之間進行運算時結果屬于int型;
boolean類型不可以轉換為其它的數據類型。
②強制類型轉換(大范圍轉小范圍)
使用: "(目標數據類型)" 符號
格式: 小的數據類型 = (小的數據類型) 大的數據類型
2)浮點型(小數型)
1、單精度(float):占用存儲空間(4字節)、表數范圍( -2 ^ 128 ~ +2 ^ 128)
2、雙精度(double):8字節 -2 ^ 1024 ~ +2 ^ 1024(默認浮點型)
注意:在表示float 類型時,必須加上f 或者F;
兩者都不能精確的表示一個數,而是表示無限接近于這個數;
使用BigDecimal可以更精確的表示浮點數。
3)布爾型
boolean 值:true/false
4)字符型
1、char型
占用存儲空間(單個字符即2字節),表數范圍(0 ~ 2 ^ 16 -1)
char letter = 'A'; char letter = 'abc'; //錯誤定義,char型表示單個字符 char numChar = '5';
unicode碼和ASCII碼
unicode碼:一個16位Unicode碼占兩個字節,用以\u開頭的4位16進制數表示;
范圍從'\u0000'到'\uFFFF。
ASCII碼:所有大小寫字母、數字、標點符號和控制符的8位編碼表。
Unicode碼包括ASCII碼,從'\u0000'到'\u007F‘對應128個ASCII字符。

char letter1 = 'Y'; //ASCII= 89 char letter2 = 'c'; //ASCII=99 char letter3 = '@'; char letter4 = '\u1010'; System.out.println(letter1+letter2); //輸出結果位int型,188 System.out.println(letter1 +""+ letter2); // Yc System.out.println(letter3<letter4); //true
轉義序列表

//輸出:y:"nobody can stop me now!" System.out.println("y:\"nobody can stop me now!\"\n");
/* * 需求:顯示從2000到2100期間所有的閏年,每行顯示10個,之間用制表符分割 * * 分析: * 1、定義一個line變量,初始化為0 * 2、利用for循環表示year從2000到2100年數,循環體內為判斷閏年語句,每循環到year為閏年時,打印出year并且line加1; * 3、當line等于12時,進行換行 * 閏年條件: * ①year % 4 == 0 && year % 100 != 0 * ②year % 400 == 0 * * @author longhj * */public class Work9Years { public static void main(String[] args) { int line = 0; for(int year = 2000;year <= 2100; year++) { if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { System.out.print(year + "\t"); //橫向制表符 line++; } if(line == 12) { System.out.print("\n"); //換行 line = 0; } } } }

character類的常用方法

//character類的常用方法 char letter = 'y'; char numChar = '5'; int number = 5; System.out.printf("%s是否是一個數字:%b\r\n",number,Character.isDigit(number)); System.out.printf("%s是否是一個字母:%b\r\n",letter,Character.isLetter(letter)); System.out.printf("%s是否是一個數字:%b\r\n",numChar,Character.isDigit(letter)); System.out.printf("%s是否是一個字母或數字:%b\r\n",letter,Character.isLetterOrDigit(letter)); System.out.printf("%s是否是一個小寫字母:%b\r\n",letter,Character.isLowerCase(letter)); System.out.printf("%s是否是一個大寫字母:%b\r\n",letter,Character.isUpperCase(letter)); System.out.printf("返回%s的大寫形式:%s\r\n",letter,Character.toUpperCase(letter)); System.out.printf("返回%s的小寫形式:%s\r\n",letter,Character.toLowerCase(letter));

2、string型
char只能表示一個字符,而string能夠表示一串字符
例:string str1 = "Good luck!";
String類型不是基本數據類型,而是引用類型。這里str1是一個引用變量,它引用一個內容為Good luck!的字符串對象。
①常見操作
str1.length():長度
str1.concat(str2):連接str1與str2
str1.charAt(int index):指定索引位置的字符,索引從0開始
str1.toUpperCase():返回大寫形式
str1.toLowerCase():返回小寫形式
str1.trim():返回str1去掉兩邊空白字符的新字符串
//字符串常見操作 String str1 = "Nobody Can Stop Me Now!"; String str2 = "abcde"; String str3 = " opqr sv "; System.out.printf("\"%s\"的長度為:%s\r\n",str1,str1.length()); System.out.printf("str2與str3連接:%s\r\n",str2.concat(str3)); System.out.printf("str2索引為2的字母:%s\r\n" , str2.charAt(2)); System.out.printf("str1所有字母大寫:%s\r\n" , str1.toUpperCase()); System.out.printf("\"%s\"的長度為:%s\r\n",str3,str3.length()); System.out.printf("str3去掉兩邊空白字符:%s\r\n" , str3.trim());

②字符比較
.equals() :如果相等,返回true
.equalsIgnoreCase() :忽略大小寫
.compareTo()
.startsWith("***") :(是否以指定字符串開頭)
.endsWith("***") :是否以特定的字符串結尾
.contains("***") :是否包含
//字符比較 String str4 = "Cookies"; String str5 = "ycfamily"; System.out.println(str4.equals(str5));//相等為true,反之false System.out.println(str4.equalsIgnoreCase("CooKieS"));//忽略大小寫 System.out.println(str4.compareTo(str5));//返回小于0的整數 對應的ASCII碼之和相減:srt4-str5 System.out.println(str5.compareTo(str4));//返回大于0的整數 System.out.println(str5.compareTo("ycfamily"));//返回0 System.out.println(str5.startsWith("yc"));//是否以yc開頭 System.out.println(str5.endsWith("yc")); //是否以yc結尾 System.out.println(str5.contains("yc")); //是否包含yc

③字符截取
.substring(index) //從指定位置開始截取到最后
.substring(int begin,int end) //從begin開始截取到end
④字符查找
.indexoOf("a") //返回第一次出現a的索引位置
.lastIndexOf("a") //返回最后一次出現a的索引位置
String str6 = "it'sanotawhataiachose"; System.out.println(str6.length()); //21 //字符截取 System.out.println(str6.substring(5));//notawhataiachose System.out.println(str6.substring(8,15)); //awhatai //字符查找 System.out.println(str6.indexOf("a")); //4 System.out.println(str6.lastIndexOf("a")); //15
3、字符與數值之間的轉換
①string型 轉換為 數值型
Byte.parseByte(numString):轉為byte型
Short.parseShort(numString):轉為short型
Integer.parseInt(numString):轉為int型
Long.parseLong(numString):轉為long型
Float.parseFloat(numString):轉為float型
Double.parseDouble(numString):轉為double型
②轉換時可以指定進制轉換
③將數值型轉換為string型:使用字符串拼接一個空串即可
//字符與數值之間轉換 //string轉數值型 String numString = "100"; System.out.println(numString + 10); //10010 System.out.println(Byte.parseByte(numString) + 10); //110 short shortNumber = Short.parseShort(numString); System.out.println(shortNumber + 10); //110 System.out.println(Integer.parseInt(numString)+10); //110 System.out.println(Long.parseLong(numString)+10); //110 System.out.println(Float.parseFloat(numString)); //100.0 System.out.println(Double.parseDouble(numString)+"\r\n"); //100.0 //指定進制轉換 int num = Integer.parseInt("00110011",2); System.out.println(num); //51 num = Integer.parseInt("A23C",16); System.out.println(num); //41532 //數值型轉string int num2 = 23; String str = num2 + ""; System.out.println(str); //23
六、運算符
1)算術運算符

注意:①整數之間做除法時,只保留整數部分而舍棄小數部分。如:5 / 2 = 2
②++、-- 還要區分前后:前++(先自增1,再運算)、后++(先運算,再自增1);前--(先自減1,再運算),后--(先運算,再自減1)
/* 運算符練習
* * @author longhj * */ package edu.practice_1024; public class Work1 { public static void main(String[] args) { double a = 3, b = 4; //練1 System.out.println("練1"); //(a++)/3+(--b)*2-(a--)%6+(b++)*3-(b--)
a++ /3 >>>>> 1,a=4, result=1
--b *2 >>>>> b=3,6, result=1+6=7
a-- %6 >>>>> 4,a=3, result=7-4=3
b++ *3 >>>>> 9,b=4, result=3+9=12
b-- >>>>> 4,b=3, result=12-4=8 System.out.println((a++)/3+(--b)*2-(a--)%6+(b++)*3-(b--)); //8 //(++b)*2-(a--)%4+(a++)*5-(--b)/2+(--a) a=3;b=4; System.out.println((++b)*2-(a--)%4+(a++)*5-(--b)/2+(--a)); //17
//練2 System.out.println("練2"); //a>b&(a++)>b&(--b)<a&(b++)>(a--) a=3;b=4; System.out.println(a>b&(a++)>b&(--b)<a&(b++)>(a--)); //false //b<=a|(b--)>(--a)|(++b)!=(a++)|(b--)==(a--) a=3;b=4; System.out.println(b<=a|(b--)>(--a)|(++b)!=(a++)|(b--)==(a--)); //true } }
/* *需求:用戶輸入四位會員號:計算四位會員號的之和。 *
* 分析:
* 1、輸入會員號 * 2、分解會員號 * 3、計算各數字之和 * *@author longhj **/ package edu.practice_1024; import java.util.Scanner; public class Work4 { public static void main(String[] args) { int custNo; //定義會員號 System.out.println("請輸入4位會員卡號"); Scanner input=new Scanner(System.in); //輸入會員卡號 custNo=input.nextInt(); System.out.println("會員卡號是:"+custNo); // 利用“/” 和 “%” 運算符獲得每位數字 int g=custNo%10; //分解獲得個位數 int s=custNo/10%10; //分解獲得十位數 int b=custNo/100%10; //分解獲得百位數 int q=custNo/1000; //分解獲得千位數 System.out.println("千位數:"+q+",百位數:"+b+",十位數:"+s+", 個位數:"+g); //利用“+” 運算符計算各位數字之和 int sum=g+s+b+q; System.out.println("會員卡號"+custNo+"各位之和:"+sum); input.close(); } }
2)關系運算符

3)邏輯運算符
① 與(&&、&):全真為真,有假則假
區別:&&會進行短路運算,&不會;&可以進行進位運算,&&不可以;若要進行邏輯與運算,推薦使用&&
② 或( ||、| ) :有真為真,全假則假
區別:|| 會進行短路運算,| 不會;| 可以進行進位運算,|| 不可以;若要進行邏輯與運算,推薦使用 ||
③ 非(!) :結果取反
④ 異或(^) :相同為假,不同為真
true ^ true => false
false ^ false => false
true ^ false => true
/* * 需求:判斷給定的某個年份是否是閏年 * * 分析: * 1、輸入年份 * 2、判斷是否為閏年的條件 * 條件一:year%400==0 * 條件二:year % 4 == 0 && year % 100 != 0 * * @author longhj*/ package edu.practice_1025; import java.util.Scanner; public class Work10 { public static void main(String[] args) { //輸入年份 int year; Scanner in = new Scanner(System.in); System.out.println("請輸入一個年份:"); year = in.nextInt(); //判斷輸入的年份是否為閏年 if (year % 400 == 0 ||(year % 4 == 0 && year % 100 != 0)){ System.out.println(year + "年是閏年。"); } else { System.out.println(year + "年不是閏年。"); } in.close(); } }

浙公網安備 33010602011771號