java基礎_01

1Java基礎 1.1簡單認識java 1.1.1發展歷史 Sun公司於1995年5月推出的Java面向對象程序設計語言和Java平臺的總稱。由James Gosling和同事們共同研發,並在1995年正式推出。 Java是一門面向對象編程語言,不只吸取了C++語言的各類優勢,還摒棄了C++裏難以理解的多繼承、指針等概念,所以Java語言具備功能強大和簡單易用兩個特徵。Java語言做爲靜態面向對象編程語言的表明,極好地實現了面向對象理論。html

1.1.2Java分爲三個體系 JavaSE ( J2SE ) (Java2 Platform Standard Edition,java平臺標準版) C/S JavaEE ( J2EE ) (Java 2 Platform,Enterprise Edition,java平臺企業版) JavaME ( J2ME ) (Java 2 Platform Micro Edition,java平臺微型版)。 2005年6月,SUN公司公開Java SE 6。此時,Java的各類版本已經改名以取消其中的數字"2":J2EE改名爲Java EE, J2SE改名爲Java SE,J2ME改名爲Java ME。java

Java具備簡單性、面向對象、分佈式、健壯性、安全性、平臺獨立與可移植性、多線程、動態性等特色 。Java能夠編寫桌面應用程序、Web應用程序、分佈式系統和嵌入式系統應用程序等mysql

如今是Orcale的子公司 2Java環境的搭建 要開始學習 Java 編程,須要兩樣東西。 JDK + IDE。(eclipse/myeclipse/idea) 1.8的到來慢慢的趨向idea 2016.3 JDK安裝及環境變量設置 JDK的安裝 JDK官網地址:oracle官網(sun公司被甲骨文收購了,因此要去oracle官網) www.oracle.com/technetwork… 注意:下載安裝時須要注意操做系統的版本和JDK的版本之間對應的關係。 2.1.1Jdk下載以及配置 2.1.1.1打開官網sql

應該檢查你的操做系統是32位或64位的,並下載相應的JDK版本(個人是 64bit 的電腦)。apache

2.1.1.2贊成協議後,選擇對應版本下載:編程

2.1.1.3看看下載後文件,它長這樣:數組

2.1.1.43- 安裝Java(JDK)tomcat

2.1.1.5 進入 JDK 安裝目錄,例如目錄: (建議使用默認路徑)安全

D:\Program Files\Java\jdk1.8.0_65多線程

JDK安裝後,安裝程序會詢問你JRE要安裝的位置。在這裏我選擇: C:\DevPrograms\Java\jre.8.0_65\

通過一段時間後,Java 成功完成安裝。

2.1.1.6如今查看目錄,將有2個目錄,它們分別是:

2.1.2配置Java環境變量 若是您使用的是Window Vista 或 Windows7(個人是Windows7): 2.1.2.1在桌面上,右鍵單擊"計算機"圖標,而後選擇屬性。

2.1.2.2單擊 "新建" 建立一個名爲 JAVA_HOME 新的環境變量。 輸入路徑JDK目錄。 變量名稱: JAVA_HOME 變量值: D:\Program Files\Java\jdk1.8.0_65

2.1.2.3下一步修改環境變量路徑(Path)。 C:\Ruby23\bin;G:\app\Administrator\product\11.2.0\dbhome_1\bin;D:\mysql-5.6.24-win32\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\system32\wbem;%JAVA_HOME%\bin;C:\Program Files\TortoiseSVN\bin;E:\apache-tomcat-7.0.21\bin;C:\Program Files\MySQL\MySQL Server 5.5\bin;%M2_HOME%\bin

添加到路徑(Path)的前面(或後面或中間均可以): %JAVA_HOME%\bin; 若是不想配置變量直接 拷貝 C:\Java\jdk1.7.0_79\bin

到這裏已經安裝了 Java,接下來咱們來驗證一下安裝結果。 2.1.2.4打開」運行「,以下圖所示:window+R

2.1.2.5點擊」肯定「,在命令行上輸入:java 後,顯示結果以下:

有命令提示,則說明已經成功安裝了 Java,到此Java安裝的介紹完成。 2.1.3怎麼查看java的jdk版本

2.1.4Jdk配置總結:

