今天是我学习编程以来第一次写博客,记下平日学习所得,本来这几日都在学习web框架 但觉得梳理一下之前所学很有必要。毕竟之前学习Java感觉很粗略只是以考试为目的。所以就以《Thinking in Java》一书为主对Java从头巩固一下。查缺补漏的同时更能加深理解。

  一切都是对象

  在C++中我们知道用指针操控对象,但在Java中几乎一切都是对象,这就简化了语法。但需要注意的是Java中我们是通过操纵标识符来操纵对象。也就是标识符其实是对对象的一个引用。一定要有引用才能操纵对象,但是有引用可以没对象。也就是我们可以拥有一个引用但不一定要与一个对象相关联。例如

 String s;

  此事给s发送信息就会报错,因为这个引用是空的。所以编写程序时为了安全通常创建引用都要初始化。

  而当我们创建引用时通常用new操作符来关联一个对象。而且new不仅创建了对象还给出了怎样产生这个对象的信息。所以在Java中所有的对象都是我们自己创建的。Java提供了大量类型我们自己也可以创建类型。但是这些类型有些程序设计中会经常用到需要特殊对待,这一系列类型就是基本类型。而之所以特殊对待是因为new是将对象存储在堆中。而这对一些简单的小的变量不是很有效。所以对这种类型Java与C++一样是创建了一个不是引用的变量,这个变量储值并直接置于堆栈中。所以每种基本类型的存储空间大小是不变的。每个基本类型都有包装器类可以在堆中创建与基本类型对应的对象,而在之后我会详述包装基本类型的原因。

  Java中值得注意的一点是我们不需要去销毁对象,所有的清理工作都由Java自己去完成。

    { String s = new String("1"); }//作用域终点 引用s在作用域终点消失了,而s指向的对象仍占据内存空间。实际上用new创建的对象是会一直保留下去,只要你需要,因为Java本身的垃圾回收机制所以我们不需担心释放内存的事。

  类

  既然Java中一切都是对象,那么我们就用类来决定一类对象的外观和行为。而在Java中,我们所做的工作就是定义类,产生那些类的对象以及发送信息给那些对象。而定义一个类就可以在类中设置两种元素:字段和方法。而当类的某个成员是基本类型时且没有初始化Java也会给他一个默认值。但这种初始化的方法并不适用于方法中。

  第一次写博不太懂排版,也不想写太多,权当笔记了。

对Java对象的认识与理解的更多相关文章

  1. 理解Java对象序列化(二)

    关于Java序列化的文章早已是汗牛充栋了,本文是对我个人过往学习,理解及应用Java序列化的一个总结.此文内容涉及Java序列化的基本原理,以及多种方法对序列化形式进行定制.在撰写本文时,既参考了Th ...

  2. 深入理解Java对象的创建过程:类的初始化与实例化

    摘要: 在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.在实例化一个对象时,JVM首先会检查相关类型是否已经加载并初始化,如果没有,则JVM立即进行加载并调用类 ...

  3. java对象深复制、浅复制(深拷贝、浅拷贝)的理解

    先看一个例子 User user1 = new User(); user1.setId("111"); Map<String, User> map1 = new Has ...

  4. 深入理解Java对象序列化

    关于Java序列化的文章早已是汗牛充栋了,本文是对我个人过往学习,理解及应用Java序列化的一个总结.此文内容涉及Java序列化的基本原理,以及多种方法对序列化形式进行定制.在撰写本文时,既参考了Th ...

  5. 【深入理解JVM】:Java对象的创建、内存布局、访问定位

    对象的创建 一个简单的创建对象语句Clazz instance = new Clazz();包含的主要过程包括了类加载检查.对象分配内存.并发处理.内存空间初始化.对象设置.执行ini方法等. 主要流 ...

  6. (转)深入理解Java对象的创建过程

    参考来源:http://blog.csdn.net/justloveyou_/article/details/72466416 摘要: 在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一 ...

  7. Java对象与对象引用变量的理解

    Java对象及对象引用 首先定义一个简单的类: class User{ int userId; String userName; } 我们在创建对象时,通常会写: User user = new Us ...

  8. 理解Java对象序列化【转】

      原文链接:http://www.blogjava.net/jiangshachina/archive/2012/02/13/369898.html 关于Java序列化的文章早已是汗牛充栋了,本文是 ...

  9. 深入理解Java对象

    深入理解Java对象(理清关系) 1.对象的创建过程: 所有创建过程如下所示: new 类名 根据new的参数在常量池中定位一个类的符号引用. 如果没有找到这个符号引用,说明类还没有被加载,则进行类的 ...

随机推荐

  1. java bitSet简单使用

    package Contain; import java.util.BitSet; public class MyBitset { public static void main(String[] a ...

  2. position和BFC

    一.关于position流定位:不能通过left/top属性来进行定位(那用什么定位),上下排列的元素纵向边距会被合并,左右元素横向边距不会合并.浮动定位:脱离文本流,就好像不在父元素中,像是浮在父元 ...

  3. 使用单例模式来打造ActivityManager类

    单例(Singleton)模式 定义 单例模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的实例对象.也就是说,在整个程序空间中,该类只存在一个实例对象. GoF对单例模式的定义是: ...

  4. C#自定义异常

    继承自System.ApplicationException类,并使用Exception作为自定义异常类名的结尾 三个构造函数:一个无参构造函数:一个字符串参数的构造函数:一个字符串参数,一个内部异常 ...

  5. maven 环境变量 设置

    Maven安装与配置   一.需要准备的东西 1. JDK 2. Eclipse 3. Maven程序包 二.下载与安装 1. 前往https://maven.apache.org/download. ...

  6. 插入排序_c++

    插入排序_c++ GitHub 文解 插入排序的核心思想是针对于 N 个元素进行排序时,共进行 K = (N-1) 次排序,第 M 次排序时将第 M + 1 个元素插入前 M 个元素中进行排序. 图解 ...

  7. Vue.js与 ASP.NET Core 服务端渲染功能整合

    http://mgyongyosi.com/2016/Vuejs-server-side-rendering-with-aspnet-core/ 原作者:Mihály Gyöngyösi 译者:oop ...

  8. go加密算法:CBC对称加密(一)--3DES/AES

    其实对称加密中的:DES\3DES\AES 采取的加解密步骤一致,只是小的细节不太一样.大家多看看就能写出来了 // rsao1.go package main import ( "byte ...

  9. company.scss

    .company{ @extend .layout; width:100%; h3{ display: block; margin: 20px 0; text-align: left; } .comp ...

  10. eval函数的作用

    eval函数的作用是去掉字符串最外侧的引号,并按照Python的语法执行去掉引号后的字符内容. [实例1] x=eval("12+36")print(x)  #结果为48此例中,去 ...