從頭再來:Java一切都是對象

2020-12-08 Java猿猿
Java一切都是對象

剛開始學習Java的時候老師說Java中一切都是對象,並且是一次編寫到處運行。

什麼是對象?

對象是現實中的的實體,有具體的行為和屬性,比如汽車,人,飛機等。

什麼是類呢?

類是對一組屬性和行為的抽象,是一個抽象的概念,比如Person類具有顏色屬性和吃飯說話的行為。我們通過類創建一個對象的實例,比如小明,小明就是一個具體的對象實例。

創建一個類

首先定一個一個名字,名字通常首字母大寫,比如Dog,Car等為了方便管理類,又需要一個包(package),包的名字可以有唯一的域名加上自己的業務模塊,包名都是小寫字母並用點分開。比如com.xxxxx.yyyy.service。作用域的範圍,為了更好的封裝,Java提供四種作用域private、public、protected、friendly。private 當前類可見,只有自己能訪問public 對所有開放,可以認為沒有限制protected 對子類可見,無論是包內外friendly也就是默認的,只對包內可見創建類的屬性也就是成員變量,如果是基本類型,會初始化一個默認值,如果是對象默認就是null。創建類的行為,可以理解為方法函數。方法的籤名就是方法名和參數列表。返回值,可以為空(void),也可以為對象,如果是空,我們在方法結束的時候可以什麼都不返回;如果有返回值,在方法末尾需要顯示的返回。參數列表,為了傳遞參數,可以在方法籤名中定義參數列表。如果是對象,傳遞的是對象的引用,如果是基本類型,傳遞的是值。局部變量,局部變量的作用域只在方法體中,需要顯示初始化,不會自動初始化默認值。一個類就創建出來了,那就來個Hello World吧

Hello World

main函數也是應用的入口,直接被JVM調用。這個函數必須是public static void 的,static的意思不用創建實例就能通過類訪問。

說道static,我們就多少幾句。當被訪問的和類的實例沒有關係的實現,我們可以聲明變量或者方法為static,也就是說這個變量或者方法是被所有的對象實例所共享,進一步說這個變量或者方法和對象實例沒有關係。

最後,如果在代碼中需要注釋,和其他語言一樣,/* 開始的,到*/結束的可以跨行注釋,如果只想注釋一行可以用//。

歡迎留言討論,如有任何問題,歡迎批評指正,謝謝!

