您的位置:首页 > 编程语言 > Java开发

Java基础——对象

2014-03-20 22:15 183 查看

引用  对象

String s; //这里只是一个引用,并不是对象

s = new String("abc");//一般通过new来创建一个新对象,并与s相关联

当然Java还有基本类型,也可以自行创建类型。
引用和对象可以形象的想象键盘(或者其他输入设备)和电脑,键盘是引用,电脑是对象,有一定的输入电脑才有相应的操作,也就是说键盘引用对电脑对象发出相应的请求才会有相应的相应结果,即调用对象的方法。此外,键盘引用是可以独立存在的,没有电脑对象也是可以的,但是单独一个键盘有什么用呢。所有一般我们都是要对引用进行初始化。


对象存储位置

寄存器。cpu内部,是最快的存储区,但是也是数量最少最昂贵的,所有寄存器是按需分配(根据需求进行分配)。而且是不能直接控制;
堆栈。是仅次寄存器有效快速的存储器,在此堆栈的所有项必须有确切的生命周期,以便垃圾回收机制回收内存。引用就是存储在堆栈中;
堆。一种通用内存池,存储所有Java对象。在堆中的数据编译器是不需要知道它电费存活周期的。new一个对象就会自动在堆中分配内存,但是这种存储方法会比堆栈的内存分配和内存清理花费更多的时间。
常量存储。常量不可变性,决定了为了安全,常量只能存储于ROM(只读存储器)中。
非RAM存储。不存活于程序中,不受程序的控制,程序不运行时也可以存在。比如:流对象和持久化对象。
基本类型

基本类型是一种特殊的类型,在java中基本类型是不用new来创建对象,而是创建了一个变量,可以直接存储变量值,即是赋值,并是存储于堆栈中而非堆中,这是区别于对象。Java每种基本类型存储空间的大小事固定的。也正是Java可移植性的一个原因。

基本类型的成员变量即是没有初始化,也会有一个默认值,比如boolean类型的变量就是false,int类型的变量就是0;但是如果你是在方法中定义基本变量就一定要先初始化了,否则对变量的操作都是会报错的。

Java还提供了两个用来高精度计算的类:BigInteger和BigDecimal,这两个类有基本类型的操作,是以速度来换取精度。

数组

几乎所有程序语言都是有数组的,java也不例外。创建一个数组对象,实际是是创建了一个引用数组,引用存储了特定的值,是数组头内存地址或者为null,为null时即是没有指向某个对象。Java有自己的数组范围检查,java是要确保数组会被初始化,而且不能在它的范围外访问数组。这也是以少量的内存开销以及运行时下标检查为代价来换取java的安全性的效率的提高。

自定义类

也就是可以自定义类的类型,自己决定类的字段和方法。

方法:由名称、参数、返回值和方法体组成,决定了对象能够接受的消息。方法名和参数是方法的签名(唯一标识)。引用调用方法也就是发送消息给对象,然后对象做出相应的处理。

Java程序名字可见性

为了保证类名的独一无二,类名一般是包名+类的名称,包名建议是自己的域名。为了方便使用类,我们会用到import关键字导入类库或者类。

static关键字

一般new一个对象,数据存储空间才被分配,才能调用对象方法。但是我们还是需要一些特殊情况的。
如果一个字段或者方法是static的,也就意味着这个字段和方法就不会与包含它的那个类的任何实例对象关联在一起。也就是即是没有创建任何对象,也可以调用static方法和访问static字段。一般这样的字段和方法被称为类字段和类方法。
class StaticMember{
static int i = 0;
}


不管创建了多少个StaticMember对象,都是只有一个StaticMember.i存储空间,所有StaticMember对象共享同一i。static的字段对每个类来说都是一份存储空间,二非static字段则是每一个对象都有一个存储空间。

class StaticMethod{
static void staticMeth(){};
}
对于static方法,不用new创建对象,就可以直接调用方法,比如StaticMethod.staticMeth();
正如main()方法一样,确保了每个应用只有一个入口点。

PS:如果有什么错误请多多指教,有什么建议也希望大家多多赐教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 对象