Java基礎語法
本文主要介紹Java中的一些基本語法,沒學習一門基礎語言,其基本語法是相當重要的,就好像建造房子一樣根基一定要牢固。下面就來價紹Java中的基礎語法。
1、注釋、標識符、關鍵字
注釋
/***
* ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
* │Esc│ │ F1│ F2│ F3│ F4│ │ F5│ F6│ F7│ F8│ │ F9│F10│F11│F12│ │P/S│S L│P/B│ ┌┐ ┌┐ ┌┐
* └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ └┘ └┘ └┘
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
* │~ `│! 1│@ 2│# 3│$ 4│% 5│^ 6│& 7│* 8│( 9│) 0│_ -│+ =│ BacSp │ │Ins│Hom│PUp│ │N L│ / │ * │ - │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │{ [│} ]│ | \ │ │Del│End│PDn│ │ 7 │ 8 │ 9 │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤ + │
* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │: ;│" '│ Enter │ │ 4 │ 5 │ 6 │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ ├───┼───┼───┼───┤
* │ Shift │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│? /│ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │
* ├─────┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ E││
* │ Ctrl│ │Alt │ Space │ Alt│ │ │Ctrl│ │ ← │ ↓ │ → │ │ 0 │ . │←─┘│
* └─────┴────┴────┴───────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
*/
————————————————
/***
* _ooOoo_
* o8888888o
* 88" . "88
* (| -_- |)
* O\ = /O
* ____/`---'\____
* . ' \\| |// `.
* / \\||| : |||// \
* / _||||| -:- |||||- \
* | | \\\ - /// | |
* | \_| ''\---/'' | |
* \ .-\__ `-` ___/-. /
* ___`. .' /--.--\ `. . __
* ."" '< `.___\_<|>_/___.' >'"".
* | | : `- \`.;`\ _ /`;.`/ - ` : | |
* \ \ `-. \_ __\ /__ _/ .-` / /
* ======`-.____`-.___\_____/___.-`____.-'======
* `=---='
*
* .............................................
* 佛祖保佑 永無BUG
*/
————————————————
平常我們編寫代碼的,在代碼量比較少的時候還可以看得懂自己寫的,但當項目結構一旦復雜起來,我們就需要用到注釋了。
注釋並不會被執行,是給我們寫代碼的人看的
書寫注釋是一個非常好的習慣!!!
平時寫代碼一定要注意規范。
關於代碼上面的注釋,大家可以在網上搜索有趣的代碼注釋,有很多有趣的注釋。
Java中的注釋有三種:
-
單行注釋
-
//單行注釋 只能注釋一行
-
-
多行注釋
-
/*多行注釋*/ 可以注釋多行
-
-
文檔注釋
-
/**文檔注釋*/ 也稱為JavaDOC /** */ 可以加參數
-
更改注釋顏色:
File->settings->Editor->ColorScheme->java->Comments
就可以更改三種注釋的顏色了。
public class Hello {
public static void main(String[] args) {
//單行注釋 //開頭
//輸出一個Hello World!
System.out.println("Hello World!");
/*多行注釋
我是多行注釋
*/
/**
* 文檔注釋
* @Description Hello //描述
* @Author 作者
**/
}
}
標識符
關鍵字
Java中所有的組成部分都需要名字。類名、變量名以及方法名都被稱為標識符。
abstract | assert | boolean | break | byte |
---|---|---|---|---|
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
這些關鍵字是不能用來,給變量、方法起名字的!
標識符注意點
-
所有的標識符都應該以字母(A-Z或者a-z),美元($)、或者下划線(_)開始
-
首字符之后可以是字母(A-Z或者a-z),美元符($)、下划線(_)或者數字的任何字符組合
-
不能使用關鍵字作為變量名
-
標識符是大小寫敏感的,也就是嚴格區分大小寫
-
合法標識符舉例:age、$salary、_value、__1_value
-
非法標識符舉例:123abc、-salary、#abc
-
public static void main(String[] ages){ String 王者榮耀="王者榮耀";//可以使用但不推薦 System.out.print(王者榮耀); }
-
-
可以使用中文命名,但是一般不建議這樣使用,也不建議是用拼音,很low!!
2、數據類型
Java是強類型語言
與之相同的還有C/C++都是強類型語言,強類型語言要求變量的使用要嚴格符合規定,所有的變量都必須先定義后才能使用。
強類型語言的好處就是安全性高,必須定義之后才能使用。缺點就是速度相對來說略有遜色。
public static void main(String[] ages){
String a;
System.out.print(a);//這樣書寫就會報錯,提示必須給a初始化一個值
}
-----
public static void main(String[] ages){
String a=10;//同樣會報錯,因為String為字符串類型,不能賦值int類型的數據。
System.out.print(a);
}
-----
//正確寫法,數據類型要對應
public static void main(String[] ages){
String a ="Hello World";
System.out.print(a);
}
弱類型語言:
VB、JS都屬於弱類型語言,它與強類型語言正好相反,速度相對較快,但是安全性稍微不足。
Java的數據類型分為兩個大類:
- 基本類型(primitive type)
- 引用類型(reference type)
基本類型又分為:
- 數值類型
- 整數類型
- byte占一個字節范圍:-128~127
- short占兩個字節范圍:-32768~32767
- int占四個字節范圍:-2147483648~2147483647
- long占八個字節范圍:-9223372036854775808~9223372036854775807
- 浮點類型
- float占四個字節
- double占八個字節
- 字符類型char占兩個字節
- 整數類型
- Boolean類型:占一位其值只有true和false兩個
引用數據類型:
- 類
- 接口
- 數組
public static void main(String[] ages){
//八大基本數據類型
int num1 = 10;//最常用
byte num2 = 10;
short num3 = 30;
long num4=100000L;//Long類型要在數字的后面加上L,來區分
//小數,浮點數
float num5 = 40.1F;//float類型也需要在數字后面加上F來與double區分,
double num6 = 40.11;
//字符類型
char name = 'A';//只能寫一個字符,如果寫多個就會報錯,一般用單引號括起來
//String 不是關鍵字,是類
String str = "你好!";//可以存放字符串類型
//boolean 布爾值:是/非
boolean flag = true;
boolean flag = false;
}
如果說你不懂什么是字節,這里九好評好看看吧!
位(bit):是計算機 內部數據 存儲的最小單位,11001100是一個八位二進制數。
字節(byte):是計算機中 數據處理 的基本單位,習慣上用大寫B來表示,1B(byte,字節) = 8 bit(位)
字符:是指計算機中使用的字母、數字、字和符號
1bit表示1位
1Byte表示一個字節 1B = 8b。
1024B= 1KB
1024KB= 1M
1024M = 1G
拓展:
public class Dome01 {
public static void main(String[] args) {
//整數拓展:進制 二進制0b 十進制 八進制0 十六進制0x
int i = 10;
int i2 = 010;//八進制0
int i3 = 0x10;//十六進制0x 0~9 A~F
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
//=====================================
//浮點數擴展 銀行業務如何標識?錢
//BigDecimal 數學工具類
//=====================================
//float 有限 離散 舍入誤差 大約 接近但不等於
//double
//最好完全不要使用浮點數進行比較
//最好完全不要使用浮點數進行比較
//最好完全不要使用浮點數進行比較
float f = 0.1f;//0.1
double d = 1.0/10;//0.1
System.out.println(f==d);//輸出為false
System.out.println(f);//0.1
System.out.println(d);//0.1
float d1 = 23232332323232f;
float d2 = d1 + 1;
System.out.println(d1==d2);//true
//=====================================
//字符擴展
//=====================================
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1);//強制轉換
System.out.println(c2);
System.out.println((int)c2);
//所有的字符的本質還是數字
//編碼 Unicode 表中對應字符和數字 2字節 0-65536 Excel 最長只有 2的16次方
char c3='\u0061';
System.out.println(c3);//a
//轉義字符
//\t 制表符
//\n 換行
// ··· 自行查找
String sa = new String("Hello World");
String sb = new String("Hello World");
System.out.println(sa==sb);//false
String sc = "Hello World";
String sd = "Hello World";
System.out.println(sc==sd);//true
//對象 從內存分析
//布爾值擴展
boolean flag = true;
if(flag==true){}//if為判斷條件如果的意思,后面細講
if(flag){}這兩行代碼相同
//Less is More! 代碼要精簡易讀
}
}
3、類型轉換
由於Java為強類型語言,所以要進行有些運算的時候,需要用到類型轉換。
低<--------------------------------------------->高
byte,short,char->int->long->float->double
小數的優先級一定大於整數!所以float大於long
運算中,不同類型的數據先轉化為同一類型,然后進行運算。
問題:
public class Demo05{
public static void main(String[] ages){
int i = 128;
byte b = (byte)i;//強制類型轉換,內存溢出
//強制轉換 格式(類型)變量名;
System.out.println(b);//輸出-128?
//這是因為byte本身最高只能為127,賦值128后出現溢出現象
}
}
強制類型轉換
格式:(類型)變量名
由高到低 強制類型轉換 (類型)變量名 高--低
自動類型轉換
自動轉換 低--高
public class Dome01{
public static void main(String[] ages){
int i = 128;
double d = i;//自動類型轉換 低--高
System.out.println(d);
/*
注意:
1.不能對布爾值進行轉換
2.不能把對象類型轉換為不相干的類型,
3.再把大容量轉化為低容量的時候--強制轉換
4.轉換的時候可能會出現內存溢出,或精度問題!
5.
*/
//精度問題
System.out.println((int)23.7);//23
System.out.println((int)-45.89);//45
//==============================
char c = 'a';
int d = c+1;
Systerm.out.println(d);//98
Systerm.out.println((char)d);//b
}
}
溢出問題
public class Dome02{
public static void main(String[] ages){
//操作比較大的數的時候,注意溢出問題
//JDK7的新特性,數字之間可以使用下划線分割,為了更方便的觀察
int money=10_0000_0000;//下滑線並不會被輸出
System.out.println(money);
int years = 20;
int total = money*years;
Systerm.out.println(total);//-1474836480,出現溢出現象,超過了int的最大數值
//即便是在計算的時候轉換為long,依然會出現錯誤
long total2 = money*years;//默認是int,在轉換之前已經溢出。
//解決方案,在計算前就改變類型
long total3 = money*((long)years);
Systerm.out.println(total3);//正確輸出
//另外 在寫long數據類型的時候,后綴的L盡量大寫,以防認為是1/l
}
}
4、變量、常量
變量
變量是什么:就是可以變化的量!
變量就是只內存空間的一小個位置,我們創建變量就好像在內存空間中申請了一小塊位置空間,而空間中存放的東西我們是不確定的。
Java是一種強類型語言,每隔變量都必須生命其類型。
Java變量是程序中最基本的存儲單元,其要素包括變量名,變量類型和作用域。
type varName [=value] [{,varName[=value]}];
//數據類型 變量名 = 值;可以使用逗號隔開來聲明多個同類型變量。但是不建議。
注意事項:
- 每個變量都有類型,類型可以是基本類型,也可以是引用類型(如:String)。
- 變量名必須是合法的標識符。
- 變量聲明是一條完整的語句,因此每一個聲明都必須以分號結束。
public class Dome03{
public static void main(String[] ages){
//int a,b,c;不建議
//int a=0,b=2,b=3;//這種寫法程序可讀性較差,建議分開來寫
String name="Hello";
char x = 'x';
double pi = 3.14;
}
}
變量的作用域
- 類變量
- 要求需要加上關鍵詞static。在方法之外,類之內
- 實例變量
- 沒有關鍵詞,在方法之外,類之內
- 局部變量
public class Dome03{
//屬性:變量
static int allClicks=0;//類變量
String str="Hello World";//實例變量:從屬於對象;
//如果不進行初始化,會輸出這個類型的默認值
String name;//默認值null
int age;//默認值 0
//布爾值默認為false
//除了基本類型,其余的都是null
//main:方法
public static void main(String[] ages){
int i = 0;//局部變量:必須聲明和初始值
//這里不需要了解很深后面會講解。
//變量類型 變量名字 = new Dome03();
Dome03 dome03 = new Dome03();
//dome03.name = "Hello";
Sytem.out.println(dome03.name);
//類變量可以直接在,本類的方法中使用
System.out.println(allClicks);//0
}
//其他方法
public void add(){
//這里無法使用 i輸出,需要重新定義
}
}
常量
常量(Constant):初始化(initialize)后不能在改變值!不會變動的值;
常量在定義的時候要使用關鍵字 final
所謂常量可以理解成一種特殊的變量,它的值被設定后,在程序運行過程中不允許修改。
final 常量名 = 值
final double PI = 3.14;
常量名一般使用大寫字符。
public class dome04{
//修飾符,不存在先后順序
//final static double PI =3.14;也可以
static final double PI =3.14;
public static void main(String[] ages){
System.out.println(PI);
}
}
變量的命名規范:
- 所有變量、方法、類名:見名知意
- 類成員變量:首字母小寫和駝峰原則:mouthSalary 除了第一個單詞以外,后面的單詞第一個字母大寫
- 局部變量:首字母小寫和駝峰原則
- 常量:大寫字母和下划線:MAX_VALUE
- 類名:首字母大寫和駝峰原則:Max,GoodMan
- 方法名:首字母小寫和駝峰原則:run(),runRun()
5、運算符
Java語言支持如下運算符:
- 算數運算符:+,-,*,/,%,++,--
- %取余原運算,在Java中叫做模運算
- 賦值運算符:=
- 關系運算符:>,<,>=,<=,==,!= instanceof
- instanceof 到面向對象的時候,再深究
- 邏輯運算符:&&,||,!
- 位運算符:&,|,^,~,>>,<<,>>>(了解)
- 條件運算符:?:
- 也叫三目運算符,后面在講,先做了解
- 擴展賦值運算符:+=,-=,*=,/=
//運算符 operator
public class Dome01{
public static void main(String[] ages){
// 二元運算符
//IDEA中快捷鍵:ctrl+d 復制當前行到下一行
int a = 10;
int b = 20;
int c = 30;
int d = 40;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b);//因該等於0.5但是輸出為0,這是因為數據類型為int型,會舍去小數部分,所以為0
//==============================
long a = 1212312341L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d);//輸出類型為long
System.out.println(b+c+d);//輸出類型為int
System.out.println(c+d);//輸出類型為int
//類型轉換:byte,short,char用運算符運算后自動轉型int類型
//============================
//關系運算符,返回結果為Boolean類型
int a = 10;
int b = 20;
int c = 21;
//取余也叫做模運算
System.out.println(c%a);//結果為1,余數為1
System.out.println(a>b);//false
System.out.println(a<b);//true
System.out.println(a==b);//false
System.out.println(a!=b);//true
//=============================
//++ -- 自增,自減 一元運算符
//a++ = a = a+1 //先運算,a在加一 --相同
//++a //a先加1,在運算 --相同
int a = 3;
int b = a++; //先給B賦值,在自增
System.out.println(a);//輸出為4
int c = ++a;//先自增,在給c賦值
System.out.println(a);//5
System.out.println(b);//3
System.out.println(c);//5
//=======================
//冪運算 2^3 2*2*2 = 8
//但是Java中沒有冪運算,也就是沒有^這個符號
//可以是用Math數學工具類,其中包含許多數學方法可以直接使用
double pow = Math.pow(2,3);
System.out.println(pow);//8.0
}
}
建議一定要多練習兩次++
,--
的操作達到數來能掌握。
剩下的幾種運算符:
邏輯運算
public class Dome04{
public static void main(String[] ages){
//邏輯運算符 與(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println(a&&b);//false 有假為假 ,只有連個都為真的時候才為真
System.out.println(a||b);//true 有真為真 ,只有都為假的時候才為假
System.out.println(!(a&&b));//true //取反,假的變成真,或者真的變成假
//當a&&b判斷 ,a為假,b為真,當判斷出a為假之后程序就會短路,也就是不在判斷b的真假,直接執行嚇一跳指令。
//驗證
int c = 5;
boolean d = (c<<4)&&(c++<4);
System.out.println(c);//5 //如果執行了后面的語句,c因該輸出的為6
System.out.println(d);//false
}
}
位運算
public class Dome01{
public static void main(String[] ages){
/*
A = 0011 1100
B = 0000 1101
A&B 按位與運算 0000 1100 有0為0
A|B 按位或運算 0011 1101 有1為1
A^B 按位異或運算 0011 0001 相同為0不同為1
~B 按位取反 1111 0010 原來為1取反后為0,原來為0后來為1
2*8 = 16 2*2*2*2
效率極高
<<左移 >>右移
<< 相當於數字*2
>> 相當於數字/2
0000 0000
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
··· ···
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3);//輸出16
}
}
擴展運算符
public class Dome02{
public static void main(String[] ages){
int a = 10;
int b = 20;
a += b;//先當與a=a+b;
a -= b;//相當於a=a-b;
System.out.println(a);//30
//字符串連接符 +
System.out.println(a+b);//用作字符運算
System.out.println(""+a+b);//輸出1020
//如果在加號前邊出現""字符類型,那么將會將字符串后的,所有運算數據轉化為字符串類型進行連接,前面的運算按照正常進行。
System.out.println(a+b+"");//30
//運算過程是從左向右
//=================================
//三元運算符//
//必須掌握,實際開發中經常使用
//x ? y : z
//如果x==true,結果為y,否則結果為z
int score = 80;
String type = socre < 60? "不及格":"及格了";
System.out.println(type);//輸出及格
}
}
6、包機制、JavaDoc
為了更好地組織類,Java提供了包機制,用於區別類名的命名空間。
包的本質:就是文件夾!
包語句的語法格式為:
package pkg1[. pkg2[. pkg3...]];
一般利用公司域名倒置作為包名;例如:com.baidu.www
為了能夠使用某一個包的成員,我們需要在Java程序中明確導入該包。使用import
完成此功能
import package1[.package2...].(classname|*);
導入包的時候的快捷鍵:ALT+回車
總結:
- 定義包用package
- 導入包用import
- 當一個包中有許多類,可以直接通過
*
通配符全部導入- 例如:com.baidu.www.*
推薦看完這章后,去看一下阿里巴巴開發手冊!,百度搜索就行
JavaDoc
傳送門:jdk幫助文檔
Javadoc命令是用來生成自己API文檔的
參數信息
- @author 作者名
- @version 版本號
- @since 指名需要最早使用的jdk版本
- @param 參數名
- @return 返回值情況
- @throws 異常拋出情況
//加載類上面就是類的注釋
/**
* @author zhao
* @version 1.0
* @since 15
*
*/
public class Dome02 {
String name;
//加載方法上面就是方法的注釋
/**
* @author zhao
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
}
在IDEA中打開對應的類的文件夾方式:
生成自己Javadoc -API文檔的方法,首先一定是在寫代碼的時候就已經寫了文檔注釋:
通過命令行生成doc文檔:
- 進入對應文檔所在的文件夾
- 保存在路勁在cmd中打開
- 在cmd中輸入
javadoc -encoding UTF-8 -charset UTF-8 文件名.java
回車即可- 其中encoding為編碼格式,為了使中文顯示正常,不出現亂碼格式
- charset 字符編碼格式
- 回到對應文件夾查看即可。
通過IDEA生成Javadoc文檔的方法:
-
-
-
說明:
- 選擇的整個項目還是模塊還是單個文件
- 文檔輸出路徑
- Locale選擇地區,這個決定了文檔的語言,中文就是zh_CN
- 傳入JavaDoc的參數,一般寫法
-encoding UTF-8 -charset UTF-8 -windowtitle “文檔HTML頁面標簽的標題” -link http://docs.Oracle.com/javase/7/docs/api
學習編程一定要學會,面向百度編程!!