Java编程思想(一)——一切都是对象

《Java编程思想》 作者:Bruce Eckel

虽然这本书是经典,但是对于一个入门java,又没有其他编程经验的人来讲,实在难以看懂,前前后后看了三遍。

第一次什么都不懂的时候硬着头皮看,没看完,看了前面忘了后面,中间很多看不懂。第二次的时候,看懂了很多,但是不知道经典在何处。

第三次,是自己用了这门语言一年后,知道所谓的经典是什么,java的特性都在这里,这书不是从基础的JDK怎么装开始讲起。,大部头的一本书,现代人的话很少去翻了,其实可以当参考书,看哪一部分忘了,直接温故即可。一次在学校看到第四版英文版的,硬着头皮看,看着看着就看不懂了,英语重要就在这里。

一切都是对象。

我的一位朋友以前的签名是,我一直都在面向对象,可是现在连一个对象都没有。

(一)类引用

假如有一个类  电视机类 class TV;

class TV{
  int length;  //字段,也叫数据成员
  int point(){  //方法,也叫成员函数
    return 1;
  }
}

TV control , control是一个引用(reference),其实重新看C之后发现这引用就跟指针一样,少了个星号而已。

对象的创建用new。

TV Ccontrol = new TV();

同时,我在看数据结构书时候,注意到了初始化的问题。

TV Control;

此时的Control是对象的一个引用,不是对象本身,但是在赋值成某对象,即上面的初始化之前,其实是保存为null的特殊对象的引用。这也回答了,为什么你每次使用对象的时候,IDE会提示对象的未初始化。

(二)内存分配

这东西放哪里呢,那还是要像C一样看内存分配。

1) 寄存器 。 最快的存储区,处理器内部,根据需求分配,不能自己控制,但是C/C++可以用register。

2)栈(原文堆栈,其实应该翻译成栈更合适,和堆区分开来,因为英文的stack就是堆栈的意思)。 位于通用RAM(Random Access Machine,随机访问存储区,在操作系统,微机原理等计算机的基本组成中都有提到),速度仅次于寄存器。存放基本变量和引用,存在栈中的数据可以共享。但是,栈中的数据大小和生存周期必须确定,这是缺点。

栈存的一个是基本的数据类型,int i = 1; 其实i是一个指向int类型的引用。1存在栈中,i指向1的地址(作用和指针一个样),如果此时有int j = 1; 由于共享性,就不会再开辟

一个新的1的地址。直接让i和j指向同一个地址。

栈也存储对象的引用。

3)堆。存放所有的java对象。

4)常量存储。常量(注意常量和变量,int i =1是变量),字符串,静态区的东西存储在此。

5)非RAM存储。

再来看看一个有趣的对象equals和==问题。

TV Control;
//与C++不同的是,C++实际上创建了这个对象,留出了所需要的空间,而java只是创建某一个对象的存储地址的空间。
Control = new TV();
TV AnotherControl = Control;
//C++将所有的数据拷贝到Another中,而java只是把地址复制过去。
//所以两者是否==(java中实际上判断引用是否一致,即对象是否相同),既然地址一致,同一个对象,答案为ture。c++却用==来判断对象的数据是否相同,而java用的是equals,一般重写。

(三)作用域问题

{}作用域里决定了变量的声明周期,变量用于作用域之前,所以有时会犯一些低级错误,在作用域之外又再次使用该变量。就会出现can not be resolved,无法解析的问题了。

(四)第一个HelloWorld程序

程序的开头,要用import语句引入程序所需要的类,java.lang是默认导入进每个java文件的,之前一直奇怪lang是什么——language。

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

其实java也没有那么强大,看,简简单单的HelloWorld要写这么一堆不相关的东西。所以,还是根据需要选择你使用的语言。

(五)编码风格

类名用驼峰标识,首字母大写。几个单词的话就每个单词的首字母大写。

另外加上上次在Google看到的编程风格,

if else while 等语句的使用时,即使是空语句,也要加上{},更容易看。

Java编程思想(一)——一切都是对象

时间: 2024-12-29 21:54:08

Java编程思想(一)——一切都是对象的相关文章

JAVA编程思想(1) - 一切都是对象

-"如果我们说另一种不用的语言,那么我们就会发觉一个有些不同的世界" 1. 用引用操纵对象 每种编程语言都有自己的数据处理方式.有些时候,程序员必须时刻留意准备处理的是什么类型.您曾利用一些特殊语法直接操作过对象,或处理过一些间接表示的对象吗(C或C++里的指针)? 所有的这一切在JAVA里都得到了简化.在JAVA里一切都被视为对象,尽管是一切都被看成对象,但操纵的标识符实际上是一个"引用"而已,简单来说是:对象好比"电视",我们拥有的引用是&q

Java编程思想 2-1 一切都是对象

