类实例化可生成对象,实例方法就是对象方法,实例变量就是对象属性。一个对象的生命周期包括三个阶段:创建、使用和销毁。

创建对象

创建对象包括两个步骤:声明和实例化。

1.声明

声明对象与声明普通变量没有区别,语法格式如下:

type objectName;

其中type是引用类型,即类、接口和数组。示例代码如下:

String name;

该语句声明了字符串类型对象name。可以声明并不为对象分配内存空间,而只是分配一个引用。

2.实例化

实例化过程分为两个阶段:为对象分配内存空间和初始化对象,首先使用new运算符为对象分配内存空间,然后再调用构造方法初始化对象。示例代码如下:

String name;

name= new String("Hello World");

代码中String("Hello World")表达式就是调用String的构造方法。初始化完成之后如下图所示:

空对象

一个引用变量没有通过new分配内存空间,这个对象就是空对象,Java使用关键字null表示空对象。示例代码如下:

String name =null;

name="Hello World";

引用变量默认值是null。当试图调用一个空对象的实例变量或实例方法时,会抛出空指针异常NullPointerException,如下代码所示:

String name =null;

//输出null字符串System.out.println(name);//调用length()方法int len = name.length();①

但是代码运行到第①行时,系统会抛出异常。这是因为调用length()方法时,name是空对象。程序员应该避免调用空对象的成员变量和方法,代码如下:

//判断对象是否为null

if(name !=null){int len = name.length();}

提示产生空对象有两种可能性:第一是程序员自己忘记了实例化,第二是空对象是别人传递过来的。程序员必须防止第一种情况的发生,应该仔细检查自己的代码,为自己创建的所有对象进行实例化并初始化。第二种情况需要通过判断对象非null进行避免。

避免创建不必要的对象

(1)注意String是有常量池的,它实际上是通过private final char[]来存放的,所以它是不可变的,只有第一次使用这个字符串组合的时候才进入常量池:new String("abc");实际上是有两个字符串对象,"abc"是编译期存在,它已经进入常量池了;

(2)对于Calendar这样的实例化代价较大的对象考虑尽量复用;

(3)使用自动装箱类型一定要特别小心,以免在循环中因为自动装箱而创建大量对象,能用基本类型就不要用装箱类型;

(4)小对象的创建和销毁代价是很小的,因此,使用对象池的时候一定要考虑是不是值得,使用对象池管理不当也可能造成内存泄漏。

对象销毁

对象不再使用时应该销毁。C++语言对象是通过delete语句手动释放,Java语言对象是由垃圾回收器(Garbage Collection)收集然后释放,程序员不用关心释放的细节。自动内存管理是现代计算机语言发展趋势,例如:C#语言的垃圾回收,Objective-C和Swift语言的ARC(内存自动引用计数管理)。

垃圾回收器(Garbage Collection)的工作原理是:当一个对象的引用不存在时,认为该对象不再需要,垃圾回收器自动扫描对象的动态内存区,把没有引用的对象作为垃圾收集起来并释放。

