java基礎(chǔ)筆記
《java基礎(chǔ)筆記》由會(huì)員分享,可在線閱讀,更多相關(guān)《java基礎(chǔ)筆記(116頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
Java day01 ============================================================================================= Java ------------ sun公司 1995 幾個(gè)特點(diǎn):簡(jiǎn)單,安全,跨平臺(tái),面向?qū)ο?,分布,健壯,解析,高性能,多線程,動(dòng)態(tài)性,體系結(jié)構(gòu)中立 安全:允許用戶使用指針,不允許操作指針 跨平臺(tái): C++ : 源碼 ----(編譯)---->目標(biāo)碼 -----(連接)---->可執(zhí)行文件 目標(biāo)碼:二進(jìn)制機(jī)器碼 c++中的源碼是跨平臺(tái)的。c++中的指針其實(shí)是內(nèi)存中的編號(hào)(地址) 一個(gè)字節(jié) = 連續(xù)的8位二進(jìn)制位。 1G = 1024*1024*1024 JAVA:源碼 ----(編譯)---->字節(jié)碼 JAVA是字節(jié)碼跨平臺(tái)。 搭建Java開發(fā)環(huán)境: JDK/JRE/JVM 什么是JDK:JAVA開發(fā)工具包(做JAVA開發(fā)是必須下載JDK) 什么是JRE:JAVA的運(yùn)行環(huán)境(若只運(yùn)行JAVA文件只要下JRE就可以了) 什么是JVM;JAVA虛擬機(jī) JVM(java虛擬機(jī))功能:用來(lái)屏蔽不同系統(tǒng)的差異,為上層的字節(jié)碼提供統(tǒng)一的運(yùn)行環(huán)境。 JDK下的bin目錄:可執(zhí)行文件(這些都是開發(fā)過(guò)程中所要用的命令。如javac ,java) JDK下的JRE目錄:BIN目錄,LIB目錄。這里的BIN目錄中放的是運(yùn)行中用到的命令, LIB目錄中放的都是JAR文件,JAR文件中放的都是一寫編譯好的字節(jié)碼。 打成JAR文件的目的:方便傳輸。 LIB目錄下的rt.jar,改文件下放的是JAVA開發(fā)的類庫(kù) JDK下的SRC.ZIP包:放的是rt.jar包中的源碼,而rt.jar中放的是對(duì)應(yīng)的字節(jié)碼。 ---------------------------------------------------------------------- 設(shè)置環(huán)境變量: JAVA_HOME:代表JDK安裝路徑 =/opt/jdk1.6.0 d:/a/b/jdk1.6 CLASSPATH:系統(tǒng)搜索類的路徑 =. (指的是當(dāng)前目錄) PATH:命令的搜索路徑 =/opt/jdk1.6.0/bin 或 =$PATH:/opt/jdk1.6.0/bin 或 =$PATH:$JAVA_HOME/bi $PATH: 在原先的PATH基礎(chǔ)上加上其它路徑\ -------------------------------------------------------------------------- 第一個(gè)JAVA代碼 第一步: vi MyFirstJava.java 第二步: public class MyFirstJava{ ----------------- 定義一個(gè)類 public static void main(String[] args){ ------ 主方法格式固定 String name="tangliang"; ---- 定義一個(gè)變量為字符串,字符串值用雙引號(hào)來(lái)引起 int age=30; ------定義一個(gè)整數(shù)類型值為30 System.out.println("my name is:"+name); --- 輸出語(yǔ)句()里是要輸出的內(nèi)容 System.out.println("my age is:"+age); ---- JAVA中加號(hào)也可以做字符串的鏈接 } } 第三步: javac MyFirstJava.java ----- 編譯源代碼文件(跟源文件名) 第四步: java MyFirstJava ----- 執(zhí)行字節(jié)碼文件(跟的是類名) 通配符號(hào)編譯:javac my*.java ---------- 編譯以my字母開頭的所有java文件 帶包編譯:javac -d . PackageTest.java 帶包執(zhí)行:java sd0807.day01.PackageTest Public被稱作為訪問修飾符 ---- 作用是:控制程序的其他部分對(duì)該部分的訪問級(jí)別 Class表面JAVA程序中的全部?jī)?nèi)容是包含在類中的。 注意點(diǎn): 1. 一個(gè)JAVA源文件只能定義一個(gè)public類 2. 而且PUBLIC修飾的類名必須同文件名一致(大小寫也要一直) 3. 可以定義其他非public類. 4. 字節(jié)碼文件與類一一對(duì)應(yīng),而不是同你的源文件一一對(duì)應(yīng). 5. 可以運(yùn)行的JAVA方法的文件,一定要包含一個(gè)主方法,而且主方法簽名是固定的 6. 包含主方法的類叫 主類,java命令后跟的是主類的名字 7. main方法是程序的入口 包的定義(目的是確保類名的唯一性) 包用來(lái)放所寫文件的目錄. 怎么來(lái)聲明一個(gè)包: package SD0807.day01; --- 包的定義(可以是0或1行,若聲明則必須在java文件第一行) ++++++++++++++++++++++++++++++++++++++++++++++++ package SD0807.day01; public class PackgeTest{ public static void main(String[] args){ System.out.println("Package Test!"); } } ++++++++++++++++++++++++++++++++++++++++++++++++ 帶包編譯:javac -d . PackageTest.java 帶包執(zhí)行:java sd0807.day01.PackageTest 若java PackageTest 其實(shí)它將類找到了,只是它找到是帶包的類,而命令里面是不帶包的,所以會(huì)報(bào)錯(cuò)。 為什么執(zhí)行帶包的類要加路徑名???(由于JAVA命令的執(zhí)行步驟) java命令的三個(gè)步驟: 1,找到類的字節(jié)碼文件 2,加載類--從磁盤中去讀取對(duì)應(yīng)的類,到哪里去找就是從(classpath中配置的路徑) 3,找主方法執(zhí)行 若從網(wǎng)上下一寫工具包必須在classpath中配置工具包所在的位置,這樣我們就可以使用該工具包 想使用中間件,這樣classpath必須指向?qū)?yīng)的xxx.jar。 而在JDK中的rt.jar我們沒有配置上, 卻能用到里面對(duì)應(yīng)的類,因?yàn)樗詣?dòng)會(huì)去找JRE/lib/rt.jar找。 rt.jar // 放在 jdk1.6.0/jre/lib/rt.jar使用api 提供的類,java虛擬機(jī)是怎么找到的? 就在rt.jar ;里, 即使不設(shè)到 CLASSPATH 下虛擬機(jī)也能運(yùn)行; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 例子: 第一步:(寫類) ToolA類: package com.tarena; public class ToolA{ public static void main(String[] args){ System.out.println("ToolA"); } } Test類: package com.tarena.day01; public class Test{ public static void main(String[] args){ ToolA t = new ToolA(); System.out.println("test"); } } 第二步:(編譯) javac -d . ToolA.java ----- 可以編譯(生成一個(gè)文件夾為com) javac -d . Test.java -----直接編譯Test.java會(huì)出錯(cuò),因?yàn)橛玫搅薚oolA類 第三步:(把類ToolA打包) jar -cvf abc.jar ./com ---------- ToolA類在包c(diǎn)om.tarena 下 將產(chǎn)生的abc.jar包放到任意的目錄下,這里放到aa目錄。 第四步:配置ToolA類的 classpath=d:\aa\abc.jar 第五步:(編譯Test類) javac -d . Test.java ----- 可以編譯 第六步:(執(zhí)行) java com.tarena.day01.Test 也可以執(zhí)行ToolA類 java com.tarena.ToolA +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 找對(duì)應(yīng)類的順序: 1,在當(dāng)前包下找(所以注意不要在自己的包下創(chuàng)建和JDK中同名的類,這樣在調(diào)用JDK 中同名的類回出錯(cuò)) 2,在rt.jar中找 3,在 classpath中指定的路徑下找 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 如果自己在本包中定義了一個(gè)String類這樣下面代碼會(huì)出錯(cuò): public class Ab{ public static void main(String[] args){ System.out.println("aaaaa"); } } ---------出現(xiàn)的錯(cuò)誤是說(shuō)主方法沒找到。 因?yàn)閙ain參數(shù)中的String類不是JDK中的String類所以上面的main方法不是主方法了,只能是 自己所定義的一個(gè)普通的類。所以該類在編譯的時(shí)候不報(bào)錯(cuò),在執(zhí)行的時(shí)候就會(huì)出錯(cuò)。 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ java.lang包下的類,可以不需給出包明,其它的都要給出包名,由于java.long包下的類很常用。 --------------------------------------------------------------------------------------- 類的導(dǎo)入 import: 可以多行。作用導(dǎo)入所要用到的類。 java.lang包下的類,可以不需要導(dǎo)入,其它的包中的類都必須導(dǎo)入。 怎么導(dǎo)入: import java.util.scanner; ------ 導(dǎo)入scanner類 import java.util.*; ---------- 導(dǎo)入該包下所有的類 package xxxxx;(0或1行) import xxxxxxx; (0或多行); class xxxxx{} (1個(gè)或多個(gè)但只有一個(gè)public class) 靜態(tài)導(dǎo)入: 不僅能導(dǎo)入類,還可以導(dǎo)入靜態(tài)域。 兩個(gè)實(shí)際用: 1, 對(duì)算術(shù)函數(shù)的導(dǎo)入 2, 笨拙的常量 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 常用命令: Javac ------ 編譯命令 Java ------ 運(yùn)行命令 Javadoc ----- 生成程序文檔,在java 源文件中提取文檔注釋, 生成程序文檔. -------------------------------- 文檔注釋 注釋: // 單行注釋 (按住 ctrl+/ )就可以注釋選中的程序) /* */ 多行注釋 /** */ 特殊的多行注釋,定義在類之前,類的屬性或方法之前, 叫文檔注釋; javadoc MyFirstJava.java –d .\docs //將生成的html文件放到當(dāng)前目錄下的docs子目錄下; 作用:生成JAVA文檔.從你的程序代碼中提取注釋 /** */ 后跟的是自由格式文本 在自由格式文本中可以使用HTML修飾符:
一定不要使用 ,
,因?yàn)樗麄兣c文檔格式發(fā)生沖突。
類的注釋:
多行注釋的時(shí)候很多程序員習(xí)慣每行以星號(hào)開頭,不建議這樣做。
方法的注釋:
@param ---- 參數(shù),可以占據(jù)多行,可以用HTML標(biāo)記
@return ---- 返回
@throws ---- 可能拋出的異常
域注釋: 只需要對(duì)公有域(通常指的是靜態(tài)常量)建立文檔
/**
The “hearts”card sut
*/
Public static final int HEARTS=1;
通用注釋
@author name ---- 作者
@version text ---- 版本
@since text ----- 始于條目
@deprecatecd text ----------- 對(duì)類,方法,變量添加一個(gè)不再使用的注釋
如:@deprecated UsesetVisible(true)
instead
@see reference
@see The Core ava home page
Java day02
--------------------------------------打包
jar 生成/修改 java 歸檔文件 (.jar) , 跟.zip 一樣;
jar –cvf abc.jar(目標(biāo)文件) ./abc (把哪一個(gè)目錄打包成jar文件)
-c creat 創(chuàng)建新的jar文件
-v visable 顯示出來(lái)
-f filename 指定文件名
-x 展開存檔中的命名的(或所有的〕文件
jar cvf abc.jar ./abc // 多了一個(gè)清單文件;manifest.info
jar –xvf abc.jar // 展開jar文件的內(nèi)容;
刪除com/ 目錄結(jié)構(gòu) 留下一個(gè)abc.jar ; 將環(huán)境變量的CLASSPATH 追加一個(gè) \sd0705\corejava\abc.jar
就是將壓縮文件展開后在根目錄下找 .class 文件;
rt.jar // runtime 放在 jdk/jre/lib/rt.jar CLASSPATH
使用api 提供的類,java虛擬機(jī)是怎么找到的?就在rt.jar ;里,
即使不設(shè)到 CLASSPATH 下虛擬機(jī)也能運(yùn)行;只要在這個(gè)目錄下就能找到;
-------------------------------------------------
常用的包;
java.lang java的語(yǔ)言包
java.awt/java.swing/java.awt.ent 圖形開發(fā)是要用到的包
java.applet 開發(fā)小程序用的包
什么叫application(應(yīng)用程序):就是包含主方法的程序。
另外的的程序是沒包含主方法,必須放到容器里(如嵌入到瀏覽器里)去執(zhí)行。
java.io 輸入輸出時(shí)要用到。
java.net java中網(wǎng)絡(luò)開發(fā)。
java.util java工具包。
------------------------------ 標(biāo)識(shí)符
命名規(guī)則:
(1) 由字母、數(shù)字、下劃線、$組成,不能以數(shù)字開頭;
可以用中文;如: string 中文="abc";
只能以字符、“_”或“$”開頭; 字符可以是漢字;
(2) 大小寫敏感;
(3) 不得使用java中的關(guān)鍵字和保留字;
(4) Java語(yǔ)句以分號(hào)分隔,Java代碼塊包含在大括號(hào)內(nèi),忽略空格。標(biāo)識(shí)符
(5) 無(wú)長(zhǎng)度限制。
------------------------------------ 命名習(xí)慣
(1) 標(biāo)識(shí)符要符合語(yǔ)義信息
(2) 包名 所有字母小寫
(3) 類名 每個(gè)單詞首字母大寫,其它小寫 //TarenaStudent
(4) 變量和方法: 第一個(gè)單詞小寫,從第二個(gè)單詞開始首字母大寫 //tarenaStudent
(5) 常量: 所有字母大寫,每個(gè)單詞之間用" _ "連接 //int MONEY_VALUE = 50;
(6) 用以命名類、方法和變量、以及包遵守JAVA的命名規(guī)范,類以每個(gè)單詞都以大寫字母開頭。
----------------------------------關(guān)鍵字
Abstract continue for new switch assert default goto package synchronized boolean do if private this break double implements protected throw by e else import public throws case enmum instanceof return transient catch extends int short try char final interface static 等等
----------------------------------- 八種數(shù)據(jù)類型
1,布爾型: boolean 只有false/true兩個(gè)值(不存在如C++的與整數(shù)相互轉(zhuǎn)換)
2,字符類型: char 2字節(jié) 16位 (0~65535) 默認(rèn)就是無(wú)符號(hào)的16位整型;只能表示整數(shù);
char類型也可以用通用轉(zhuǎn)義字符,但是不能用ASCII碼。可以用“\u0000”這種格式,
因?yàn)閏har型中使用的是unicode編碼方式。\u0060 四位都是十六進(jìn)制的;
賦值方式:
char zhChar=中; char enChar=a;
char ucChar=\u0060; --- Unicode也是一種字符編碼方法(其為16進(jìn)制)
int a =0 char b=0
int a =0 char b=\u0000 相等
char a =0 char b=\u0000
char a =8 char b =5+3
char a =8 char b =5+3 相等
int a =8 char b = 5+3
int a=8 char b=5+3
字符0與整數(shù)0是不相等的,第五組相等。
\u0061 --------------表示為a
\u0041 --------------表示A
字符0的編碼為:\u0048
3,字符串類型:
定義:String name="tangliang"; -------- 注意:賦值要有雙引號(hào)
4,整數(shù)類型:
byte1字節(jié)8位 -128到127-2^7到2^7-1java中都是有符號(hào)的;沒有有符號(hào)和無(wú)符號(hào)的差別;
內(nèi)存中的存儲(chǔ):正整數(shù): 原碼
負(fù)整數(shù): 補(bǔ)碼= 原碼取反+1;
25 原碼: 00011001 補(bǔ)碼:00011001
-25 先些25的原碼:00011001 -->取反:11100110 --->補(bǔ)碼:11100111
內(nèi)存中8位二進(jìn)制第八位:0表示正,1表示負(fù)
10000000表示的值為-128,過(guò)程:
10000000--(減1)-->01111111--取反-->10000000(2的7次方=128開始第一位為1
則表示負(fù)數(shù)即-128)
short 2字節(jié) 16位 -2^15到2^15-1 16位的短整型 -32768~+32767
(與char比較,char沒有負(fù)則其范圍0~65535,沒有符號(hào)位,存儲(chǔ)還是同樣的)
int 4字節(jié) 32位 -2^31到2^31-1 32位的整型(大概-2G到2G)
long 8字節(jié) 64位 -2^63到2^63-1 64位的長(zhǎng)整型;long a=12343545L(l);
//一定要跟上L,大小寫都可以,最好用大寫;
以0x開頭就是十六進(jìn)制; ------------- 二進(jìn)制與十六進(jìn)制的轉(zhuǎn)換4對(duì)1
以0開頭的是八進(jìn)制; ------------- 二進(jìn)制與八進(jìn)制的轉(zhuǎn)換
byte bb=(byte)0x771; // 由于范圍超出了直接賦值是不可以的但可以強(qiáng)制轉(zhuǎn)換,
強(qiáng)轉(zhuǎn)的規(guī)則:自動(dòng)截?cái)喔呶槐A糇畹偷?位;
5,浮點(diǎn)類型 (默認(rèn)是double,而且是近似存儲(chǔ))
float 4字節(jié)32位 單精度實(shí)數(shù); 2^24 X 10^127 ; 前三個(gè)字節(jié)存數(shù)據(jù),后一個(gè)字節(jié)存位權(quán);
double 8字節(jié)64位 雙精度實(shí)數(shù);
java中小數(shù)默認(rèn)是double型:
float f = 111.32; ----- 會(huì)出錯(cuò),因?yàn)槟J(rèn)是double型
可以寫的方式;
float f =(float)111.32;
float f = 111.32f; ----- 注意十六進(jìn)制中f是個(gè)值,不是float類型。
float fa =123.4f; ---- 后面要加上大寫或小寫的f
float fa =123.4E300F;
float fa =(float)123.4E300; ------ 強(qiáng)轉(zhuǎn)后賦值給float變量
double d = 333.5
double dd = 886.45d
double dddd= 768.987D
注:整型值存放,正數(shù)存放原碼(二進(jìn)制碼),負(fù)數(shù)則存放補(bǔ)碼(原碼按位取反末位加一)
注:浮點(diǎn)型是近似存儲(chǔ)的,實(shí)型值在存儲(chǔ)時(shí)會(huì)損失精度,所以不要直接比較兩個(gè)實(shí)型值。
系統(tǒng)默認(rèn)的實(shí)型都是double型,
要使用時(shí)要在數(shù)據(jù)后加個(gè)f,或者強(qiáng)行轉(zhuǎn)換。強(qiáng)轉(zhuǎn)(占字節(jié)數(shù)大的類型轉(zhuǎn)到占字節(jié)數(shù)
小的類型)時(shí)會(huì)放棄高位值只取低位值。
類型轉(zhuǎn)換
整數(shù)是精確存儲(chǔ)
浮點(diǎn)類型是近似存儲(chǔ)
6.枚舉類型
JDK5以后可以自定義枚舉類型:
enum Size{SMALL,MEDIUM,LARGE,EXTRA_LARGE};
聲明這樣一種類型的變量:
Size s =Size,MEDIUM;
7.大數(shù)據(jù)類型
java.math.BigInteger
java.math.BigDecimal
這兩個(gè)類可以處理任意長(zhǎng)度的數(shù)值:
1, BigInteger 實(shí)現(xiàn)任意精度的整數(shù)運(yùn)算
2, BigDecimal 實(shí)現(xiàn)任意精度的浮點(diǎn)數(shù)運(yùn)算
可以用靜態(tài)方法valueof()將普通的數(shù)值轉(zhuǎn)換成大數(shù)值,但不可以用算術(shù)運(yùn)算符來(lái)做處理
+++++++++++++++++++++++++++++++++++++++++++++
public class test {
public static void main(String[] args){
double a=2.0,b=1.1,c=0.9;
if(a-b==c){
System.out.println("ok!");
}else{
System.out.println(" 不 ok! ");
}
}
}
答案是:不"ok";2.0-1.1=0.8999999…. // 是近似存儲(chǔ)不是精確存儲(chǔ)
取絕對(duì)值小于一個(gè)很小的數(shù): Math.abs((a-b)-c)<1e-6
++++++++++++++++++++++++++++++++++++++++++
-------------------- 自動(dòng)類型轉(zhuǎn)換: 編譯器認(rèn)可的;
A a=b; 如果a的范圍能完全包含b即可做自動(dòng)類型轉(zhuǎn)換(兩種類型兼容);
byte -> short -> int -> long -> float -> double
char ----- int
int ----- double(數(shù)據(jù)不會(huì)丟失)
int ----- float (數(shù)據(jù)會(huì)丟失)
long ----- double(數(shù)據(jù)會(huì)丟失)
long ----- float (數(shù)據(jù)會(huì)丟失)
其中: char型和int型之間可以相互轉(zhuǎn)換。char和short或byte不能相互轉(zhuǎn)換。
char不能表示負(fù)數(shù); boolean類型是獨(dú)立的, 不能和其它類型相互轉(zhuǎn)換;
反之則需要強(qiáng)行轉(zhuǎn)換;
但是自動(dòng)類型轉(zhuǎn)換也會(huì)造成數(shù)據(jù)丟失:
如 int -> float
long-> float
long -> double
只是讓位數(shù)上相等, 但是會(huì)丟掉低位的數(shù)據(jù);
比如:把浮點(diǎn)值賦給整型,就會(huì)發(fā)生截?cái)?truncation)
注意: 隱式類型轉(zhuǎn)換;(a或b有一個(gè)為int)
a 運(yùn)算符 b ,如果a,b中有任意一個(gè)是double型,前面運(yùn)算的結(jié)果就是double型,
如果a,b中有任意一個(gè)是float型,前面運(yùn)算的結(jié)果就是float型,
如果a,b中有任意一個(gè)是long型,前面運(yùn)算的結(jié)果就是long型,
如果a,b中沒有double、float、long型,那么其結(jié)果就為int型。
java 數(shù)據(jù)類型:基本類型: 8種
引用類型: 類,接口,枚舉,標(biāo)注
空類型: void
int a=5; 系統(tǒng)會(huì)分配連續(xù)4個(gè)字節(jié)的空間:
0000 0000 | 0000 0000 | 0000 0000 | 0000 0101
String a=”hello”;// a 是一個(gè)引用 (地址), 不允許對(duì)其進(jìn)行修改;
a -- 四個(gè)字節(jié);存的是地址值[ ];指向首地址--“hello”四個(gè)連續(xù)的存儲(chǔ)空間;
-------------------------------------------------------------------------------------
寫一個(gè)person類
在其它類中寫了
person p = new person();
p --- 在內(nèi)存中分到4個(gè)字節(jié)的空間,存放的是地址值。該地址就是后面new person() 產(chǎn)生
的空間。
這樣保證了所有的地址都指向合法的位置;
通過(guò)p.xxx(); -----去訪問對(duì)象的方法
p.xxxx; ------ 去訪問對(duì)象的屬性
對(duì)象: 充滿氫氣的氫氣球,引用是繩子,通過(guò)這個(gè)繩子找到這個(gè)氫氣球;
一個(gè)繩子只能連著一個(gè)氣球;一個(gè)氣球可以由多根繩子連著;
如果沒有引用,那么我們就訪問不了,雖然它也存在,叫做垃圾。
Java 虛擬機(jī)的垃圾回收的機(jī)制;String s=“hello”; s=null;
System.gc(); // 可以建議虛擬機(jī)來(lái)回收這些垃圾;來(lái)提高效率。
若有引用p,但沒有指向具體的對(duì)象。若去訪問p就會(huì)出現(xiàn)nullpointerException(空指針異常)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
編譯時(shí):錯(cuò)誤 :error(s)
警告: Warning(s)
運(yùn)行時(shí):異常:
錯(cuò)誤:
Person p = null; ------- 定義了引用但沒有對(duì)象
p.name; -------- 訪問Person類的name屬性;
p.age; -------- 訪問Person類的age屬性;
這個(gè)異常,沒有對(duì)象,不可能訪問對(duì)象的屬性,這在編譯的時(shí)候不會(huì)出錯(cuò),只有在運(yùn)行的時(shí)候
才會(huì)出現(xiàn)的異常。
注:
一個(gè)對(duì)象有多個(gè)引用指向它時(shí),一個(gè)引用來(lái)改變它的值時(shí),其它也改。
一個(gè)引用只能指向一個(gè)對(duì)象;
------------------------------------運(yùn)算符:
表達(dá)式: = *= /= %= += -= <<= >>= >>>= &= ^= |=
a+=3 <=> a=a+3;
a*=4 <=> a=a*4;
比較符: 〉 >= < <= (數(shù)字類型才可以用比較符)數(shù)據(jù)類型就是8種基本類型除了布爾類型
在java中不可以用比較符號(hào)去比較引用
等值比較符: == != (==比較的是內(nèi)存的地址)(所有有效數(shù)據(jù)類型可用)
數(shù)據(jù)類型可以用,但浮點(diǎn)型數(shù)據(jù)最好不要比,語(yǔ)法上是允許的
判斷兩個(gè)引用值是否相等比較的是地址是否相同;即是不是指向同一個(gè)對(duì)象;
表達(dá)式:+ (加) -(減) *(乘) /(除) %(求余)
除號(hào)/當(dāng)兩邊都為整數(shù)的時(shí)候得到是整數(shù)。 10/3=3;
/ 除法兩邊是整數(shù)時(shí)是整數(shù)除法,只要有一邊不時(shí)整數(shù)就是浮點(diǎn)除法。整數(shù)被0除會(huì)出異常。
+ 也可以作為字符串的連接(只要+一邊是字符串類型,另一邊為任意類型最后得到
的是字符串類型)
移位運(yùn)算:
>> ----右移 (用符號(hào)位填充左側(cè))
<< ----左移(從左邊移出的不管,右邊移入的為0)
>>> ----無(wú)符號(hào)右移(用0填充前面的位置)
位運(yùn)算: << >> >>> ;
左移相當(dāng)于乘2的n次方;
右移相當(dāng)于除于2的n次方;空位補(bǔ)符號(hào)位;
移位若大于32,則相當(dāng)于移動(dòng)了對(duì)32求余的位數(shù),如:45%32
若被操作的數(shù)是long類型的則移位值要對(duì)64求余
例如,-14 (即二進(jìn)制的 11110010)右移兩位等于 -4
(即二進(jìn)制的 11111100)---- 注意:11110010,11111100 都是補(bǔ)碼
>>>= 無(wú)符號(hào)右移動(dòng),移出的不管,移進(jìn)的都補(bǔ)0。
&(與): 按位與經(jīng)常用來(lái)把指定位置0,其它不變;輔助數(shù): 1111 10001;
|(或): 把原來(lái)指定位置1, 其它位不變; 輔助數(shù): 0000 01110;
^(異或):異或運(yùn)算, 經(jīng)常用來(lái)把原數(shù)的指定位求反其它位不變;輔助數(shù): 000001110;
~ (取反):按位取反。
對(duì)于& | 位與和位或,當(dāng)兩邊是的數(shù)據(jù)類型是byte時(shí)是位運(yùn)算,
若為boolean型則為邏輯運(yùn)算。
&& || 短路運(yùn)算符, && 是第一個(gè)為假則不計(jì)算后者, || 是第一個(gè)為真不計(jì)算后者
++ -- a++ 與++a的區(qū)別。一條語(yǔ)句為 a++ 用++a來(lái)代替是可以的(只能使用于變量,
不可為常量或數(shù)字)
若:b=a++ 相當(dāng)于b=a;a=a+1; 而b=++a 相當(dāng)于a=a+1;b=a;
三目運(yùn)算符: ?
System.out.println(4>3?9:9.99);
-----------------------------補(bǔ)充-----------------------------------------
運(yùn)算符優(yōu)先級(jí)別
運(yùn)算符 結(jié)合性
( ) [ ] 從左向右
! ~ ++ -- new 強(qiáng)制轉(zhuǎn)換 從右向左
* / % 從左向右
<< >> >>> 從左向右
< <= > >= instanceof 從左向右
= = != 從左向右
& 從左向右
^ 從左向右
| 從左向右
&& 從左向右
|| 從左向右
? : 從右向左
= += -= *= /= %= &= |= ^= <<= >>= >>>= 從右向左
Java day03
--------------------------------------塊的概念:
塊:指的是有花括號(hào)括起來(lái)的若干條簡(jiǎn)單的語(yǔ)句
一個(gè)塊里面可以嵌套另一個(gè)塊
不能在嵌套的兩個(gè)塊中聲明同名的變量。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
public static void main(String[] args) {
int b=0;
{
int b=0;
}
} -------------- 以上代碼編譯時(shí)通不過(guò)的
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
------------------------------------- 控制語(yǔ)句
------------------if – else
格式:
If(條件){
………….
}else{
………….
}
If()條件后腰執(zhí)行多條語(yǔ)句就必須用花括號(hào)括起,若只有一條可以不用花括號(hào)。
----------------------------------------------
if - else ; else 匹配的是向上最近的if ;
求一個(gè)數(shù)是不是素?cái)?shù): 循環(huán), 從2到n/2 或 sqrt(a) ;
int a=13;
//boolean flag=false;
for(int i=2;i<=Math.sqrt(a);i++){
if(a%i==0){
System.out.println("a 不是素?cái)?shù)");
break;
//flag=true;
}
}
if(i>Math.sqrt(a))
//if(flag==true)
System.out.println("a 是素?cái)?shù)");
//if(flag==true)
---------------------------- switch
格式:
Switch(條件){
case 條件值 :
……………….
break;
case 條件值 :
……………….
break;
default :
…………………..
break;
}
---------------------------------------------
switch中的變量類型只能是byte、 short、int、char, 枚舉五種類型;
只有遇到break才會(huì)退出, 除非到程序末尾;
default放在最后和前面有區(qū)別, 如果不寫break的話,放在最后會(huì)自動(dòng)退出;
但是放到開頭的話,會(huì)繼續(xù)執(zhí)行直到遇到break為止;
循環(huán)的設(shè)計(jì):
---------------------For循環(huán)
for(); outer: in er: 標(biāo)簽只能和break/continue 結(jié)合使用;
+++++++++++++++++++++++++++++++++++++++++++++++
public static void main(String[] args) {
int i=0;
aa:
while(true){
i++;
System.out.println(i);
if(i>10){
break aa;}}}
++++++++++++++++++++++++++++++++++++++++
for(int i=0;i<10;i++){
}
注意:for循環(huán)式支持迭代的一種通用結(jié)構(gòu),每次迭代后更新計(jì)數(shù)器
第一部分是初始化計(jì)數(shù)器
第二部分是檢測(cè)計(jì)數(shù)器
第三部分是指示如何更新計(jì)數(shù)器
------------------------ while
格式:
While(條件){
…………………….
}
注意:如果條件為false,循環(huán)一次也不執(zhí)行。
--------------------- do while
格式:
Do{
}while(條件){
}
--------------------------- For each
Int [] a = new int[10];
For(int e : a){
System.out.println(e);
}
Double[][] a = new double[10][10];
For(double[] el:a){
For(double els: el){
System.out.println(els);
}
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++
輸入輸出
標(biāo)準(zhǔn)的輸出:System.out.println();
標(biāo)準(zhǔn)的輸入:System.in
1, Scanner in = new Scanner(System.in);
2, String name = in.nextLine(); ------ nextLine()是讀一行
3, String name = in.next() ------- next() 讀一個(gè)單詞
4 int age = in.nextInt(); ------- nextInt()讀一個(gè)整數(shù)
5 Double m = in.nextDouble(); ------- nextDouble()讀一個(gè)雙精度浮點(diǎn)數(shù)
hasNextInt()
has NextDouble() ----- 檢測(cè)是否還有單詞
格式化輸出:(注: 看JAVA2核心技術(shù)卷1 --- 69頁(yè)到72頁(yè))
double x = 10000.0/3;
System.out.println(x);
System.out.printf("%8.2f",x); ---- 格式化輸出
Printf與日期類型的格式化選項(xiàng):
public static void main(String[] args) {
System.out.println(new Date());
System.out.printf("%tc",new Date());
}
+++++++++++++++++++++++++++++++++++++++
Tue Dec 29 11:29:12 CST 2009
星期二 十二月 29 11:29:12 CST 2009
=====================================================
//第一種從鍵盤讀數(shù)據(jù)的方法
/*
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str=null; //代碼固定
do{
System.out.println("Please input your user name:");
try{
str=br.readLine();
}catch(IOException e){
}
}while(str.trim().charAt(0)>=0 && str.trim().charAt(0)<=9);
System.out.println("your user name is:"+str);
*/
//第二種從鍵盤讀數(shù)據(jù)的方法
Scanner sca=new Scanner(System.in);
System.out.println("Please input your name and age:");
String name=sca.next();
int age=sca.nextInt();
System.out.println("your name is:"+name);
System.out.println("your age is :"+age);
}
================================================
java.util.Scanner
Scanner sca = new Scanner(System.in);------System.in(是輸入流)
String s1 =sca.next(); ---------- 若輸入hello haha hehe這樣只能讀到hello
String s2 = sca.nextline(); ----------- 這個(gè)就能讀到所有的值
int a = sca.nextInt();
float f = sca.nextFloat();
double d =s sca.nextDouble();
System.out ---------------------------------------是輸出流
從一個(gè)字符串中取出首字符:
String name="abcd";
Char firstChar=name.charAt(0);
---------------------------------------------------------------------
Math.pow(a,b)------- Math類中有一個(gè)pow()方法表示,求a的b次方。
break loop; ----- 跳出標(biāo)號(hào)所標(biāo)的循環(huán),若沒有跟標(biāo)號(hào),直接跳出循環(huán)
continue ----- 同樣可以跟標(biāo)號(hào)。
Java day04
求一個(gè)數(shù)是不是素?cái)?shù): 循環(huán), 從2到n/2 或 sqrt(a) ;
int a=13;
boolean flag=true;
for(int i=2;i<=Math.sqrt(a);i++){
if(a%i==0){
flag=false;
break;
}
}
if(flag){
System.out.println("a 是素?cái)?shù)");
}else{
System.out.println("a 不是素?cái)?shù)");
}
----------------------------------數(shù)組:
1)聲明數(shù)組:
數(shù)組能以下列形式聲明:(兩種方式)
類型[] array;
類型 array[];
注: JAVA中推薦用: 類型[] array;
一個(gè)數(shù)組是一個(gè)對(duì)象
聲明一個(gè)數(shù)組沒有創(chuàng)建一個(gè)對(duì)象
聲明時(shí)不用指定長(zhǎng)度
數(shù)組是引用類型; (類,接口,數(shù)組)
2)創(chuàng)建數(shù)組:
創(chuàng)建基本數(shù)據(jù)類型數(shù)組:int[] i = new int[2];
創(chuàng)建引用數(shù)據(jù)類型數(shù)組:Student[] s = new Student[100];
創(chuàng)建數(shù)組的三種形式:
int[] arr1;
arr1 =new int[5];
- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
15 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- java 基礎(chǔ) 筆記
鏈接地址:http://m.appdesigncorp.com/p-10787717.html