2.4.1 字段和方法

定义一个类时(我们在Java里的全部工作就是定义类、制作那些类的对象以及将消息发给那些对象),可在自己的类里设置两种类型的元素:数据成员(有时也叫“字段”)以及成员函数(通常叫“方法”)。其中,数据成员是一种对象(通过它的句柄与其通信),可以为任何类型。它也可以是主类型(并不是句柄)之一。如果是指向对象的一个句柄,则必须初始化那个句柄,用一种名为“构建器”(第4章会对此详述)的特殊函数将其与一个实际对象连接起来(就象早先看到的那样,使用new关键字)。但若是一种主类型,则可在类定义位置直接初始化(正如后面会看到的那样,句柄亦可在定义位置初始化)。

每个对象都为自己的数据成员保有存储空间;数据成员不会在对象之间共享。下面是定义了一些数据成员的类示例:

class DataOnly {

int i;

float f;

boolean b;

}

这个类并没有做任何实质性的事情,但我们可创建一个对象:

DataOnly d = new DataOnly();

默认值 i=0; b=false; f=0.0;

1. 主成员的默认值

若某个主数据类型属于一个类成员,那么即使不明确(显式)进行初始化,也可以保证它们获得一个默认值。

主类型 默认值

Boolean false

Char '\u0000'(null)

byte (byte)0

short (short)0

int 0

long 0L

float 0.0f

double 0.0d

一旦将变量作为类成员使用,就要特别注意由Java分配的默认值。这样做可保证主类型的成员变量肯定得到了初始化(C++不具备这一功能),可有效遏止多种相关的编程错误。

然而,这种保证却并不适用于“局部”变量——那些变量并非一个类的字段。所以,假若在一个函数定义中写入下述代码:

int x;

那么x会得到一些随机值(这与C和C++是一样的),不会自动初始化成零。我们责任是在正式使用x前分配一个适当的值。如果忘记,就会得到一条编译期错误,告诉我们变量可能尚未初始化。这种处理正是Java优于C++的表现之一。许多C++编译器会对变量未初始化发出警告,但在Java里却是错误。

特别注意:数组中系统会为每一个元素赋默认值,因为数组是对象,引用类型。

java对象默认值_java对象的默认值相关推荐

  1. java变量默认值_Java变量的默认值和初始化

    Java变量的默认值和初始化 学习自 <Thinking In Java> 变量的默认值 注意只有成员变量才有默认值,而局部变量必须要赋初值.为什么会这么设计,下面会讨论. 关于各种基础类 ...

  2. java对象生命周期_Java对象生命周期和类生命周期

    原标题:Java对象生命周期和类生命周期 作者:彭空空 链接:https://www.jianshu.com/p/25ea857ba78b 导读 对象的生命周期 类的加载机制 类的生命周期 类加载器 ...

  3. java 对象池 实现_Java对象池技术的原理及其实现

    看到一片有关于java 对象基础知识,故转载一下,同时学习一下. 摘 要 本文在分析对象池技术基本原理的基础上,给出了对象池技术的两种实现方式.还指出了使用对象池技术时所应注意的问题. 关键词 对象池 ...

  4. java对象的类型转换_Java对象的类型转换和属性复制

    1. 问题的源由 在J2EE项目开发中,会涉及很多领域模型对象,例如, VO (View Object) 视图对象,也叫展示对象,用于前端页面渲染所需要的数据 DTO (Data Transfer O ...

  5. java什么是对象如何创建对象_java对象的创建过程是什么

    java对象的创建过程: 类加载检查-->分配内存-->初始化零值-->设置对象头-->执行init方法 具体如下: 1.类加载检查 虚拟机遇到一条new指令时,先检查这个指令 ...

  6. json java对象 简书_Java 对象的 Json 化与反 Json 化

    最近在家里修习 Java 这项技能,估计快点满技能点儿了,很开心.不过遇到了一个问题,困扰了我一阵子.问题是这样的,我要写 Android App,与服务器交互.大家都知道 Javascript 不知 ...

  7. java 对象数组定义_Java对象数组定义与用法详解

    本文实例讲述了Java对象数组定义与用法.分享给大家供大家参考,具体如下: 所谓的对象数组,就是指包含了一组相关的对象,但是在对象数组的使用中一定要清楚一点:数组一定要先开辟空间,但是因为其是引用数据 ...

  8. java 对象向上转型_JAVA对象向上转型和向下转型

    今天做了一个测试的题目,发现自己还是很多问题没有静下心来做.很多问题是可以自己解决的但是自己一是没有读清题意,二是自己心里太急躁了.所以这个要自己应以为鉴! 对象的转型问题其实并不复杂,我们记住一句话 ...

  9. java exe 返回值_java调用exe返回值

    {// getAccount 方法,使用 get 方法; return accounts.get(index); } } Bank .java: package com.mybank.domain; ...

最新文章

  1. Java关键字final、static、this、super使用总结
  2. 剑指offer--2.替换空格
  3. 为 Angular service 注册 provider 的三种方式
  4. 苹果电脑系统、xcode更新时无法完成下载问题
  5. 《企业软件交付:敏捷与高效管理精要》——2.2 MyCo公司和MyProj企业软件交付项目...
  6. 智能优化算法:海鸥优化算法-附代码
  7. JS判断当前浏览器是否为IE内核
  8. 如何使用 CSS 使表格居中(快速指南)
  9. csv to dbf java_将csv文件转换为dbf
  10. oracle 闩锁(latch)概述
  11. 电脑PE系统无法进入,完整详细解决方案
  12. 苹果收购公司,为什么总是低调而高效---转自百度新闻|DTCHAT
  13. hEi2ANzja!;¥WgxjckTxiGZ¥ mp4_限时特价 | ¥499起享深圳东部华侨城两日双人游,住吃玩都有了!...
  14. Adobe国际认证|3D产品可视化:赢得内容竞赛的关键
  15. 程序员,不甘平凡又害怕努力… 1
  16. 一次大量enq: TX - row lock contention锁等待的问题
  17. 用DIV+CSS技术设计的鲜花网站(web前端网页制作课作业)
  18. Visual Studio Code 十大效率(摸鱼)插件
  19. 联诚发618年中盛典圆满收官!4小时突破3000万元!
  20. VS加载项目后无法打开源文件

热门文章

  1. 测试工程师如何使用 CODING 进行测试管理
  2. 一瓶水激起的“新秀老将”混战
  3. 随机森林分类算法python代码_独家 | 一文读懂随机森林的解释和实现(附python代码)...
  4. 光流(Optical flow)-视频分析基础概念
  5. MySQL|(单表查询操作)emp表 员工信息表练习
  6. 机房和云计算数据中心一样吗?有什么不同?
  7. OpenCV反解法数字微分纠正,生产单张航空影像的正射影像
  8. Android Studio调用百度API(图片文字识别)
  9. 我是怎么跟面试官聊Map集合的
  10. Unity3D游戏制作(三)——移动平台上的角色阴影制作