配置JDK的環境變量 爲了讓操做系統找到JDK提供的編譯、運行命令等文件所在路徑;咱們能夠經過配置PATH環境變量來實現。 PATH環境變量是一系列系統目錄,當運行時操做系統會進入到PATH環境變量中的每個目錄查找對應的命令。 配置JAVA_HOME變量指向JDK安裝目錄,目的讓軟件如何找到JDK。eg:D:\java\jdk1.7

配置CLASSPATH變量,表示搜索路徑,能夠不用配置。 PATH指向JDK的bin目錄,由於javac,java等命令安裝在此目錄下面。 eg:%JAVA_HOME%\bin; 2.2JDK,JRE,JVM的關係 JDK -- Java Development Kit(Java開發工具包) 若是沒有安裝jdk eclipse絕對啓動不來,可是若是你用myeclipse就不須要安裝jdk,由於自帶 JRE -- Java Runtime Environment(Java運行環境) JVM -- Java Virtual Machines(Java虛擬機) JRE = Java系統類庫 + JVM; JDK = JRE + 編譯運行開發工具; 運行java程序最小環境爲JRE。

開發java程序最小環境爲JDK。

2.3編譯運行 Java程序基本結構及編譯運行 編寫的java源文件(.java) 自編譯生成(咱們的工具備自編譯功能) 字節碼文件 (.class)
程序的運行須要JVM的支持,爲字節碼文件.class提供運行環境。

「java解釋器就是把在java虛擬機上運行的目標代碼(字節碼)解釋成爲具體平臺的機器碼的程序。」即jdk或jre目錄下bin目錄中的java.exe文件,而javac.exe是編譯器。 運行java程序的過程是先用javac編譯,而後用java解釋。而一經編譯成功後,就能夠直接用java.exe隨處解釋運行了。 裸機:是指沒有配置操做系統和其餘軟件的電子計算機 2.4虛擬機(JVM) 2.4.1虛擬機演示 什麼是java虛擬機(JVM)?什麼是java的虛擬機實例?

何爲實例:實例即對象。實例被用來模擬現實世界中存在的、具體的或原型的東西。

第1、寫一個java主函數 Thread.sleep(10000000); sleep方法是程序休眠多少毫秒 在文本中編寫 public class Hello{

public static void main(String[] args){
	try{
		Thread.sleep(10000000); 
	}catch(Exception e){
		
	}
	System.out.println("Hello");
}
複製代碼

}

第2、進入cmd 找到對應的java文件手動編譯 ,

經過javac xxxx.java(Hello.java)編譯

經過java xxxx(Hello) 運行

第3、打開任務管理器,看到一個叫java.exe的程序,這個就是java的虛擬機,java.exe這個命令就是用來啓動一個java虛擬機,而main函數就是一個java應用的入口,main函數被執行時,java虛擬機就啓動了。

第4、打開開發工具Myeclipse/elicpse 編寫剛纔的代碼而後run application,再次run application 第5、再次打開任務管理器--進程 有兩個javaw.exe,爲何會有兩個?由於咱們剛纔運行了兩次run application。這裏我是要告訴你,一個java的application對應了一個java.exe/javaw.exe(java.exe和javaw.exe咱們把它當作java的虛擬機一個個實例,區別就是一個有窗口界面一個沒有)。你運行幾個application就有幾個java.exe/javaw.exe。或者更加具體的說,你運行了幾個main函數就啓動了幾個java應用,同時也啓動了幾個java的虛擬機。 2.4.2總結: 一、java源程序(.java)經過javac命令編譯源文件生成字節碼文件(.class),再經過java命令啓動JVM,JVM就會加載.class文件,最後運行.class文件。 二、java的虛擬機能夠說至關於咱們的一個java類,而java虛擬機實例,至關咱們new一個java類,不過java虛擬機不是經過new這個關鍵字而是經過java.exe或者javaw.exe來啓動一個虛擬機實例。 注意:java官方提供了不一樣平臺JVM,但遵循相同的標準,效果相同,即咱們所說的跨平臺、前提標準.class。

cd 定位文件 2.5Eclipse簡介 2.5.1Eclipse開發環境 1.3.1.Eclipse 是一個開放源代碼的、基於Java的可拓展開發平臺,是目前主流的IDE(集成開發環境)開發環境。就其自己而言,它只是一個框架和一組服務,用於經過插件組件構建開發環境。Eclipse附帶了一個標準的插件集,包括Java開發工具(JDK) 。 2.5.2Eclipse下載安裝 Eclipse官網地址:www.eclipse.org/downloads ,免費的。下載完後不須要安裝,由於自己也是Java語言製做的。但必須先安裝JDK。 下載步驟: www.eclipse.org/downloads/e…

