23.二維數組(用的少僅作了解)java
即數組中有數組編程
定義方式:(1)數據類型[][] 數組名=new 數據類型[整數][整數]數組
(2)數據類型[][] 數組名={{值1,值2,值3},{...},{...}....}安全
必須明確外圍數組名jvm
class Demo2{
public static void main(String[] args){
//定義一個新的二位數組第一種方式,數據類型[][] 數組名=new 數據類型[整數(表示行)][整數(表示列)]
int[][] arry=new int[3][4];
//給每一行每一列上對應的數賦值
arry[0][0]=11;
arry[0][1]=12;
arry[0][2]=13;
arry[1][0]=22;
arry[1][1]=23;
arry[1][2]=24;
arry[2][0]=33;
arry[2][1]=34;
arry[2][2]=35;
printArr(arry);
/*
11 12 13 0
22 23 24 0
33 34 35 0
*/
}
//建立一個方法訪問數組中每個數
public static void printArr(int[][] arr){
//外層爲行
for(int i=0;i<arr.length;i++){
//內層爲列
for(int j=0;j<arr[i].length;j++){
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
}函數
24.面向對象oop
面向過程定義:分析解決問題所須要的步驟,而後用函數一步步調用實現,舉例把大象反放進冰箱、五子棋spa
面向對象:oop(object oriented programming)作一個需求時,咱們會抽取出幾種事物,每一種事物都有共同的行爲和屬性,核心是對象,某個對象的行爲、屬性,Java中萬物皆對象對象
面向對象是以功能和屬性劃分,而不是步驟,編程就是模擬現實生活,使用面向對象的思想能夠認爲萬物皆對象接口
25.類的概念:把某些具備相同屬性和行爲的事物抽象成一類
注意類是概念,對象纔是真正的實例,對象是具體的實例
26.類的語法
class 類名{
屬性
方法
}
類名:首字母大寫的駝峯式XxxYyy,見名知意
建立類要注意:(1)類名和文件名沒有任何關係,前提是class類前面不要加public,若是加了表明這個類是主類(2)如在定義類的時候public class Teacher{},這個類就是主類。一個Java文件只能有一個主類,並且這個文件名字必須和主類名字一致
27.類裏的屬性
屬性就是這個類的公有特徵,用變量的定義方式表示能夠沒有初始值,jvm給屬性默認值
引用數據類型:數組、類、接口
屬性的默認值
byte、short、int、long默認值爲0;float、double默認值爲0.0;boolean默認值爲false;char默認值爲''
引用數據類型默認值爲null
28.類的方法
類的行爲用函數(此處static無關緊要)
public <static> 返回值類型 方法名(數據類型 參數名,數據類型1 參數名1,...){
//方法體
return 返回值;
}
29.建立對象
類猶如一個模板,對象就是一個個樣本
建立對象的語法:類名 變量名=new 類名()
經過對象能夠訪問屬性 引用.屬性名字
經過對象能夠調用方法 引用.方法(參數列表)
共用一個類建立多個對象每一個對象都有本身的屬性,每一個對象都是數據隔離的
30.對象建立的內存結構和流程
棧:用於存儲基本數據類型的值或者是局部變量,先進後出,存取的容量小,存取的速度快
堆:用於存儲引用數據類型,存取容量大,存取速度慢
數據共享區:用於存儲引用數據類型,存儲一些共享的數據(方法)
對象存儲在堆中,引用存儲在棧中,堆中每一個對象的數據都是隔離的
每個類class加載到數據共享區,jvm都會解析這個類的內容
方法是每一個對象共享的,可是方法內的屬性是哪一個對象調用這個方法,那麼這個屬性就是在哪一個方法的
31.成員變量(屬性)
成員變量是定義在類中,也叫類的屬性
屬性特色:做用範圍:根據權限修飾符來定;存儲位置:堆內存或者數據共享區;默認值:有;生命週期:對象什麼時間建立什麼時間有屬性,若是一個引用數據類型的變量null,意味着不指向任何的對象,堆中的對象就會變成匿名對象,很快就會被gc(垃圾回收器)回收,若是在運行的過程當中對象的引用沒有被置空,那麼對象的屬性就會等到大括號結束而被回收
32.局部變量
5種常見的狀況:語句塊內、方法中、方法參數、for循環內、普通語句塊
特色:做用範圍:只限於所定義的大括號,以及這個大括號內子括號有效;存儲位置:存儲在棧內存中;默認值:無局部變量必須賦值;生命週期:所屬的大括號結束就消失
/*建立一個類,class 類名{
屬性
方法
}
*/
class Dog{
//屬性能夠沒有初始值,能夠用變量定義的方式表示,jvm給屬性默認值
String name;
int gender;
String type;
double weight;
public void sleep(){
System.out.println("狗狗在睡覺!");
}
public void lookHome(){
System.out.println("狗狗在看家!");
}
}
//建立一個類前面加了public表示時主類文件名要和主類名一致
public class TestDog{
//主類裏裏面通常放主方法但不是必須
public static void main(String[] args){
//在類裏面建立對象,類名 變量名=new 類名()
Dog dog1=new Dog();
//經過對象訪問屬性,變量名.屬性,把這隻狗的屬性賦值
dog1.name="磊子";
dog1.gender=1;
dog1.type="泰迪";
dog1.weight=42.2;
//打印每一個屬性
System.out.println(dog1.name);
System.out.println(dog1.gender);
System.out.println(dog1.type);
System.out.println(dog1.weight);
//調用方法 變量名.方法(參數列表)
dog1.sleep();
System.out.println("--------------");
Dog dog2=new Dog();
dog2.name="小磊子";
dog2.gender=2;
dog2.type="中華田園犬";
dog2.weight=45.2;
System.out.println(dog2.name);
System.out.println(dog2.gender);
System.out.println(dog2.type);
System.out.println(dog2.weight);
dog2.lookHome();
}
}
33.匿名對象
匿名對象因爲沒有棧中的變量來引用,因此就會被回收掉,全部匿名對象是無心義的
34.面向對象的特徵之封裝
‘javac’不是內部或外部命令,也不是可運行的程序或批處理文件
解決方法:記住JAVA文件所在地址: C:\Program Files\Java (若是不記得的話,能夠從新安裝一下的)
安裝好以後,就須要配置一下環境變量 , 具體配置以下
在用戶變量中, 添加新變量,命名爲java_home,地址爲 C:\Program Files\Java\jdk1.8.0_151,注意,我以前的JAVA文件所在地址。再添加一個新變量,命名爲classpath,地址爲 C:\Program Files\Java\jdk1.8.0_151\lib\tools.jar;C:\Program Files\Java\jdk1.8.0_151\lib\dt.jar (注意,這裏中間要加分號的,這裏是兩個包來的)
在Path中添加兩個變量。 分別的地址爲 C:\Program Files\Java\jdk1.8.0_151\bin 和 C:\Program Files\Java\jre1.8.0_151\bin
封裝的目的:提升數據安全性,經過封裝,能夠實現堆屬性的訪問權限控制,同時增長了程序的可維護性
封裝:將屬性私有化,使用private關鍵字完成屬性私有化,這種屬性只有本類能訪問,咱們通常給每個私有屬性提供公共的public的set和get這種方法來訪問咱們的私有屬性;公有的方法被其餘類訪問,是本類方法能夠訪問私有屬性,咱們在其餘類中經過這個公有的方法能夠間接訪問屬性。
class TestGirl{ //使用private關鍵字將屬性私有化,這種屬性只有本類能夠訪問 private String name; private String nickName; private int age; private String tel; //公有的方法能夠被其餘的類訪問,這個方法也是TestGirl的本類方法能夠訪問私有屬性,咱們在其餘類中經過公有方法能夠間接的訪問屬性 public void introduce(){ System.out.println("我叫"+name+"今年芳齡"+age+"個人手機號碼是"+tel); } //提供一個公有的設置屬性的方法,不須要返回獲得什麼值因此不須要返回值 public void setName(String myName){ name=myName; } //提供一個公有的獲取屬性的方法,返回獲得屬性或者直接打印屬性 public String getName(){ return name; } public void setAge(int myAge){ age=myAge; } public int getAge(){ return age; } public void setTel(String myTel){ tel=myTel; } public String getTel(){ return tel; } } public class Girl{ public static void main(String[] args){ //建立一個TestGirl類的對象g TestGirl g=new TestGirl(); //調用方法設置g的屬性 g.setName("詩詩"); g.setAge(23); g.setTel("12345678"); g.introduce(); //調用方法訪問獲取g的屬性,注意接收返回值 String name=g.getName(); int age=g.getAge(); String tel=g.getTel(); System.out.println(name); System.out.println(age); System.out.println(tel); } }