Java编程思想初学

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a527219336/article/details/50706809

一切都是对象


用引用操纵对象

一切都可以视为是对象,但是对象要如何操纵呢?
首先要创建一个对象的一个引用

String s;

这时创建的只是引用,并不是对象,默认值为null,此时如果去操纵这个对象,将会发生错误。因此需要进行初始化

String s = "this is a string.";

上面的代码新建了一个String对象,并把它与s进行了关联。


创建对象

创建对象,通常用new关键字实现

String s = new String("this is another string.");

对象的可以存储在五个不同的地方

  1. 寄存器:这是最快的存储区。因为在处理器内部,但是寄存器的数目有限。
  2. 堆栈: 位于通用RAM(随机访问存储器),速度仅次于寄存器,对象的引用存储在这里,但是Java对象不存储于其中。
  3. :一种通用的内存池(也位于RAM区),用于存放所有的Java对象。相对于堆栈,编译器不需要知道存储的数据在堆中存活多久时间,不过存储分配和清理会花更多时间。
  4. 常量存储:常量值通常直接存放在程序代码内部
  5. 非RAM存储:数据存活于程序之外,其中两个基本的例子是流对象持久化对象。在流对象中,对象转成字节流,在持久化对象中,对象存放于磁盘上。
常量池

看如下例子:

String s1 = "abc";
String s2 = "abc";

这种直接赋值给String的方式新建的只有一个对象,这是因为”abc”对象在编译器就已经确定,存储的位置是常量存储,s1、s2引用的是同一个对象。

String s1 = new String("abc");
String s2 = new String("abc");

这里创建了2个对象,存储位置是
关于String与常量池,请参照Java中的String与常量池

特例: 基本类型

Java中有8个基本类型,创建变量不用new,而是创建一个并非是引用的“自动”变量,存储于堆栈中。
基本类型所占的空间大小确定,其所占存储空间大小的不变性使Java更具可移植性。

8个基本类型
boolean类型所占存储空间的大小没有明确指定,仅定义为能够取字面值true或false。
基本类型具有包装器类。
自动装箱

char c = 'x';
Character ch = c;

自动拆箱

Character ch = new Character('x');
char c = ch;

详情请看Java 自动装箱和拆箱

高精度数字

Java中提供了连个用于高精度计算的类:BigInteger和BigDecimal.在线文档

数组

当创建一个数组对象是,实际上创建了一个引用数组,初始化为null。当试图使用一个还是null的数组时,运行时将会报错。这更c和c++不一样,因为Java的主要目标之一就是安全性。

永远不需要销毁对象

 作用域

{
    int x = 12;
    {
        int q = 96;
    }
    //q = 10; 超出作用域,因为在花括号内创建的基本类型的作用域在花括号内。
}
{
    int x = 12;
    {
        int x = 96;//这样定义在Java中是非法的
    }
}

对象的作用域

{
    String s = new String("string");
}

new 创建一个Java对象时,它可以存活于作用域之外,但是如果没有引用指向该对象的话,这个对象就会被垃圾回收器回收。

总结

这里简单介绍了Java的对象。


以上皆个人学习的总结,如有不对之处,欢迎指出。邮箱:527219336@qq.com

展开阅读全文

没有更多推荐了,返回首页