或者

還能夠安裝MyEclipse 3Java 變量 3.1變量 3.1.1變量定義 什麼是變量 變量就是指在內存中開闢的存儲空間,用於存放運算過程當中須要用到的數據。 對於變量咱們須要注意幾個地方: 一、變量的聲明:必須用特定的語法聲明一個變量,讓運行環境爲其分配空間。 int/byte 二、變量的命名:變量最好要有個見名就知道意思的名字,並且要符合Java的規範。 三、變量的初始化:變量命名後,必需要爲其賦一個初始值這樣才能使用。int a = 0; 四、變量的訪問:能夠對變量中的數據進行存取,可是必須和其類型相同的數據操做。 3.1.2聲明及初始化 在Java語言中,全部的變量在使用前必須聲明。聲明變量的基本格式以下: type identifier [ = value][, identifier [= value] ...] ; int a = 0 ,b= 2; 格式說明:type爲Java數據類型。identifier是變量名。可使用逗號隔開來聲明多個同類型變量。 如下列出了一些變量的聲明實例。注意包含了初始化過程。 int d = 3, e=0, f = 5; // 聲明三個整數並賦予初值 double pi = 3.14159; // 聲明瞭雙精度浮點變量 pi char x = 'x';        // 聲明變量 x 的值是字符 'x'。 3.1.3Java標識符,關鍵字 什麼是標識符 Java全部的組成部分都須要名字。類名、變量名以及方法名都被稱爲標識符。 關於Java標識符,有如下幾點須要注意: 一、全部的標識符都應該以字母(A-Z或者a-z),美圓符()、或者下劃線(_)開始
二、首字符以後能夠是任何字符的組合
三、關鍵字不能用做標識符,標識符是大小寫敏感的
例如:MyFirstHello(駝峯命名法)
合法標識符舉例:age、salary、_value 非法標識符舉例:123abc、-salary

什麼是關鍵字: 關鍵字是指java語言中預先定義的表明特定含義的字符。 不能用於常量、變量、和任何標識符的名稱。如: public 、default 、 break 、 abstract 等。 3.1.4變量簡單訪問 變量只是存放數據的空間,能夠對變量賦值,更改和操做,要把變量的操做理解爲對其所存儲的數據的操做。但操做的數據類型必須匹配。 eg:

int  t = 50;
	t = t + 20;     //t = 70;
	System.out.println(t);
複製代碼

eg: int sal = 1500.50;//編譯報錯 double salary = 1500.6; int a = salary%2; //編譯報錯 3.1.5知識總結(得出基本語法) 編寫Java程序時,應注意如下幾點: 大小寫敏感:Java是大小寫敏感的,這就意味着標識符Hello與hello是不一樣的。 類名:對於全部的類來講,類名的首字母應該大寫。若是類名由若干單詞組成,那麼每一個單詞的首字母應該大寫,eg: MyFirstJavaClass 。(駝峯命名法 ) 方法名:全部的方法名都應該以小寫字母開頭。若是方法名含有若干單詞,則後面的每一個單詞首字母大寫。(駝峯命名法 ) 源文件名:源文件名必須和類名相同。保存文件的時候,應該使用類名做爲文件名保存(切記Java是大小寫敏感的),文件名的後綴爲.java。(若是文件名和類名不相同則會致使編譯報錯)。 主方法入口:全部的Java 程序由public static void main(String []args)方法開始執行。 3.2Java語言支持的變量類型 一、局部變量 二、成員變量(實例變量,引用變量) 三、類變量(靜態變量) 3.2.1Java局部變量 一、局部變量聲明在方法、構造方法或者語句塊中; 二、局部變量在方法、構造方法、或者語句塊被執行的時候建立,當它們執行完成後,變量將會被銷燬;(銷燬是自動的,不須要咱們考慮) 三、訪問修飾符不能用於局部變量;int a = 0; 四、局部變量只在聲明它的方法、構造方法或者語句塊中可見; 五、局部變量是在棧上分配的。 六、局部變量沒有默認值,因此局部變量被聲明後,必須通過初始化,纔可使用。 七、局部變量在聲明時在棧上並無分配內存,真正的內存分配是在賦初值時進行的。 在例中age是一個局部變量。定義pupAge()方法中,它的做用域就限制在這個方法中。 案例演示: /**

  • 測試局部變量
  • @author Admin