尽管 Java 是基于 C++ 的,但是相比之下,Java 是一种更纯粹的面向对象程序设计语言. 在本章,将看到 Java 程序的基本组成部分,并体会到在 Java 中几乎一切都是对象. 2.1 用引用操纵对象 Java 中通过引用(遥控器)操纵对象(电视机). 引用可以独立存在,并不一定需要有一个对象与之关联.比如:String s; 这里创建的只是引用,而不是对象.如果此时向 s 发送消息,就会返回一个运行时错误.因为此时 s 实际上没有和任何事物关联. 因此,一种安全的做法是:创建引用的同

Java编程思想总结(一)对象导论

Java编程思想总结(一)对象导论 1.1 抽象过程 万物皆对象. 程序是对象的集合(即:类),他们通过发送消息(调用方法)来告知彼此要做的. 每个对象都有自己的由其他对象所构成的存储(引用其他对象或基本类型,即组合). 每个对象都拥有其类型.每个类最重要的区别于其他类的特征就是“可以发送什么样的消息给它”(即调用方法). 某一特定类型的所有对象都可以接受同样的消息. 对象具有状态(成员属性).行为(成员方法)和标识(引用的名称).每个对象在内存中都有唯一的一个地址. 1.2 每个对象都有一个接

JAVA编程思想学习笔记——第一章 对象导论

搞了一年多java,野路子出身,发现java基础这块还是相当的薄弱!故决定学习<Java编程思想>这本书.在此把学习的知识点记录下! 面向对象的五大特性 1.万物皆为对象 2.程序是对象的集合,它们通过发送消息来告诉彼此所要做的 3.每个对象都由自己的由其它对象所构成的存储 4.每个对象都拥有其类型 5.某一特定类型的所有对象都可以接收同样的信息  单根继承结构 所有的类都继承自单一的基类,Object.在单根集成结构中的所有对象都具有一个公用接口,所以他们归根到底都是相同的基本类型.单根集成

java 编程思想 一 第二章(对象)

上班之余发现有很多空闲时间,享受生活 又觉得有点空虚,而且对自己的基础知识总觉得掌握的不是很牢固,有点似懂非懂的感觉,近来刚好有时间,所以就考虑继续学习,然后再经过考虑和各大博主推荐选择了<java编程思想>这本书,在此分享学习心得跟大家共勉,也算是对自己的监督吧.(本内容需要有一定的基础才能看,类似于基础回顾,强化理解,新手可能有些地方不太能听懂) 一.什么是对象? 这并不是我们男女朋友那种对象哈哈. 简言之:万事万物皆对象. 个人理解:我们所要处理的事务或者建立的某种模型的抽象总结.具体就

Java编程思想(第十一章持有对象)

1. 第11章 持有对象 java通过使用容器类来储存对象,与普通数组不同的是,普通数组的长度不可变. 1.1. 泛型与类型安全的容器 使用预定义的泛型,它指定了这个容器实例可以保存的类型,通过使用泛型,就可以在编译器防止将错误类型的对象放置到容器中. public class gerbil { private int gerbilNumber; public gerbil(int gerbilNumber){ this.gerbilNumber = gerbilNumber; } public

Java编程思想 - 第11章 持有对象

· 容器类: 1. Collection: List, Set, Queue 2. Map · List<Apple> apples = new ArrayList<Apple>(); 这种方式并非总能奏效,因为某些类具有额外的功能,例如,LinkList具有在List接口中未包含的额外方法,而TreeMap也具有在Map接口中未包含的方法.如果你需要使用这些方法,就不能将它们向上转型为更通用的接口. · Collection.addAll()成员方法只能接受另一个Collecti

Java编程思想(十六) —— 联系JVM再谈Class

编程思想这个专栏停了好久了,主要是把精力放在了其他知识上,现在继续补上. 前面两篇写到RTTI和简单的反射介绍,先回顾一下: RTTI,运行时类型信息,多态的应用,类型转换其实是发生在运行期间. Class对象: 编程思想讲到的定义,Java使用Class对象来执行其RTTI,类是程序的一部分,每个类都有一个Class对象,其实每编写和编译一个新类,就会产生一个Class对象,其实这个对象时被保存在同名的.class文件中的.生成这个类对象,其实是JVM(Java虚拟机)使用了"类加载器&quo

Java编程思想 4th 第2章 一切都是对象

Java是基于C++的,但Java是一种更纯粹的面向对象程序设计语言,和C++不同的是,Java只支持面向对象编程,因此Java的编程风格也是纯OOP风格的,即一切都是类,所有事情在类对象中完成. 在Java中,使用引用来操纵对象,在Java编程思想的第四版中,使用的术语是"引用(reference)",之前有读过Java编程思想第三版,在第三版中,使用的术语是"句柄(handle)",事实上,我觉得第三版的术语"句柄"更加形象传神,就像你用一个