1.用引用操作对象

             操纵的标识符其实是对象的“引用”。如遥控器(引用)操作电视(对象)。

    (1)创建一个String引用,这里创建的只是引用并不是对象(拥有一个引用并不需要有一个对象与它关联)。

String s;

     (2)创建一个引用同时进行初始化。

String s="qwer";

     (3)创建一个引用,并与一个新的对象相关联,用操作符new实现。

String s = new String("qwer");

 

 2.存储数据

     (1)寄存器:最快的存储,位于处理器内部,但寄存器的数量极其有限,根据需求进行分配,不能直接控制,在程序过程中也感受不到。

     (2)堆栈:位于RAM(随机访问储存器)中。通过堆栈指针可以从处理器获得直接支持,若堆栈指针向下移动,分配新的内存,向上移动释放内存。必须知道堆栈内所有项目的生命周期,以便上下移动堆栈指针。某些JAVA数据存储于堆栈中,特别是对象引用,但JAVA对象并不存在其中。

     (3)堆:一种通用的内存池,也位于RAM中,存放所有的JAVA对象。优点是不需要知道存储数据生命周期。缺点是存储分配和清理比堆栈存储分配需要更多时间。

     (4)常量存储:常量值通常直接存放在程序代码内部。也可以存放在ROM(只读存储器)中

     (5)非RAM存储:数据存活于程序之外,不受程序控制,程序没有运行时也存在。流对象和持久化对象。在流对象中,对象转化成字节流,通常发给另一台机器,持久化对象中,对象被存放在磁盘中。原理是把对象转化成可以存放在其他媒介上的事物,需要时可恢复成常规的,基于RAM的对象。

3.基本类型

      不用new来创建变量,而是创建一个并非引用的“自动”变量,这个变量直接存储“值”,并置于堆栈中,更加高效。 

     

基本类型 大小 最小值 最大值 包装器类型
boolean -- -- -- Boolean
char 16 bits Unicode 0 Unicode 2^16   -1 Character
byte 8 bits -128 127  (2^7 -1) Byte
short 16 bits -2^15 2^15 -1 Short
int 32 bits -2^31 2^31 -1 Integer
long 64 bits -2^63 2^63 -1 Long
float 32 bits 1.4E - 45 3.4028235E38 Float
double 64 bits 4.9E - 324 1.7976931348623157E308 Double
void -- -- -- Void

     基本类型拥有的包装器类,可以在堆中创建一个非基本对象,用来表示对应的基本类型。

//方式一
char c='x';
Character ch = new Character(c);

//方式二
Character ch = new Character('x');

//方式三(自动包装功能,可以自动地把基本类型转化为包装器类型)
Character ch = 'x';

//反向转换
char x = ch;

高精度数字

       BigInteger,BigDecimal ,属于包装器类型,但是没有对应的基本类型。能作用于int、float的功能也能作用于BigInteger、BigDecimal,不过必须以方法调用的方式取代运算符的方式来实现,这样复杂了很多,速度更慢,用速度换取了精度。

数组:

       Java保证初始化数组,而且不能在它的范围之外被访问。

       当创建一个数组对象时,就是创建一个引用数组,并且每个引用都会自动被初始化成一个特定值,该值拥有自己的关键字null。在使用任何引用前,必须为引用指定一个对象。

       还可以创建用来存放基本数据类型的数组,编译器也能保证这种数组的初始化,因为它会将这种数组所占的内存全部置零。

4.对象的作用域

在C和C++中将一个较大作用域的变量隐藏起来的做法,在JAVA中是不允许的,如:

{
    int x=12;
    {
        int x=96;
    }
}

       Java对象不具备和基本类型一样的生命周期,当用new创建一个对象时,它可以存活于作用域之外。用new创建的对象,只要你需要,就可以一直保留下去。我们无法在作用域之外访问这个对象,因为对它的唯一引用已超出了作用域范围。

5.创建新的数据类型:类

       可以在类中创建两种类型额元素,字段和方法。字段可以是任何类型的对象,可以通过其引用与其通信;也可以是基本类型。

       若成员变量是基本数据类型,Java会确保给其默认值,即使没有初始化,也会有默认值,如果是局部变量(并非某个类的字段)则不成立。

       一切都是对象总结

        方法名和参数列表(称为方法签名)唯一标识出某个方法。

        参数传递的其实是引用。

static关键字:当声明一个事物是static时,这个域或方法不会与包含它的类的任何对象实例产生关联。

 

 

相关文章:

  • 2021-08-03
  • 2022-12-23
  • 2021-11-24
  • 2021-11-25
  • 2021-07-11
  • 2022-12-23
  • 2021-11-01
猜你喜欢
  • 2021-11-18
  • 2021-10-08
  • 2021-05-20
  • 2022-01-30
  • 2022-12-23
  • 2021-11-21
  • 2021-11-23
相关资源
相似解决方案