書本中使用了設計衣服來定義類,一件衣服的設計Clothes定義了color和size兩個變量,即java術語來講,叫做定義兩個值域成員,或叫做定義了兩個對象數據成員。在下面有具體實例運行。html
具體編寫步驟是:java
與此同時書本還介紹了另一種定義構造函數。構造函數是與類名稱同名的方法。下面也有具體實例運行。git
具體編寫步驟是:數組
以上的兩種Clothes定義類的區別主要是:第一種方法在賦值前先創建了空的Clothes實例,而後在主函數裏進行賦值操做;而第二種方法先在定義類的模塊構造了函數,而後在後面的賦值中直接將對象代入函數完成賦值。app
在此小節中本書第一次出現了讓用戶進行輸入,以前在學習c語言時,每一個程序在運行時基本都須要用戶進行輸入,再根據程序內容計算而後反饋給用戶(除了一些顯示圖表的程序,例如:顯示楊輝三角、九九乘法表)。在這裏用戶能夠直接再ieda下方的程序框中輸入。下面有猜數字的具體實例。函數
這個java.util.Scanner是一個標準類,是組成Java SE提供的標準API的許多種類之一。因爲是系統自帶的內容,因此在程序中能夠直接使用,不須要像上一節的Clothes同樣去定義。學習
第二種基本類型中使用1.0 - 0.8的結果不是2是由於Java遵照IEEE 754浮點數運算規範,使用分數與指數來表示浮點數,因此致使有無限循環,沒法精確表示,於是形成運算偏差。本節就使用了一個標準類java.math.BigDecimal來解決,以默認的精度進行運算。下面是1.0 - 0.8的實例運行。this
Java並不是徹底的面向對象程序語言,在Java中有兩大類型系統,即基本類型與類類型,因此必須區分=與==運算用於基本類型與類類型的不一樣。.net
當=用於基本類型時,是將值賦值給變量,當==用於基本類型時,是比較兩個變量儲存的值是否相同。設計
int a = 28; int b = 22; int c = a; System.out.println(a == b); //判斷a與b是否相等,這裏顯示False System.out.println(a == c); //判斷a與c是否相等,這裏顯示True
當=用於對象時,是用在指定參考名稱參考某個對象,而==是用在比較兩個參考名稱是否參考同一對象。
BigDecimal a = new BigDecimal("0.1"); //給a賦值0.1,即把a標籤貼給"0.1" BigDecimal b = new BigDecimal("0.2"); //給b賦值0.1,即把b標籤貼給"0.1",此"0.1"非彼"0.1" System.out.println(a == b); //判斷a與b是否綁在同一個對象上,結果是False System.out.println(a.equal(b)); //判斷a與b的賦值是否相等,結果是True
Java中有兩個類型系統,即基本類型與類類型,使用基本類型目的在於效率,然而更多時候,會使用類創建實例,由於對象自己能夠攜帶更多信息。若是要讓基本類型像對象同樣操做,可使用Long、Integer、Double、Float、Boolean、Byte等類來打包(Wrap)基本類型。具體實例以下。
具體編寫步驟是:
這個程序中有兩個操做:doubleValue()將打包值以double類型返回,以及compareTo()與另一個對象進行對比。這些都是包含在Integer中的方法,在打包器中能夠直接使用。
J2SE 5.0之後Java提供了自動裝箱和自動拆箱功能。因此能夠這樣打包基本類型和取出打包器中的基本形態信息:
Integer wrapper = 10; //自動裝箱 int foo = wrapper; //自動拆箱
數組在Java中就是對象,因此前面介紹過的對象基本性質,在操做數組時也要注意,如參考名稱聲明、=指定的做用、==與!=的比較等。在Java中若是想要一次取出數組中每一個值,方法之一是使用for循環。下面是具體實例。
一維數組使用一個索引存取數組元素,你也能夠聲明二維數組,二維數組使用兩個索引存取數組元素。下面是具體實例。
關於數組的表示,感受java語言和之前學的c語言有不少的共同之處,除了顯示主函數、打印的代碼不一樣以外,我的感受非常十分類似的。
若是在創建數組前不知道元素值,只知道元素的個數,那可使用new關鍵詞指定長度來創建數組。例如,預先創建長度爲10的數組:
int[] scores = new int[10];
在Java中只要看到new,必定就是創建對象,這個語法表明了數組就是對象。使用new創建數組後,每一個索引元素會有默認值,以下表所示:
數據類型 | 初始值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0F |
double | 0.0D |
char | \u0000 |
boolean | false |
類 | null |
下面是使用java.util.Arrays(即一種標準類,以前在類的感念中有涉及)中的fill()的方法來設定新建數組的元素值。例如,將每一個學生的成績默認爲60分起:
若是想在new數組中一併指定初始值,能夠這樣撰寫:
int[] scores = new int[] {88, 81, 74, 68, 78, 76, 77, 85, 95, 93};
若是使用new配置二維數組後想要一併指定初始值,則能夠這樣撰寫:
int[][] cords new int[][] { {1, 2, 3}, {4, 5, 6} };
沒有人規定二維數組必定得是矩陣,也能夠按照下面的方法創建不規則數組:
以上都是示範基本類型創建的數組,接下來介紹類類型創建的數組。下面是使用new關鍵詞創建Integer數組:
Integer[] scores = new Integer[3];
若是要進行數組的複製,按照學習c語言的思路,在java中也一樣適用。例如:
int[] score1 = {1, 2, 3, 4, 5}; int[] score2 = new int[score1.length]; for(int i = 0; i < score); i++) { score2[i] = score1[i]; }
可是java比c語言更高級的地方就是java內部有更多能夠直接使用的函數,好比這裏可使用的System.arraycopy()方法,這個方法會使用yuan原生方式複製每一個索引元素,比自行使用循環來得快:
int[] score1 = {1, 2, 3, 4, 5}; int[] score2 = new int[score1.length]; System.arraycopy(scores1, 0, scores2, 0, scores1.length);
同時書本還介紹了更方便得方法Arrays.copyOf()方法,能夠不用零星創建新數組,Arrays.copyOf()會幫你創建。
在Java中,字符串是java.lang.String實例,用來打包字符數組。能夠用""包括一串字符來創建字符串:
String name = "justin"; System.out.println(name); //顯示justin System.out.println(name.length()); //顯示字符串長度爲6 System.out.println(name.charAt(0)); //顯示第一個字符j System.out.println(name.toUpperCase()); //顯示JUSTIN
若是要將字符串轉換爲整數、浮點數等基本類型,可使用下面表中類提供的剖析方法。
方法 | 說明 |
---|---|
Byte.parseByte(number) | 將number剖析爲byte整數 |
Short.parseShort(number) | 將number剖析爲Short整數 |
Integer.parseInteger(number) | 將number剖析爲Inte整數 |
Long.parseLong(number) | 將number剖析爲Long整數 |
Float.parseFloat(number) | 將number剖析爲Float浮點數 |
Double.parseDouble(number) | 將number剖析爲Double浮點數 |
下面這個實例可讓用戶輸入整數,輸入後會計算全部整數總和並顯示:
這個程序中使用了以前章節提到過的import java.util.Scanner,便可以輸入數據的標準類。
以Java的字符串來講,就有一些必須注意的特性:
若是像比較對象實質內容是否相同,不要使用==,要使用 equal()。一樣地,若是想要比較字符串實際字符內容知否相同,不要使用==,要使用 equal()。下面的程序片斷執行結果都是true:
String name1 = "Justin"; String name2 = "Justin"; String name3 = new String("Justin"); String name4 = new String("Justin"); System.out.println(name1.equals(name2)); System.out.println(name1.equals(name3)); System.out.println(name3.equals(name4));
在Java中,字符串對象一旦創建,就沒法更改對象中任何內容,對象上沒有任何方法能夠更改字符串內容。可是可使用+鏈接字符串。例如:
String name1 = "Java"; String name2 = name1 + "World"; System.out.println(name2);
運行的結果就會顯示JavaWorld。
public爲公開類,在構造函數上聲明public class{}表示其餘包中的類能夠調用這個構造函數,private定義私有數據類型。用在成員變量前private class{}。
構造函數:在定義類時,可使用構造函數定義對象創建的初始流程。構造函數是與類名稱同名,無需聲明返回類型的方法。示例:
class name{ int a=0; String strs; name(int a,String strs){ this.a=a; this.strs=strs; } }
重載構造函數: 能夠定義多個構造函數,只要參數類型不一樣或者個數不一樣。
public class name { int a=1; String strs ="strs"; public name(int a){ if(a>0){ this.a=a; } } public name(int a ,String strs ){ if(a>0){ this.a=a; } if(strs !=null){ this.strs=java; } } }
static類成員被聲明爲static的成員,不會讓個別對象擁有,而屬於類。在static方法或區塊中,不能出現this關鍵字。static方法中不能使用非static數據或方法成員。
不定長度自變量
int...聲明的變量實際上展開爲數組;在使用不定長度自變量時,必須是參數列中的最後一個,使用兩個以上不定長度自變量也是不合法的,使用對象的不定長度自變量不能和方法相同。
代碼行數(新增積) | 博客量(新增積) | 學習時間(新增積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第三週 | 168/200 | 1/2 | 15/20 |
計劃學習時間:20小時
實際學習時間:15小時