*/ public class TestLocalVariable { public void pupAge(){ int age = 0; age = age + 7; System.out.println("小明的年齡是: " + age); } public static void main(String args[]){ TestLocalVariable test = new TestLocalVariable(); test.pupAge(); } } 3.2.2實例變量 一、實例變量聲明在一個類中,在方法、構造方法和語句塊以外; 二、一個對象被實例化後,每一個實例變量的值就跟着肯定; 三、實例變量在對象建立時建立,在對象被銷燬的時銷燬; 四、實例變量的值應該至少被一個方法、構造方法或者語句塊引用,使得外部可以經過這些方式獲取實例變量信息;實例變量能夠直接經過變量名訪問。 五、實例變量能夠聲明在使用前或者使用後; 六、訪問修飾符能夠修飾實例變量; 七、實例變量對於類中的方法、構造方法或者語句塊是可見的。通常狀況下應該把實例變量設爲私有。經過使用訪問修飾符可使實例變量對子類可見 八、實例變量具備默認值。數值型變量的默認值是0,布爾型變量的默認值是false,引用類型變量的默認值是null。變量的值能夠在聲明時指定,也能夠在構造方法中指定; 案例演示:

/**

  • 測試實例變量
  • @author Admin

*/ public class TestInstanceVariable {

public String name;  // 這個成員變量對子類可見 
private double salary; // 私有變量,僅在該類可見   
//在構造器中對name賦值   
public TestInstanceVariable (String empName){ 
	name = empName; 
} 
//編寫sett方法
public void setSalary(double empSal){ //設定salary的值  
	this.salary = empSal;
}
//定義打印方法
public void printEmp(){ // 打印信息    
	System.out.println("name  : " + name );
	System.out.println("salary:"+salary);
} 
public static void main(String args[]){ 
	//實例化對象
	TestInstanceVariable empOne = new TestInstanceVariable("Ransika");
	//給變量賦值
	empOne.setSalary(1000); 
	//調用打印方法
	empOne.printEmp(); 
} 
複製代碼

} 3.2.3類變量(靜態變量) 一、類變量也稱爲靜態變量,在類中以static關鍵字修飾,但必須在方法構造方法和語句塊以外。 二、不管一個類建立了多少個對象,類只擁有類變量的一份拷貝。 三、靜態變量除了被聲明爲常量外不多使用。常量是指聲明爲public/private,final與static類型的變量。常量初始化後不可改變。 四、靜態變量儲存在靜態存儲區(JVM內存管理的方法區)。常常被聲明爲常量,不多單獨使用static聲明變量。 靜態變量在程序開始時建立,在程序結束時銷燬。 五、與實例變量具備類似的可見性。但爲了對類的使用者可見,大多數靜態變量聲明爲public類型。

六、默認值和實例變量類似。數值型變量默認值是0,布爾型默認值是false,引用類型默認值是null。變量的值能夠在聲明的時候指定,也能夠在構造方法中指定。此外,靜態變量還能夠在靜態語句塊中初始化。 七、靜態變量能夠經過:ClassName.VariableName的方式訪問。(類名.變量名) 八、類變量被聲明爲public static final類型時,類變量名稱必須使用大寫字母。若是靜態變量不是public和final類型,其命名方式與實例變量以及局部變量的命名方式一致。

案例演示:

