码迷,mamicode.com
首页 > 其他好文 > 详细

一切都是对象

时间:2020-06-06 16:53:57      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:static关键字   行数据   防止   支持   面向过程   编码风格   The   创建对象   随机   

用引用操作对象

每一种编程语言都有自己的操作内存中数据的方式。在Java中用引用来操作对象。

必须由你创建所有对象

一旦创建了一个引用,就希望它能与一个对象相关联(即这个引用指向这个对象)。在Java中通常使用new关键字来创建对象。

String sr = new String("xxgbl");

存储到什么地方

那么问题就出现了,当你创建的对象时候,内存是怎么分配的?
有五个不同的地方可以存储数据

寄存器

这是最快的存储区,它位于处理器内部。但寄存器的数量极其有限,所以寄存器根据需求进行分配。

堆栈(栈)

位于通用RAM(随机访问存储器)中,通过堆栈指针可以从处理器获得直接支持。堆栈指针向下移动,则分配新的内存;向上移动,则释放那些内存。这种存储方式速度仅次于寄存器。常用于存放对象引用和基本数据类型,而不用于存储对象。

一种通用内存池(也位于RANM区),用于存放所有Java对象。其中存放的数据由JVM自动进行管理。编译器不需要知道存储的数据在堆里存活多长。当需要一个对象时,使用new写一行代码,当执行这行代码时,会自动在堆里进行存储分配。同时,因为以上原因,用堆进行数据的存储分配和清理,需要花费更多的时间。

常量存储

常量(字符串常量和基本数据类型常量)通常保存在程序代码内部(常量池)。常量池在java用于保存在编译期已确定的,已编译的class文件中的一份数据。它包括了关于类,方法,接口等中的常量,也包括字符串常量,如String s = "java"这种申明方式。

非RAM存储

如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。两个基本的例子:流对象和持久化对象。在流对象中,对象转化成字节流,通常被发送给另一台机器。在持久化对象中,对象存放于磁盘上。

我们谈论更多是堆和栈,下面总结一下它们的相同和不同之处。
相同之处:
都位于RAM区,jvm会自动的管理堆和栈,不去要人为去控制。
不同之处:
1.存储的数据类型。栈中存放局部变量,堆中存放对象。
2.存储速度。栈比堆快。
3.灵活性。堆的灵活性优于栈。

永远不要销毁对象

作用域

在面向过程的语言中都有作用域这个概念,作用域决定了变量的可见性和周期性。

对象的作用域

当用new创建一个对象,除非它不再被引用,否则它会一直存在于内存中。Java中有一个垃圾回收器,用来监视所有用new创建的对象。当它确定对象不再被引用的时候,就会销毁这个对象,释放内存。从而解决内存泄露的问题。

构建一个Java程序

名字可见性

如果在程序的某个模块里使用了一个名字,而其他人在程序中另一个模块里也使用了相同的名字,Java是如何防止二者发生冲突呢?
Java使用包这个机制,防止命名冲突。包名的命名格式:反过来使用程序员自己的Internet域名。例如:com.xxgbl.dao.

static关键字

通常来说都是用new来创建对象。执行new来创建对象时,才会分配存储空间,外界才能调用对象的方法。
但有两种情形是上述方法不能解决的。这也是为什么会有static的原因。
1.只想为某特定域分配单一的存储空间。而不去考虑究竟要创建多少对象,甚至根本不考虑创建对象。
2.希望类中某个方法不与其对象相关联。即没有创建对象,也能调用这个方法。

注释

Java中有两种注释风格
1.单行注释

//注释内容

2.整体注释

/*
*注释内容
*/

编码风格

Java中使用驼峰式命名规则,类名的首字母要大写,如果类由多个单词组成,那么把它们并在一起,其中每个单词的首字母大写。
例如:

class AllTheColorOfTheRainbow
{
}

一切都是对象

标签:static关键字   行数据   防止   支持   面向过程   编码风格   The   创建对象   随机   

原文地址:https://www.cnblogs.com/xxgbl/p/13054408.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!