一.注釋、標(biāo)識符、關(guān)鍵字
1.注釋(comments)
- 平時我們編寫代碼,在代碼量比較少的時候,我們還可以看懂自己編寫的代碼,但是當(dāng)項目結(jié)構(gòu)一旦復(fù)雜起來,我們就需要用到注釋了!
- 注釋并不會被程序執(zhí)行,是給我們自己寫代碼的人看的,方便理解
- 書寫注釋是一個非常好的習(xí)慣
- Java中注釋有三種:單行注釋(Line comment)多行注釋(block comment)文檔注釋(JavaDoc)
- 找好看的注釋:搜索有趣的代碼注釋
- 三種注釋的代碼單行注釋:只能注釋一行,//javapublic class Hello { public static void main(String[] args) { //單行注釋 //輸出hello一句話! System.out.println("hello"); } }多行注釋:可以注釋一段文字,/ /javapublic class Hello { public static void main(String[] args) { //單行注釋 //輸出hello一句話! //多行注釋 / 這是多行注釋 這是多行注釋 這是多行注釋 / System.out.println("hello"); JavaDoc:文檔注釋,/* /javapublic class Hello { public static void main(String[] args) { //文檔注釋 /* * @descroption hello * @Author zhang / System.out.println("hello"); } }
comments:注釋
Annotations:注解
Bold:粗體
italic:斜體
description:描述
Author:作者
2.標(biāo)識符
- Java里面的關(guān)鍵字
Java所有的組成成分都需要名字,類名、變量名以及方法名都被稱作標(biāo)識符。(每個人都有自己的名字,程序也是如此,作為程序員,我們就是上帝造物主,我們要給自己創(chuàng)造的程序命名,這也體現(xiàn)了程序來源于生活?。?/p>
標(biāo)識符注意事項
所有的標(biāo)識符首字符都應(yīng)該以字母(A-Z或者a-z)、美元符($)、或者下劃線(_)開始
首字符之后可以是字母(A-Z或者a-z)、美元符($)、下劃線(_)或者數(shù)字的任意字符組合
不能使用關(guān)鍵字作為變量名或者方法名
標(biāo)識符是大小寫敏感的
合法標(biāo)識符例子:age、$salary、_value、__1_value
不合法標(biāo)識符例子:123abc,-salary、#abc
可以使用中文命名,但是一般不推薦怎樣去使用,也不建議使用拼音,原則上命名要見名知意
文件名與類名保持一致,并且類名首字母大寫(默認(rèn)規(guī)范)
二.數(shù)據(jù)類型
1.語言類型(安全性與性能)
- 強類型語言:要求變量的使用要嚴(yán)格符合規(guī)定,所有的變量都必須先定義后才能使用(安全性高,性能低)
- 弱類型語言:要求變量的使用不需要嚴(yán)格符合規(guī)定,所有的變量不需要先定義后才能使用(安全性低,性能高)
2.Java的數(shù)據(jù)類型分為兩大類
- 基本類型(Primitive type)單引號與雙引號:‘ 中 ’(只能為一個字符或一個字,‘中’或者‘A’等);” zahng “(可以有多個字符)判斷數(shù)值類型大小八大基本類型代碼:javapublic class Demo2 { //八大基本類型 //整數(shù) byte b1 = 10; short b2 = 100; int b3 = 1000; long b4 = 1000000L;//Long 類型要在后面加一個L,以示區(qū)分與上面不同。 //浮點數(shù) float c1 = 1.1665F;//float 類型要在后面加一個F,以示區(qū)分與double不同。 double c2 = 1.45466456; //字符類型 char d1 = 'A';//只能寫一個字或一個字符 //String不是基本類型,屬于引用類型 String e1 = "zhang";//可以寫多個字符 //boolean:布爾值,其值只有true與false boolean f1 = true; }
- 引用類型(reference type):除了基本數(shù)據(jù)類型,都是引用類型!
3.變量
- 變量是什么:就是可以變化的量
- java是一種強類型語言,每個變量都必須聲明其類型
- Java變量是程序中最基本的存儲單元,其3要素包括:變量名、類型變量和、作用域javatype varName = value //數(shù)據(jù)類型 變量名 = 值;可以使用逗號隔開來聲明多個同類型的變量!
- 注意事項:每個變量都有類型,類型可以是基本數(shù)據(jù)類型,也可以是引用類型(String 是引用類型)變量名必須是合法的標(biāo)識符變量聲明是一條完整的語句,因此每一個聲明都必須以分號(;)結(jié)束
4.什么是字節(jié)
位(bit):是計算機內(nèi)部數(shù)據(jù)存儲的最小單位,11101110就是一個八位二進制數(shù),習(xí)慣上用小寫的b表示。
字節(jié)(byte):是計算機中數(shù)據(jù)處理的基本單位,習(xí)慣上用大寫B(tài)來表示
1B(byte,字節(jié))= 8 bit(位),也就是說,如果用二進制表示的話,1字節(jié)=2的(8-1)次方 bit(位)
字符:是指計算機中使用的字母、數(shù)字、字、和字符
單位換算
1bit表示1位
1byte 表示1個字節(jié) 1B = 8b(二進制的8次方)【8-1的次方】
1024B = 1KB
1024KB = 1M
1024 M = 1G
電腦32位于64位的區(qū)別向下兼容,64位的電腦既可以裝64位操作系統(tǒng)也可以裝32位操作系統(tǒng),反之不行!位數(shù)越高,電腦內(nèi)存尋址越強,電腦運行速度越快同時,64位電腦,最多可以支持128G內(nèi)存,32位電腦,最多支持4G內(nèi)存,所以如果你想加內(nèi)存條,64位的理論上最多可以加到128G
三.類型轉(zhuǎn)換
- 由于Java是強類型語言,所以要進行某些運算時,需要用到類型轉(zhuǎn)換。
java
低---------------------------------->高
byte,short,char->int-->long-->float-->double
- 小數(shù)優(yōu)先級大于整數(shù)
- 運算中,不同類型的數(shù)據(jù)先轉(zhuǎn)換為同一類型,然后在進行運算
- 高轉(zhuǎn)低需要強制轉(zhuǎn)換,低轉(zhuǎn)高不需要
java
強制類型轉(zhuǎn)換:
高-----低 int-----byte
自動轉(zhuǎn)換:
低------高 int-------double
- 強制類型轉(zhuǎn)換(括號里面加上轉(zhuǎn)換類型)【格式:(類型)變量名】
java
public class Demo9 {
public static void main(String[] args) {
int s1 = 128;
byte s2 = (byte)s1;//內(nèi)存溢出
System.out.println(s2);
}
}
結(jié)果為:
-128
- 自動類型轉(zhuǎn)換(隱式類型轉(zhuǎn)換)
java
public class Demo10 {
public static void main(String[] args) {
int s1 = 128;
double s2 = s1;
System.out.println(s2);
}
}
結(jié)果為:
128.0
常見錯誤
1.轉(zhuǎn)換的結(jié)果為負(fù)數(shù),原因為超出byte的最大正范圍,避免內(nèi)存溢出
java
public class Demo9 {
public static void main(String[] args) {
int s1 = 128;
byte s2 = (byte)s1;//內(nèi)存溢出
System.out.println(s2);
}
}
結(jié)果為:
-128
- 2.不能對boolean值進行轉(zhuǎn)換,boolean是按位來計算大寫的,而其他的數(shù)據(jù)類型單位為字節(jié)?。?!
- 3.不能把對象類型轉(zhuǎn)換為不相干的類型(人不能轉(zhuǎn)換為一本書)
- 4.在把高容量轉(zhuǎn)換為低容量的時候,強制轉(zhuǎn)換
- 轉(zhuǎn)換的時候可能存在內(nèi)存溢出,或者精度問題!(浮點數(shù)轉(zhuǎn)int時,例如23.7變?yōu)?3、-4.6變?yōu)?4,丟失精度)
- char類型javapublic class Demo11 { public static void main(String[] args) { //字符轉(zhuǎn)換 char s1 = 'a'; int s2 = s1 +1; System.out.println(s2);//自動轉(zhuǎn)換 System.out.println((char) s2);//強制轉(zhuǎn)換 } } 結(jié)果為 98 b
- 操作比較大的數(shù)的時候,注意溢出問題,JDK7新特性,數(shù)字之間可以用下劃線分割javapublic class Demo12 { public static void main(String[] args) { //數(shù)字比較大的時候,注意溢出問題 //JDK7新特性,數(shù)字可以用下劃線分割表示 int s1 = 1_0000_0000; int s2 = 100; int s3 = s1 * s2;//計算時溢出了 long s4 = s1 * s2;//計算時按默認(rèn)的int計算,轉(zhuǎn)換為long類型之前就已經(jīng)錯誤了 System.out.println(s3); System.out.println(s4); } } 結(jié)果為: 451611456564151 451611456564151
- 解決上面問題javapublic class Demo12 { public static void main(String[] args) { //數(shù)字比較大的時候,注意溢出問題 //JDK7新特性,數(shù)字可以用下劃線分割表示 int s1 = 1_0000_0000; int s2 = 100; int s3 = s1 * s2;//計算時溢出了 long s4 = s1 * s2;//計算時按默認(rèn)的int計算,轉(zhuǎn)換為long類型之前就已經(jīng)錯誤了 long s5 = s1 * (long)s2;//計算時,先將s2從int轉(zhuǎn)換為long在進行計算,結(jié)果就不會出現(xiàn)問題 System.out.println(s3); System.out.println(s4); System.out.println(s5); } }
四.變量、常量
1.變量
- 變量是什么:就是可以變化的量
- java是一種強類型語言,每個變量都必須聲明其類型
- Java變量是程序中最基本的存儲單元,其3要素包括:變量名、類型變量和、作用域javatype varName = value //數(shù)據(jù)類型 變量名 = 值;可以使用逗號隔開來聲明多個同類型的變量!
- 注意事項:每個變量都有類型,類型可以是基本數(shù)據(jù)類型,也可以是引用類型(String 是引用類型)變量名必須是合法的標(biāo)識符變量聲明是一條完整的語句,因此每一個聲明都必須以分號(;)結(jié)束
2.變量作用域
- 類變量
- 實例變量
- 局部變量javapublic class Demo13 { //類變量 static int s1 = 10;//類變量必須要以static修飾 //實例變量 int s2 = 123;//沒有static修飾為實例變量 //main方法 public static void main(String[] args) { //局部變量 int s3 = 4546;//定義在方法里的變量,局部變量 } }
- 詳解變量
java
public class Demo14 {
//類變量
static int s3 = 464;
static {
//代碼塊,定義屬性,在類加載的時候就加載了
}
//實例變量:從屬于對象(當(dāng)前這個類)
//如果不自行初始化,有默認(rèn)值
//基本數(shù)據(jù)類型:整數(shù)默認(rèn)值為:0,浮點數(shù)為:0.0,字符為:U0000(不顯示),boolean為:false
//除了基本數(shù)據(jù)類型,其余的默認(rèn)值為null
int age;
String name;
char address;
double cat;
boolean pet;
//main方法
public static void main(String[] args) {
//局部變量:在當(dāng)前方法有效,作用域為當(dāng)前main方法
//必須聲明和初始值
int s1 = 11;
System.out.println(s1);
//實例變量的調(diào)用
Demo14 s2 = new Demo14();
System.out.println(s2.age);
System.out.println(s2.name);
System.out.println(s2.cat);
System.out.println(s2.address);
System.out.println(s2.pet);
//類變量
System.out.println(s3);//可以直接調(diào)用
}
//add方法
public void add(){
}
}
結(jié)果為:
11
0
null
0.0
//char的默認(rèn)值
false
3.常量
- 常量(constant):初始化(initialize)后不能在改變值!!不會改動的值。
- 所謂的常量可以理解為一種特殊的變量,它的值被設(shè)定后,在程序運行過程中不允許被修改
- 格式:final 常量名 = 值;final double PI = 3.1415926,變量名默認(rèn)大寫
- 常量名一般使用1大寫字符??!
- 修飾符,不存在先后順序
java
public class Demo15 {
static public int S = 14;
public static void main(String[] args) {
System.out.println(S);
}
}
輸出結(jié)果為:
14
4.變量的命名規(guī)范
- 所有的變量、方法、類名:見名知意
- 類成員變量:首字母小寫和駝峰原則:timeLate
- 局部變量:首字母小寫和駝峰原則
- 常量:大寫字母和下劃線:MAX_VALUE
- 類名:首字母大寫和駝峰原則:Demo,Hello
- 方法名:首字母小寫和駝峰原則:add()、run()
五.運算符
- 運算符
- cast:轉(zhuǎn)換
- 自增、自減,一元運算符++,--
java
public class Demo1 {
public static void main(String[] args) {
//自增自減,++ --
int s1 = 2;
int s2 = s1++;//先賦值再加
int s3 = ++s1;//先加后賦值
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
}
}
結(jié)果為:
4
2
4
- 邏輯運算
java
public class Demo2 {
public static void main(String[] args) {
//邏輯運算
//短路運算
int s1 = 6;
boolean s2 = (s1<5)&&(s1++<5);//前面為false,后面的s1++就不會執(zhí)行?。? System.out.println(s2);
System.out.println(s1);
}
}
結(jié)果為:
false
6
- 位運算
java
public class Demo3 {
public static void main(String[] args) {
//位運算 0 1
/*
A =0011 1100
B =0000 1101
A&B:0000 1100 兩者都為1,才為1
A|B:0011 1101 兩者只要有一個為1,就為1
A^B(異或);0011 0001 兩個數(shù)字一樣為0,不同為1
~B:1111 0010 取反
2*8 = 16 2*2*2*2
<< 左移
>> 右移
0000 0001 1
0001 0000 16
*/
System.out.println(2<<3);//上面的例子
System.out.println(256>>2);
System.out.println(256>>>2);//與>>結(jié)果一樣
}
}
結(jié)果為:
16
64
64
- 三元運算符
java
public class Demo4 {
public static void main(String[] args) {
//三元運算符
//x(語句) ? y : s
//如果x==true,則返回y,否則結(jié)果為s
int s1 = 1;
int s2 = 1<2 ? 10 : 5;
System.out.println(s2);
}
}
結(jié)果為:
10
- 優(yōu)先級:()優(yōu)先級高,建議多使用?。?!
六.包機制、javaDoc
1.包
- 為了更好地組織類,Java提供了包機制,用于區(qū)別類名的命名空間
- 包語句的格式為:package pkg1;
java
package java.lang
- 一般利用公司域名倒置作為包名;www.baidu.com com.baidu.www
- 為了能夠使用某一個包的成員,我們需要在Java程序里面導(dǎo)入該包,使用“import”語句即可完成此功能!
- import package
java
import base.Demo14;
import base.* //導(dǎo)入全部 *表示通配符
- 單詞:refactor 重構(gòu)
2.JavaDoc
- JavaDoc命令是用來聲稱自己的API文檔的
- 可以加在類上,也可以加在方法上(自動生成一些東西)
java
package operator;
/**
* @author zhang
* @version 1.0
*/
public class Demo4 {
String name;
/**
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception{
//三元運算符
//x(語句) ? y : s
//如果x==true,則返回y,否則結(jié)果為s
int s1 = 1;
int s2 = 1<2 ? 10 : 5;
System.out.println(s2);
}
}
- 參數(shù)信息@author 作者名@version 版本號@since 指明最早使用的JDK版本@param 參數(shù)名@return 返回值情況@throws 異常拋出情況
- 生成JavaDoc文檔javajavadoc -encoding UTF-8 -charset UTF-8 Demo4.java生成文檔
- IDEA生成幫助文檔
- javazh_CN //生成中文文檔 -encoding UTF-8 -charset UTF-8 //設(shè)置編碼集
生成JavaDoc幫助文檔!