java代碼塊是什麼
『壹』 java中 包、塊、類、對象、都什麼意思啊,能舉例子說明嗎,初學者學習
2.Java中的類和對象【第一部分草案】 收藏
(本章的學習量相對比較大,我把整體分為三個部分講解,第一個部分和第二個部分為Java關於類和對象以及OO的基礎,第三個部分為在OO設計技巧中針對Java程序的一些性能提升的小技巧,因為盡量保證Java關於類和對象的基本概念以及關鍵知識點都能夠涉及到,一是為了方便查詢,二是按照常用的關鍵點來進行的整理,其中的關鍵點都是在開發過程中的一些相關內容涉及,所以本文特意提供了一個目錄進行檢索。類和對象屬於面向對象的基本概念,在開發過程中,需要掌握了對象和類的基本思想過後才明白如何進行OO設計,Java本身是純面向對象的語言,這篇文章的主要目的是針對Java裡面一些關於類和對象的基本操作進行簡單的講解,若有筆誤,請來Email提點,謝謝:[email protected])
本文目錄:【藍色部分為本章的目錄】
1.基本概念
2.Java變數相關
1)Java變數分類
2)Java中變數的初始化
3)Java變數修飾符和訪問域
4)Java類修飾符[不包含內部類]
3.Java涉及OO的關鍵知識點【主體】
1)繼承的基本概念
2)抽象類、介面、final類:
3)重載和重寫:
4)對象的拷貝[深拷貝和淺拷貝]:
5)關鍵字this、super
6)Java中的inlining[內聯]
7)帶繼承的構造函數以及構造順序
8)談談Object中的方法:equals、hashCode、toString
9)帶繼承的類型轉換以及轉換中關於成員變數和成員函數的調用
10)Java語言中的反射
11)按引用傳遞和值傳遞原理
12)Java中的包和導入
13)匿名類和內部類
4.Java編程OO設計技巧
1)對象創建以及周期
2)對象屬性設置
3)垃圾回收
4)繼承、介面、抽象類
5.總結
1.基本概念:
類和對象:OO裡面什麼稱為類,類一般性我們定義為創建對象的一個藍圖,當我們根據某個類創建了一個對象的時候,我們就說該對象是這個類的一個實例(instance),類描述了某些對象的基本結構,是對對象的相關屬性的一種定義,它定義了對象所具有的屬性、方法、事件等各種基本點。
類設計的關鍵概念:封裝是對象在工作的時候的一個關鍵概念,也是我們在進行OO設計的時候的一個需要掌握的點,封裝簡單講就是將對象內部的一些細節實現隱藏起來不對外公布,僅僅對外公布某個對象能夠提供的操作結果,從而實現信息隱藏的目的。在封裝過程,對象內的數據我們一般稱為成員變數(instance fields),對象內針對這些數據執行的操作我們可以叫做操作方法(成員函數)(methods),一個對象這些屬性的集合所反映出來的就是該對象的狀態。
在Java裡面,所有的復合數據都是從Object類繼承而來的,這一點可以通過使用Java反射去獲取父類的名稱來獲得。
對象:在OO設計裡面,對象有幾個需要掌握的基本點:
對象的行為:對象的行為指代的是這個對象能夠做什麼,不能做什麼,包括這個對象有哪些介面是對外提供了我們可以直接進行使用等相關概念。
對象的狀態:對象的狀態指代的是在程序運行過程,某個對象實例的一些屬性發生了相關的變化過後產生的一個對象狀態,在ORM設計中我們經常會遇到對象狀態的操作。
對象的標識:對象的標識指代的是這個對象如何區別於其他對象,即是是同一個類產生的新實例,其本質上講它們屬於兩個不同的對象,而不應該是同一個對象。
類與類的關系:
依賴(Dependence):依賴關系簡單講就是users-a的關系,兩個類創建的對象實例本身沒有任何關系,在編程過程反映出來的就是兩個對象在相互之間的調用關系,比如某個對象在執行它自己的行為的時候調用了其他對象的方法這些相關操作都屬於users-a的基本關系,或者說在某個Class裡面使用了其他Class來定義成員變數。
組合(Aggregation):組合關系可以認為是has-a的關系,這種關系的兩個類存在一個包含關系,很容易理解就是比如某個類包含了另外一個類,這種概念嚴格上講不在操作,主要是成員變數,比如一個用戶有個姓名屬性成為NameInfo,然後這個NameInfo定義為一個包含了兩個String的對象,一個是FirstName,另外一個是LastName,這種情況可以認為該對象本身和NameInfo之間的關系是has-a的關系。
繼承(Inheritance):繼承關系屬於is-a的關系,這種關系意味著兩個類存在父類(superclass)和子類(subclass)的概念,Java裡面使用extends和implements兩個關鍵字來體現兩個類的集成關系。
(上邊這些概念基本上在各種OO語言學習的開篇都會遇到,沒什麼特殊的,所以熟悉的人可以不用去了解)
Java中的Class:
預定義Class:在Java裡面,什麼稱為預定義Class,學過Java的人都知道,JVM會在我們編寫java程序的時候默認載入包java.lang,而java.lang裡面已經存在了很多Class,這種Class就屬於預定義的Class;不僅僅如此,以及Java API裡面提供的Network相關類、IO相關類、XML相關類,這些可以不需要我們自定義,只需要import過後就可以直接使用的類就屬於預定義的類。預定義類的各種使用方法可以參考JDK的API文檔,裡面針對目前存在的很多類都有詳細的描述信息,有些類還提供了我們所需要的相關使用Demo可做參考。
一些代碼的使用例子。
自定義Class:如果我們要使用自己的Class就需要在Java中自己定義Class,定義語法如下:
class UserInfo{
……
}
使用該語法我們就可以定義一個屬於自己的Class,而在Class裡面我們就可以根據自己的需求來設計相關成員變數和成員函數以及其他相關信息。
2.Java變數:
1)Java中的變數分為四種:類變數(又稱為靜態變數)、實例變數、局部變數、塊變數
類變數——類變數只能在一個class域裡面進行定義,同樣只能在類裡面使用,使用關鍵字為static關鍵字,這種變數可以直接通過Class.VAR的方式來調用,而且不需要對象實例存在就可以調用,它的執行原理在於當JVM的類載入器將類載入進來的時候,這個變數就已經存在的,而且可以使用了。定義方式和調用方式如下,下邊的A就屬於類變數:
class UserInfo{
static int A;
public static void main(String args[])
{
System.out.println(UserInfo.A);
}
}
『貳』 Java中,構造代碼塊和構造函數有什麼區別
構造代碼塊:是給所有的對象進行初始化,也就是說,所有的對象都會調用一個代碼塊,只要對象一建立,就會調用這個代碼塊。
構造函數:是給與之對應的對象進行初始化,它具有針對性。
『叄』 Java 邏輯代碼塊是什麼
java邏輯代碼塊是指使用{}大括弧內的代碼片段,為了實現某種邏輯和主類區分開來的一段代碼。分為靜態代碼塊、普通代碼塊,示例如下:
/**
*靜態代碼塊先於構造器執行普通塊先於構造塊只執行一次
*凡是靜態的與對象無關,先於對象存在的;凡是靜態的都是共享的
*
*/
publicclassTest{
static{//靜態代碼塊
System.out.println("static");
}
{
System.out.println("普通塊2");
}
publicTest(){
System.out.println("構造器");
}
『肆』 Java常見代碼塊的作用與區別
1. 局部代碼塊
作用在方法當中,作用是控制變數的生命周期:
public void show(){
{
System.out.println("局部代碼塊運行!");
}
}123456
在程序中當我們定義完成一個局部變數x之後,並且在接下來的代碼中,不想再用到它時,那麼就沒必要讓x在內存中繼續佔用空間。因此就有了局部代碼塊。
2. 構造代碼塊
作用在類的定義Body中,作用是給類的部分欄位統一初始化:
public class Apple {
private String size;
//構造代碼塊
{
System.out.println("構造代碼塊運行!");
size = "E";
}
}
12345678910
構造代碼塊與構造函數的區別是:構造代碼塊是給所有對象進行統一初始化,而構造函數是給對應的對象初始化,因為構造函數是可以多個的,運行哪個構造函數就會建立什麼樣的對象,但無論建立哪個對象,都會先執行相同的構造代碼塊。也就是說,構造代碼塊中定義的是不同對象共性的初始化內容。所以理所當然的,構造代碼塊在構造函數之前執行。
3. 靜態代碼塊
作用有兩個:
(1)給類的靜態變數賦值;
(2)聲明靜態變數;
作用在類的Body中,對類中的靜態變數初始化:
public class APP {
static int x, y; // 靜態變數
static {
x = 5; // 給靜態變數x賦值
}
public static void myMethod() {
y = x++ + ++x; // x++ 先使用x的值再加1;++x先加1再使用x的值
}
public static void main(String[] args) {
x--;
myMethod();
System.out.println(x + y + ++x);
}
}
輸出:23