Jadual Kandungan
写在前面
卡片01、用引用操作对象
卡片02、程序运行时,内存是怎样分配的呢?
Rumah Java javaTutorial Java编程思想:用引用操作对象、内存在程序运行时的分配方式

Java编程思想:用引用操作对象、内存在程序运行时的分配方式

Aug 03, 2018 pm 02:56 PM
java Idea pengaturcaraan

写在前面

首先我想说的是 Java编程思想——知识卡片 将是一系列文章,文章的内容是我阅读《Java编程思想》这本书的心得体会,那么我为什么要写这一系列的文章呢?原因有一下几个方面:

  • 重拾Java,因工作项目的特殊性,我已经一年多没使用Java语言了。

  • 想利用自己的业余时间写点东西帮助那些需要帮助的人。

  • 将整本书的知识碎片化,充分利用自己零碎的时间。

一般情况下,最新文章会在我的微信公众号:Java编程社区 更新,感兴趣的话呢,可以加加关注。
好了,我们开始进入正题:

卡片01、用引用操作对象

学Java的人都知道,Java是一门面向对象的语言(OOP),尽管Java是基于C++的,但是相比之下,Java是一种更“纯粹”的面向对象程序设计语言。正所谓“万物皆对象”,Java语言假设我们只进行面向对象的程序设计,也就是说,我们开始使用Java进行设计之前必须转换思想,将我们的注意力转换到对象上来。这个是我们使用Java语言的基本功。

每种编程语言都有自己的数据处理方式。有些时候,程序员必须时刻留意准备处理的是什么类型,是直接操纵元素,还是用某种基于特殊语法的间接表示来操纵对象?在C和C++里我们使用的是指针。在Java里这一切都得到了简化,因为“万物皆对象”,一切都被视为对象。尽管一切都看作对象,但操纵的标识符实际上是对象的一个引用。这里通过一个生活中的例子来帮助理解。生活中我们使用遥控器(引用)来操纵电视机(对象)。当要改变电视机的频道或音量时,实际操纵的是遥控器(引用),再由遥控器来控制电视(对象)。如果想在房间里四处走走,同时又能操纵电视机,那么只需携带遥控器(引用)而不是电视机(对象)
我们来创建一个String引用:

String str;
Salin selepas log masuk

这里的str只是一个引用,并非对象,引用是可以独立存在的,并不一定需要一个对象与之关联,就如即使没有电视机,遥控器也可以独立存在。但是上面这种创建并不安全,安全的做法是,我们创建引用的同时进行初始化。比如:

String str = "hello";
Salin selepas log masuk

卡片02、程序运行时,内存是怎样分配的呢?

程序在运行时,有五个不同的地方可以存储数据:

  • 1、寄存器:这是最快的存储区,因为他位于不同于其他存储区的地方--处理器内部。但是寄存器的数量及其有限,所以寄存器根据需求进行分配,你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。

  • 2、堆栈位于通用RAM(随机访问存储器)中,但通过堆栈指针可以从处理器那里获得直接支持。堆栈指针若向下移动,则分配新的内存;若向上移动,则释放那些内存。这是一种快速有效的分配存储的方法,仅次于寄存器。创建程序时,Java系统必须知道存储在堆栈内所有项的确切声明周期,以便上下移动堆栈指针。这一约束限制了程序的灵活性,所以虽然有些Java数据存储在堆栈中--特别是对象引用,但是Java对象并不存储于其中。

  • 3、一种通用的内存池(也位于RAM区),用于存放所有的Java对象。堆不同于堆栈的好处是:编译器不需要知道存储的数据在堆里存活多长时间。因此,在堆里分配有很大的灵活性。当需要一个对象时,只需用new写一行简单的代码,当执行这行代码时,会自动在堆里进行存储分配。当然,为这种灵活性必须要付出相应的代价:用堆进行存储分配和清理可能比用堆栈进行存储分配需要更多的时间

  • 4、常量存储常量值通常直接存放在程序代码内部,这样做是安全的,因为他们永远不会被改变。有时在嵌入式系统中,常量会和其他部分隔离开,所以,在这种情况下,可以选择将其存放在ROM(只读存储器)中。

  • 5、非RAM存储:如果数据完全存活于程序之外,那么他可以不受程序的任何限制,在程序没有运行时也可以存在。其中两个基本的例子是:流对象和持久化对象,在“流对象”中,对象转化成字节流,通常被发送给另一台机器,在“持久化对象”中,对象被存放于磁盘上,因此即使程序终止,他们仍可以保持自己的状态。这种存储方式的技巧在于:把对象转化成可以存放在其他媒介上的事物,在需要时,可以恢复成常规的、基于RAM的对象。Java提供了对轻量级持久化的支持,而诸如JDBC和hibernate这样的机制提供了更加复杂的对在数据库中存储和读取对象信息的支持。

相关文章:

Java的编程思想总结

对Java的面对对象编程中对象和引用以及内部类的理解

Atas ialah kandungan terperinci Java编程思想:用引用操作对象、内存在程序运行时的分配方式. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Nombor Sempurna di Jawa Nombor Sempurna di Jawa Aug 30, 2024 pm 04:28 PM

Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Weka di Jawa Weka di Jawa Aug 30, 2024 pm 04:28 PM

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Nombor Smith di Jawa Nombor Smith di Jawa Aug 30, 2024 pm 04:28 PM

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Soalan Temuduga Java Spring Soalan Temuduga Java Spring Aug 30, 2024 pm 04:29 PM

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Cuti atau kembali dari Java 8 Stream Foreach? Cuti atau kembali dari Java 8 Stream Foreach? Feb 07, 2025 pm 12:09 PM

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

TimeStamp to Date in Java TimeStamp to Date in Java Aug 30, 2024 pm 04:28 PM

Panduan untuk TimeStamp to Date di Java. Di sini kita juga membincangkan pengenalan dan cara menukar cap waktu kepada tarikh dalam java bersama-sama dengan contoh.

Program Java untuk mencari kelantangan kapsul Program Java untuk mencari kelantangan kapsul Feb 07, 2025 am 11:37 AM

Kapsul adalah angka geometri tiga dimensi, terdiri daripada silinder dan hemisfera di kedua-dua hujungnya. Jumlah kapsul boleh dikira dengan menambahkan isipadu silinder dan jumlah hemisfera di kedua -dua hujungnya. Tutorial ini akan membincangkan cara mengira jumlah kapsul yang diberikan dalam Java menggunakan kaedah yang berbeza. Formula volum kapsul Formula untuk jumlah kapsul adalah seperti berikut: Kelantangan kapsul = isipadu isipadu silinder Dua jumlah hemisfera dalam, R: Radius hemisfera. H: Ketinggian silinder (tidak termasuk hemisfera). Contoh 1 masukkan Jejari = 5 unit Ketinggian = 10 unit Output Jilid = 1570.8 Unit padu menjelaskan Kirakan kelantangan menggunakan formula: Kelantangan = π × r2 × h (4

Bagaimana untuk menjalankan aplikasi boot musim bunga pertama anda di Spring Tool Suite? Bagaimana untuk menjalankan aplikasi boot musim bunga pertama anda di Spring Tool Suite? Feb 07, 2025 pm 12:11 PM

Spring Boot memudahkan penciptaan aplikasi Java yang mantap, berskala, dan siap pengeluaran, merevolusi pembangunan Java. Pendekatan "Konvensyen Lebih Konfigurasi", yang wujud pada ekosistem musim bunga, meminimumkan persediaan manual, Allo

See all articles