相關焦點

  • 從頭再來:Java訪問權限控制
    Java訪問權限控制先來一個簡單的測試題:Java中的抽象類和接口可以設為private嗎?再解釋者四種權限之前,先看看包(package)的使用。Java中的包一個包可以把一組類組織在一起,放到一個相同的名字空間下。定義包用到的關鍵字package。
  • 「原創」為什麼java中一切都是對象,還要有static?
    有了類的定義,我們就可以用類來描述世上任何東西。然而,有一個特殊的東西不屬於對象,它就是static。接下來我們通過內存示意圖來觀察下:從上圖中我們可以注意到紅色框中的內容是重複存在於堆中的。倘若對象越建越多,那麼堆中的重複數據也會越來越多,這樣就會導致內存造成不必要的消耗。既然各個對象中都存在同樣的數據,那麼何不將這些相同的數據單獨拿出來並且單獨存放呢?
  • 不怕一切都得從頭再來,至少我們還活著!
    不是人人都能來到這個世界上,既然來了就不做懦夫,好好活一場,風雨不在乎,如果你一無所有,那麼就釋懷所有,擁有一個雲淡風輕的心情就足夠了,如果你有情有愛有親人,那你就要珍惜所有
  • 一個 Java 對象到底有多大?
    Java對象結構一個Java對象在Heap的表示,可以分為三部分:每個普通Java對象在堆(heap)中都有一個頭信息(object header),頭信息是必不可少的,記錄著對象的狀態。hash(25)+age(4)+lock(3)=32bit64位中:unused(25+1)+hash(31)+age(4)+lock(3)=64bit我們知道,在Java中,一切皆對象
  • 從現在開始,讓一切從頭來過
    從現在開始,讓一切從頭來過。放下過往的得失榮辱,接納所有的恩怨情仇。事已至此,再沒有什麼東西是自己不能夠放下的了。凡事自有因果,一切自有天意,發生在自己生命中的一切,無論是好是壞,都是自己吸引來的。自己要對這所有的一切承擔起全部的責任和後果。不再自我懷疑,不再自我否定。
  • 處級幹部辭職 稱把自己歸零了一切從頭再來(1)
    處級官員辭職「一切從頭再來」10月27日,一篇名為《就這麼任性,我辭去了市國土局副局長職務——為了忘卻的紀念》的文章在朋友圈廣為轉發。作者疑似雲南省普洱市國土資源局原黨組成員、副局長李青松。作者在文章中稱,他已於今年8月12日獲得雲南省國土廳黨組批准,辭去公職,「9月,單位停發了工資」。
  • Java面向對象之枚舉——enum
    Java面向對象之枚舉——enum引出枚舉首先來考慮這樣一個需求:判斷一個員工(Employee)在一周的哪一天休息。解決方案:定義一個類Weekday來表示周1到周日,在類中分別使用7個常量來表示周1到周日,代碼如下:
  • java創建對象的過程詳解(從內存角度分析)
    java對象的創建操作其實我在《JVM系列之類的加載機制》一文曾經提到過,包含兩個過程:類的初始化和實例化。為此為了理解的深入,我們還需要再來看一下類的生命周期。一張圖表示:從上面我們可以看到,對象的創建其實包含了初始化和使用兩個階段。有了這個印象之後,我們就能開始今天的文章了。
  • java開發工程師 javascript面向對象的初識
    冰凍三尺非一日之寒,希望大家在學習java的日子裡一定一定要堅持不懈,嚴格要求。多練,多問,多百度。祝大家早日成為一名優秀的軟體工程師! 那麼如果要向一個html頁面中寫入js代碼,就必須定義一個<script></script>標籤,所有的js代碼都在這個<script>標籤中。
  • 用Java創建對象的5種不同方式
    作為Java開發人員,我們通常每天創建許多對象,但是我們始終使用依賴管理系統(例如Spring)來創建這些對象。但是,還有更多創建對象的方法,我們將在本文中進行研究。用Java創建對象的共有五種方法,下面將通過示例說明這些方法,然後介紹創建對象的行的字節碼。
  • 談談 Java 開發中的對象拷貝
    這兩個對象實例有可能是同一個類的兩個實例,也可能是不同類的兩個實例,但是他們的屬相名稱相同。例如DO、DTO、VO、DAO等,這些實體的意義請查看DDD中分層架構。本文主要介紹幾種對象拷貝的方法1. 對象拷貝對象拷貝分為深拷貝和淺拷貝。根據使用場景進行不同選擇。
  • 每日一課 | 從Java中的文件讀取對象
    在此示例中,您將學習如何從保存的文件中讀取對象或如何反序列化序列化的文件
  • 每日一課 | 如何將Java對象讀取和寫入文件
    一旦轉換為字節流,就可以將這些對象寫入文件。反向過程稱為反序列化。如果Java對象的類或其任何超類實現java.io.Serializable接口或其子接口java.io.Externalizable ,則該對象是可序列化的。1.
  • Java面向對象程序設計的基本概念
    人們將對象的靜態特徵抽象為屬性,用數據來描述,在 Java 語言中稱之為變量;人們將對象的動態特徵抽象為行為,用一組代碼來表示,完成對數據的操作,在 Java 語言中稱之為方法。一個對象由一組屬性和一組對屬性進行操作的方法構成。將具有相同屬性及相同行為的一組對象稱為類。廣義地講,具有共同性質的事物的集合就稱為類。
  • 「JAVA」屬性、路徑分隔符有何不同?file對象創建,文件過濾器
    讓我們來一起看看Java I/O的成長曆程:01屬性分隔符、路徑分隔符屬性分隔符,用於分隔連續多個路徑字符串的分隔符,比如:java -cp test.jar;abc.jar HelloWorld在上述路徑字符串中,屬性分隔符是「;」;
  • 成都哪個java培訓學校好?轉行Java開發該如何學習?
    很多沒有接觸過java的朋友,在即將來臨的2020年可能想要學習java,但苦於不知道從何處入手,怎麼學習,因為java語言涉及的東西太多了,不是簡簡單單就能學會的,那麼,應該怎麼學習java呢?成都達內小編分享幾個學習步驟供大家參考一下!
  • 給Java新手的一些建議——Java知識點歸納(Java基礎部分)
    寫這篇文章的目的是想總結一下自己這麼多年來使用java的一些心得體會,主要是和一些java基礎知識點相關的,所以也希望能分享給剛剛入門的Java程式設計師和打算入Java開發這個行當的準新手們,希望可以給大家一些經驗,能讓大家更好學習和使用Java。這次介紹的主要內容是和J2SE相關的部分,另外,會在以後再介紹些J2EE相關的、和Java中各個框架相關的內容。
  • Java面向對象之final、abstract抽象、和變量生命周期
    下面,咱們就來一一看看吧!構造方法不能都定義成私有的,否則不能有子類,因為子類構造器無法調用其構造器(創建子類對象前先調用父類構造方法)。抽象類不能使用final修飾,因為其必須有子類重寫其抽象方法,抽象方法才能得以實現。
  • Java到底是不是一種純面向對象語言?
    在Java世界內一切都是對象,甚至包括字符串(String)這些都是對象(在 C 語言中,字符串是字符數組),那時候,我認為 Java是一種面向對象的語言。但是在後來,我在網際網路站上陸續看到不少開發者說 「Java實際上不是純粹的面向對象,因為並不是所有的東西在 Java 世界都是一個對象」。
  • 「JAVA」萬字長篇詳述字節碼對象與反射機制完成動態編程
    在Java 中有兩種方式可以得到運行時信息:一是通過RTTI,即Run-Time Type Identification,這種方式假設我們在程序編寫時就已經知道了所有對象的類型,主要是通過字節碼對象Class來獲取;二是通過「反射」機制,反射提供一組api,通過調用api,便能獲取運行時的類信息;Java 中通過java.lang.reflect類庫來支持反射;