/**

  • 測試類的變量即靜態變量
  • @author Admin */ public class TestStaticVariable { //salary是靜態的私有變量 private static double salary; // DEPARTMENT是一個常量,不能在構造函數中初始化,由於賦值後是不可變 public static final String DEPARTMENT = "開發人員"; public TestStaticVariable(){ salary = 2.2; } public static void main(String[] args) { TestStaticVariable t = new TestStaticVariable(); double salary2 = TestStaticVariable.salary; System.out.println(salary2); } } 4Java 數據類型 4.1八大基本類型 內存管理系統根據變量的類型爲變量分配存儲空間,分配的空間只能用來儲存 該類型數據。int a = 1; float b = 3.0f; 所以,經過定義不一樣類型的變量,能夠在內存中儲存整數、小數或者字符。 Java的兩大數據類型:

內置數據類型(默認的,原始的,基本的類型) 引用數據類型(在內存中存儲的是引用地址)

Java提供了八種基本類型。六種數字類型(四個整數型,兩個浮點型),一種字符類型,還有一種布爾型。

4.1.1byte byte數據類型是8(bit)位、有符號的,以二進制補碼錶示的整數;1 Byte = 8bit 01010101 (8位) 00000110 最小值是-128(-2^7);不要要死記 最大值是127(2^7-1); 默認值是0; byte類型用在大型數組中節約空間,主要代替整數,由於byte變量佔用的空間只有int類型的四分之一; 例子:byte a = 100,byte b = -50。 對於數值類型的基本類型的取值範圍,咱們無需強制去記憶,由於它們的值都已經以常量的形式定義在對應的包裝類中了。 包裝類Byte

System.out.println("/**************byte類型的測試*****************/");
	//byte的最大值
	byte maxValue = Byte.MAX_VALUE;
	System.out.println(maxValue);
	//byte的最小值
	byte minValue = Byte.MIN_VALUE;
	System.out.println(minValue);
	byte b = 10;
	byte c = 12;
	System.out.println(b+","+c);
複製代碼

查看位數 //轉成二進制,查看位數 String bb = Integer.toBinaryString(maxValue); System.out.println(bb); //查看位數 int size = Byte.SIZE; System.out.println(size);

二進制轉十進制 //二進制轉換十進制 byte re = (byte)Integer.parseInt(bb, 2); //- 256;
System.out.println(re);

4.1.2short short數據類型是16位、有符號的以二進制補碼錶示的整數; 默認值是0; 最小值是-32768(-2^15); 最大值是32767(2^15 - 1); Short數據類型也能夠像byte那樣節省空間。一個short變量是int型變量所佔空間的二分之一; 例子:short s = 1000,short r = -20000。 System.out.println("/short類型的測試*/"); short maxValue2 = Short.MAX_VALUE; System.out.println(maxValue2); short minValue2 = Short.MIN_VALUE; System.out.println(minValue2); short t = 55; System.out.println(t); //查看二進制,以及位數 String binaryString = Integer.toBinaryString(maxValue2); System.out.println(binaryString);

4.1.3int(重點) int數據類型是32位、有符號的以二進制補碼錶示的整數;通常地整型變量默認爲int類型;默認值是0; 最小值是-2,147,483,648(-2^31); 最大值是2,147,483,647(2^31 - 1); 例子:int a = 100000, int b = -200000。 包裝類Integer System.out.println("/int類型的測試*/"); int maxValue3 = Integer.MAX_VALUE; System.out.println(maxValue3); int minValue3 = Integer.MIN_VALUE; System.out.println(minValue3); //查看二進制,以及位數 String binaryString2 = Integer.toBinaryString(maxValue3); System.out.println(binaryString2);

4.1.4long long數據類型是64位、有符號的以二進制補碼錶示的整數;默認值是0L;(?) 最小值是-9,223,372,036,854,775,808(-2^63); 最大值是9,223,372,036,854,775,807(2^63 -1); 這種類型主要使用在須要比較大整數的系統上; 例子: long a = 100000L,Long b = -200000L。 包裝類Long System.out.println("/long類型的測試*/"); long maxValue4 = Long.MAX_VALUE; System.out.println(maxValue4); long minValue4 = Long.MIN_VALUE; System.out.println(minValue4); //查看二進制,以及位數 String binaryString3 = Long.toBinaryString(maxValue4); System.out.println(binaryString3);

4.1.5float(這個稍微用的少) float數據類型是單精度、32位、符合IEEE 754標準(IEEE二進位浮點數算術標準)的浮點數;默認值是0.0f; float在儲存大型浮點數組的時候可節省內存空間; 浮點數不能用來表示精確的值,如貨幣; 例子:float f1 = 234.5f。最小值(1.4乘於10的負45次方) 包裝類Float System.out.println("/float類型的測試*/"); float maxValue5 = Float.MAX_VALUE; System.out.println(maxValue5); //用高精度類型查看科學計數法 BigDecimal valueOf = BigDecimal.valueOf(maxValue5); System.out.println(valueOf.toPlainString());

float minValue5 = Float.MIN_VALUE;
	BigDecimal bigf = BigDecimal.valueOf(minValue5);
	System.out.println(bigf.toPlainString());
	//查看位數
	System.out.println(Float.SIZE);
複製代碼

4.1.6double(重點) double數據類型是雙精度、64位、符合IEEE 754標準的浮點數;默認值是0.0d; 浮點數的默認類型爲double類型; double類型一樣不能表示精確的值,如貨幣; 例子:double d1 = 123.4。 System.out.println("/double類型的測試*/");

double maxValue6 = Double.MAX_VALUE;
	System.out.println(maxValue6);
	
	BigDecimal valueOf2 = BigDecimal.valueOf(maxValue6);
	System.out.println(valueOf2.toPlainString());
	
	double minValue6 = Double.MIN_VALUE;
	System.out.println(minValue6);
	//使用高精度轉換成普通數據的展現
	BigDecimal valueOf3 = BigDecimal.valueOf(minValue6);
	System.out.println(valueOf3.toPlainString());
	int size2 = Double.SIZE;
	System.out.println(size2);
複製代碼

4.1.7boolean boolean數據類型表示一位的信息; 只有兩個取值:true和false;默認值是false; 這種類型只做爲一種標誌來記錄true/false狀況; 例子:boolean one = true。(沒有大小,值) System.out.println("/boolean類型的測試*/"); boolean true1 = Boolean.TRUE; System.out.println(true1); boolean false1 = Boolean.FALSE; System.out.println(false1);

4.1.8char char類型是一個單一的16位Unicode字符; 8位=一個字節 什麼是Unicode編碼:Unicode碼也是一種國際標準編碼,採用二個字節編碼 Unicode字符一般用十六進制編碼方案表示 最小值是’\u0000’(即爲0); \u開頭的是一個Unicode碼的字符 最大值是’\uffff’(即爲65,535); char數據類型能夠儲存任何字符;包裝類是Character 例子:char letter = ‘A’。注意:必須用單引號。 char以數值形式而不是字符形式將Character.MIN_VALUE輸出到控制檯 若是要輸入數值則 須要(int)強轉 若是不強轉則打印的空 System.out.println("/char類型的測試*/"); char maxValue7 = Character.MAX_VALUE; System.out.println((int)maxValue7); char minValue7 = Character.MIN_VALUE; System.out.println((int)minValue7); int size3 = Character.SIZE; System.out.println(size3); char maxcc = '\uffff';//16進制 最大值 char mincc = '\u0000'; System.out.println("char的最大值:"+maxcc); System.out.println("char的最大值:"+mincc);

總結注意:max_value,min_value ,size Integer, Character 4.2類型轉換 4.2.1自動類型的轉換 定義:自動類型轉換,也稱隱式類型轉換,是指不須要書寫代碼,由系統自動完成的類型轉換。因爲實際開發中這樣的類型轉換不少,因此 Java 語言在設計時,沒有爲該操做設計語法,而是由 JVM 自動完成。

轉換規則:從存儲範圍小的類型到存儲範圍大的類型。 具體規則爲:byte→short(char)→int→long(64)→float(32)→double

也就是說 byte 類型的變量能夠自動轉換爲 short 類型,示例代碼: byte b = 10; short  sh  =  b;這裏在賦值時,JVM 首先將 b 的值轉換爲 short 類型,而後再賦值給 sh。 在類型轉換時能夠跳躍。示例代碼: byte b1 = 100;int n = b1; 注意問題:在整數之間進行類型轉換時,數值不發生改變,而將整數類型,特別是比較大的整數類型轉換成小數類型時,因爲存儲方式不一樣,有可能存在數據精度的損失。

同理: long num = 10000000000000L; float f1 = num; double dou = num; System.out.println(f1);

4.2.2強制類型轉換 強制類型轉換,也稱顯式類型轉換,是指必須書寫代碼才能完成的類型轉換。該類類型轉換極可能存在精度的損失,因此必須書寫相應的代碼,而且可以忍受該種損失時才進行該類型的轉換。 轉換規則:從存儲範圍大的類型到存儲範圍小的類型。 具體規則爲:double→float→long→int→short(char)→byte 語法格式爲:(轉換到的類型)須要轉換的值 示例代碼: double d = 3.10; int n = (int)d; System.out.println(n);//結果 3 這裏將 double 類型的變量 d 強制轉換成 int 類型,而後賦值給變量 n。須要說明的是小數強制轉換爲整數,採用的是「去 1 法」,也就是無條件的捨棄小數點的全部數字,則以上轉換出的結果是 3。整數強制轉換爲整數時取數字的低位,例如 int 類型的變量轉換爲 byte 類型時,則只取 int 類型的低 8 位(也就是最後一個字節)的值。

int  nn  =  123;
	byte  b  =  (byte)nn;
	System.out.println(b);
	
	int  m  =  1234;  //32
	byte  b1  =  (byte)m; //byte的最大值127
	//11010010  取反 加1  00101101
	//10101110          
	String binaryString = Integer.toBinaryString(b1);
	System.out.println(binaryString);
	System.out.println(b1);
	int parseInt = Integer.parseInt("-00101110", 2);
	System.out.println(parseInt);
複製代碼

則 b 的值仍是 123,而 b1 的值爲-46。b1 的計算方法以下:m 的值轉換爲二進制是10011010010,取該數字低8位的值做爲b1的值,則b1的二進制值是11010010,按照機器數的規定,最高位是符號位,1表明負數,在計算機中負數存儲的是補碼(取反加1的規則),則該負數的原碼是 00101110,該值就是十進制的-46。 注意問題:強制類型轉換一般都會存儲精度的損失,因此使用時須要謹慎。

4.3八大基本類型總結 Float和Double的最小值和最大值都是以科學記數法的形式輸出的,結尾的"E+數字"表示E以前的數字要乘以10的多少次方。好比3.14E3就是3.14 × 103 =3140,3.14E-3 就是 3.14 x 10-3 =0.00314。 byte、char、short、三種類型參與運算時,先一概轉換成int類型再進行運算。 實際上,JAVA中還存在另一種基本類型void,它也有對應的包裝類 java.lang.Void,不過咱們沒法直接對它們進行操做。 float強轉爲double時會輸出怪異值,是由於十進制在轉換爲二進制的時候可能會不許確 4.4引用類型 定義:是一個對象類型,值是什麼呢?它的值是指向內存空間的引用,就是地址,所指向的內存中保存着變量所表示的一個值或一組值。  String str = 「123」; 在Java中,引用類型的變量很是相似於C/C++的指針。引用類型指向一個對象,指向對象的變量是引用變量。這些變量在聲明時被指定爲一個特定的類型,好比Employee、Pubby等。變量一旦聲明後,類型就不能被改變了。 對象、數組都是引用數據類型。 全部引用類型的默認值都是null。 一個引用變量能夠用來引用與任何與之兼容的類型。 例子: String str = new String("我是String");

5做業: 做業前練習打字半個小時。--必須任務 一、Java平臺分爲哪幾個版本? 二、int和Integer有什麼區別? (編寫到紙質筆記本) 三、Java中有哪些數據類型?有哪幾種基本數據類型? 四、請寫出Java中與基本數據類型相對應的封裝類? 五、成員變量與類變量的區別 (總結題目:編寫到紙質筆記本) 六、若是main方法被聲明爲private會怎樣? 七、說明一下public static void main(String args[])這段聲明裏每一個關鍵字的做用? 八、若是去掉了main方法的static修飾符會怎樣? 九、你怎麼理解變量? 十、簡單的介紹下JVM是如何工做的?

注意:不知道的各類百度。

6附加思考知識: 引用傳遞 和 值傳遞 引用類型:除了在函數傳值的時候是"引用傳遞",在任何用"="向對象變量賦值的時候都是"引用傳遞"。 值傳遞:基本類型的傳遞都屬於值傳遞,和C語言同樣,當把Java的基本數據類型(如 int,char,double等)做爲入口參數傳給函數體的時候,傳入的參數在函數體內部變成了局部變量,這個局部變量是輸入參數的一個拷貝,全部的函 數體內部的操做都是針對這個拷貝的操做,函數執行結束後,這個局部變量也就完成了它的使命,它影響不到做爲輸入參數的變量。這種方式的參數傳遞被稱爲"值 傳遞"。

愛好學習的寶寶們,能夠找我。v:17711692868

相關文章
相關標籤/搜索