java 注销变量_[ Java学习基础 ] Java对象的创建和销毁相关推荐

  1. macbook配置java环境变量_配置mac上Java环境变量

    从ubuntu上转到mac上来做开发,一切配置都要重新开始 1. 下载jre http://www.oracle.com/technetwork/java/javase/downloads/index ...

  2. 分类型变量预测连续型变量_终于弄清楚java的变量与类型了!

    为了更好的巩固java语言学习中的基础知识,特意为大家精心整理了java的变量与类型的基础知识,希望可以帮助到大家! 1.变量与类型 1.1整型变量(int) 代码示例: int a=2;//定义一个 ...

  3. 有python基础学习java简单吗_【Python】Java程序员学习Python(三)— 基础入门

    一闪一闪亮晶晶,满天都是小星星,挂在天上放光明,好像许多小眼睛.不要问我为什么喜欢这首歌,我不会告诉你是因为有人用口琴吹给我听. 一.Python学习文档与资料 一般来说文档的资料总是最权威,最全面的 ...

  4. java 判断类型_如何快速入门Java编程学习(干货)

    一.初识Java 1.生活中的程序: 从起床到教室上课的过程 穿衣打扮>起床>洗漱>出宿舍>>吃早餐>到教室 按照特定的顺序去完成某一件事的过程我们叫做生活中的程序 ...

  5. java面向对象程序_面向对象编程基础(java)

    面向对象编程基础 1.1 面向对象概述 在程序开发初期,大家使用的是结构化开发语言,也就是面向过程(opp),但随着市场需求剧增,软件的规模也越来越大,结构化语言的弊端也暴露出来. 开发周期无休止的拖 ...

  6. java编程学习方法_在线学习Java编程的最佳方法

    java编程学习方法 1.简介 Java是使用最广泛的编程语言之一. 根据Github的最新报告 ,Java被列为仅次于JavaScript的第二大最常用的编程语言. 掌握Java的人有很多话题. 好 ...

  7. java 02-cf_cf活动如何设置java环境变量_如何设置java环境变量

    cf助手怎么连接wifi_连接无线网设置 对于刚刚学习java的win7用户来说,首先要学会安装jdk和配置java环境变量,这是学习java的唯一途径,否则编写的代码运行时会出现bug.关于这一点, ...

  8. java怎么访问静态属性_Java基础——java静态变量面试题

    Java面试中主要考察的就是应聘者的基础知识的掌握情况,静态变量是属于静态存储方式,是java中基础性的内容.下面就为大家准备了10道java静态变量面试题,希望可以帮助到有面试需要的朋友们. 1.s ...

  9. 为什么要设置java环境变量_为什么要配置JDK环境变量?

    因为电脑不知道javac这个命令是在C:\Program Files\Java\jdk1.8.0_65\bin\的这个路径下面,所以我们要设置好环境变量,来让电脑知道其路径. 1. path(环境变量 ...

最新文章

  1. java宠物医院_java宠物医院管理系统
  2. 仅需6步,教你轻易撕掉app开发框架的神秘面纱(2):MVP比MVC更好吗
  3. Android 动画汇总-自定义动画
  4. ICCV 2019 | COCO-GAN:通过条件坐标的部分图像生成
  5. php 原生多图上传,php 原生多图文件上传
  6. html 横屏内容显示不全_“屏”什么喜欢你,车载显示器有哪些新玩法...
  7. echarts 多次通过setOption改变图形数据时 数据有时不进行变化
  8. OAUTH 2.0授权码授予
  9. 手机连接蓝牙扫码枪_宝马车与手机无法蓝牙连接的技术通报
  10. 不同系统可以用一个数据库服务器吗,同一个数据库 不同服务器吗
  11. 小伯利恒之歌(音乐)-Oh Little Town of Bethlehem(Virtual Tour)一次真实的旅行,看看耶稣的家乡...
  12. 管理感悟:软件公司不加班还搞什么软件
  13. Git-第N篇碰见的一些问题
  14. XXXfragment that is not a fragment错误,fragment认不出来
  15. 数学建模算法之动态规划
  16. 什么是EJB?EJB详解
  17. cad直线和圆弧倒角不相切_数控加工中心如何使用任意角度倒角C和倒圆角R功能的编程...
  18. Office2021安装全教程
  19. Linux桌面GUI系统的调度器应该怎么做才不卡顿呢?
  20. JAVA音程_下列选项中哪个音程是减三和弦?

热门文章

  1. 数组下标索引为什么从0开始
  2. HashMap中hash(Object key)原理(hashcode >>> 16)
  3. 教师节|祝所有可爱的讲师节日快乐!
  4. 小tip: base64:URL背景图片与web页面性能优化(转载)
  5. android studio butterknife配置,!!!!在AndroidStudio中添加butterknife插件
  6. linux 重庆mysql_Linux服务器上MYSQL的安装
  7. Springboot 整合jsp案例
  8. 极客时间App安卓版上线,让知识获取更加简单
  9. 读书笔记2013第16本:《删除:大数据取舍之道》
  10. 在 Centos 7 ssh登录出现locale异常