在java中有一种被称为类类型的变量,它不同于基本类型变量存储值的方式。不管是基本变量还是类类型变量,都实现为一个内存位置。但是,由于基本变量所需的内存数量是相同的,所以系统可以给它设置一个固定的空间保持命名对象的变量。类类型变量则不同,由于它的长度不确定,从而使得系统难以给其分配一个固定的空间来保存命名对象的变量。因此,对于类类型变量,它存储的是对象的内存地址,而不是对象本身。下面举个例子加以证明:

/** 
 * Comments:类类型之间赋值的特点实例 
 * @author 韩国内部分工
 * Create Time:2013-09-12 
 * 
 */
public class StringTest { 
    private String str; 
    public String getStr() { 
        return str; 
    } 
    public void setStr(String str) { 
        this.str = str; 
    } 
    public static void main(String[] args) { 
        StringTest str1=new StringTest(); 
        StringTest str2=new StringTest(); 
        str1.setStr("111111"); 
        str2.setStr("222222"); 
        //类类型之间的赋值,是将str1的内存地址赋值给了str2,赋值后它俩指向了同一内存地址 
        str2=str1; 
        str2.setStr("333333"); 
        System.out.println(str1.getStr());      //输出结果为333333 
        System.out.println(str2.getStr());      //输出结果为333333 
    } 
}

从输出的结果可以看出,类类型变量并不是简单的将赋的值存储于命名对象中,而是将地址存放于类类型变量中。所以类类型变量之间的赋值语句赋值的是内存地址,赋值后两个变量指向同一地址

Java:类类型变量的更多相关文章

  1. Java 类的一些高级特征

    1. 面向对象的特征二:继承性 * 1.为什么要设计继承性? 继承的出现提高了代码的复用性. 继承的出现让类与类之间产生了关系,提供了多态的前提. * 2.通过"class A extend ...

  2. Java 类的一般特征

    1. 创建类的对象时的内存结构 用图来解释: 使用new 创建 a1 时,成员变量的值都是初始默认值. 然后显式的改变其属性的值. 创建a3 时,a3 是直接指向 a1, 即a3 = a1, 两个对象 ...

  3. java类与对象的动手动脑和其他小问题

    在Java中,我们可以通过组合一私有字段和一对get/set方法来定义一个属性.私有的变量,共有的方法. package sample; /** * 自定义Java类的示例 */ class MyCl ...

  4. Java类的定义及其实例化

    如果你不了解类和对象的概念,请猛击这里:Java类和对象的概念 类必须先定义才能使用.类是创建对象的模板,创建对象也叫类的实例化. 下面通过一个简单的例子来理解Java中类的定义: public cl ...

  5. 如何用Java类配置Spring MVC(不通过web.xml和XML方式)

    DispatcherServlet是Spring MVC的核心,按照传统方式, 需要把它配置到web.xml中. 我个人比较不喜欢XML配置方式, XML看起来太累, 冗长繁琐. 还好借助于Servl ...

  6. jvm系列(一):java类的加载机制

    java类的加载机制 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装 ...

  7. java类与实例

    最近在看设计模式,感觉自己对java的三大特性的理解不够清晰,搞不清楚抽象类.接口.泛型的用处和优缺点.设计模式学了一半,想着还是停下来脑补一下java的基础,就从java对象开始吧. 一.java对 ...

  8. oracle调用JAVA类的方法

    导入jar包 在oracle中导入需要的jar包,我们把编辑好的java类打成jar包,直接在oarcle里面写简单的调用就可以了,  1.操作系统需要拥有支持loadjava命令的jdk.  2.加 ...

  9. Java 类的实例变量初始化的过程 静态块、非静态块、构造函数的加载顺序

    先看一道Java面试题: public class Baset { private String baseName = "base"; // 构造方法 public Baset() ...

随机推荐

  1. 安卓开发中Spinner控件的使用

    在安卓手机应用开发中,Spinner对象常用方法有以下五种. 用法 1 :以资源方式,静态展示 Spinner 选项 用法 2 :以代码方式,动态展示 Spinner 选项 用法 3 :同时显示图片和 ...

  2. 微服务时代之2017年五军之战:Net PHP谁先死

    其实我一直是个懒人,开博也有好几年了,但是一直懒得写文章,主要怕打字麻烦, 手机都是用讯飞语音输入的, 可惜博客里面很多专业性的词语,用讯飞也不大好,另外无论在家还是在公司,开个语音一本正经的叽叽叽, ...

  3. html&css笔记(1)

    本文是在阅读<head first html and css>时记下的一些需要注意的地方. 第3章 浏览器不会显示html文本中的空白符和换行. 标签的属性用来定义一个元素.p53 hre ...

  4. 如何解决修改AzureVM默认RDP端口后,连不上的问题

    Enter-PSSession -ComputerName 139.219.135.45 -Port 5986 -Authentication Negotiate -Credential 'mssto ...

  5. 【Spring 核心】装配bean(二) JavaConfig装配

    前面介绍完了组件扫描和自动装配,这里再来看一下装配bean的另一种方式JavaConfig. 包路径: src/main/java com.bonc-|--config--|--CDPlayerCon ...

  6. DesignPatternPrinciple(设计模式原则)二

    设计模式六大原则(5):迪米特法则 定义:一个对象应该对其他对象保持最少的了解. 问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大. 解决方案:尽量降低类与类之 ...

  7. WireX:Android智能手机组成的DDoS僵尸网络

    阿里聚安全小编曾多次报道了官方应用市场出现恶意软件的事件,让大家在下载APP的时候三思而后行. 最近多家安全公司组成的安全研究小组发现了一个新的.传播广泛的僵尸网络,它是由成千上万的Android智能 ...

  8. 高CPU业务场景下的任务分发方案Gearman搭建一览

      Gearman是当年LiveJournal用来做图片resize的,大家也明白图片resize是一个高CPU的操作,如果让web网站去做这个高CPU的功能,有可能会拖垮你的 web应用,那本篇我们 ...

  9. nopCommerce 3.9 大波浪系列 之 使用Redis主从高可用缓存

    一.概述 nop支持Redis作为缓存,Redis出众的性能在企业中得到了广泛的应用.Redis支持主从复制,HA,集群. 一般来说,只有一台Redis是不可行的,原因如下: 单台Redis服务器会发 ...

  10. Jsp/html页面删除前进行删除提示

    HTML代码 <body> <a href="javascript:if(window.confirm('是否?')){window.location.href='test ...