今天是我学习编程以来第一次写博客,记下平日学习所得,本来这几日都在学习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. HDU 2086 P - A1 = ?(推表达式)

    传送门:http://acm.geekxiong.tech/vjudge/contest/view.action?cid=14#problem/P P - A1 = ? Time Limit:1000 ...

  2. ConcurrentHashMap 中putIfAbsent 和put的区别

    putIfAbsent 源代码 public V putIfAbsent(K key, V value) { Segment<K,V> s; if (value == null) thro ...

  3. Lua中的数据结构

    1 数组:(lua习惯数组从1开始) a={} , do a[i]= end 2 阵和多维数组 : mt={}//新建一个表,表元素为表 ,N do mt[i]={}//新建一个表,里面的表元素为值 ...

  4. 第三天-零基础学习python

    1.回忆.列表方法,append(),extend(),insert() 2.列表获取元素: >>> member = ['HU','YU','HUYAN','HUJIAMU']   ...

  5. wamp 的配置

    一 . 安装  二 . 配置 安装过后打开E:\wamp2\wamp\bin\apache\Apache2.2.21\conf\httpd.conf 寻找Directoy 为文件路径 里面的默认文件删 ...

  6. 利用CSS3选择器实现表格的斑马纹

    要用到的Css3选择器 element:nth-child(number){ } 选择器匹配属于其父元素的第 number 个子元素 参数 Number odd 奇数 even 偶数 W3School ...

  7. js的单例

     对于 JS 来说,巨大的灵活性使得其可以有多种方式实现单例模式,使用闭包方式来模拟私有数据,按照其思路可得: var single = (function(){ var unique; functi ...

  8. 【sql server常用操作{增删改查}】

    use DB_x   go   drop database DB_y   create database DB_y --创建数据库   on primary --指定主数据文件   (   name= ...

  9. nodejs的安装配置

    Node.js安装及环境配置   一.安装环境 1.本机系统:Windows 10 Pro(64位)2.Node.js:v6.9.2LTS(64位) 二.安装Node.js步骤 1.下载对应你系统的N ...

  10. pm2命令管理启动的nodejs项目进程

    安装 npm install -g pm2 用法 $ npm install pm2 -g # 命令行安装 pm2 $ pm2 start app.js -i 4 #后台运行pm2,启动4个app.j ...