第二章  一切都是对象

尽管Java是基于C++的,但相比之下,Java是一种更纯粹的面向对象程序设计语言.
c++和Java都是杂合型语言(hybird language)
用引用(reference)操作对象
类似遥控器(引用)来操作电视(对象)
在Java中你可以创建一个引用,但是没有与任何对象关联,比如:
String s;
这个时候如果用则会报错.安全的做法是:
创建一个引用的同时并进行初始化
String s="1111";
必须由你创建所有对象
New关键字的意思是给我一个新对象
String s = new String("1111");
存储到什么地方
1.寄存器(register):这是最快的存储区--处理器内部,数量有限,又编译器根据需求分配
2.堆栈(stack):位于ram(随机存储器)中,仅次于寄存器存储Java对象的引用(不存对象),需知道所有数据的大小,生命周期,因为它必须生成相应的代码,以便上下移动堆栈指针(下,分配新内存,上,释放内存)
3.堆(heap):一种通用的内存池(位于ram中),用于存放所有的Java对象
4.静态存储(static storage):存放程序运行时一直存在的数据,用static标示(ram中)
5.常量存储(constant storage):(存放在rom(read-only memory)中)存放常量
6.非RAM存储(non-RAM-storage):例如持久化对象中,对象呗存放于磁盘上,因此程序终止,他们仍然可以保持自己的状态,在需要时可恢复成常规的基于ram的对象
 
特例:基本类型(primitive type)
基本类型不用new来创建,并非是一个引用而是一个自动变量,并且其用用值,并置于堆栈中,因此更加高效.

 
高精度数字(high-precision number)
BigInteger支持任何精度的整数
BigDecimal支持任何精度的定点数
作用域(scoping)
由花括号的位置决定
{
int x=12;//x可用
{
int q=3;
//x q都可用
}
}
对象作用域(scope of object)
{
String s=new String("111");
}//end scope
引用s在作用域终点就消失了,然而s指向的String对象扔继续占用内存空间.
创建信的类型数据:类
class关键字后面紧跟着新类型的名称
class className{
//class body goes here
}
域(field)和方法(method)
即数据成员(data member)和成员函数(member function)
构造器是特殊的一个方法,通过其对对象进行初始化,以便其与一个实际对象关联
class A{
int i;
float f;//域
public void add(){ //method
//some code...
}
}
基本成员默认值
 
方法(method) 参数(argument)和返回值(return value)
returnType methodName(Argument list){
//method body
}
java中的方法只能作为类的一部分来创建,其只有通过对象才能被调用.
objectName.methodName(arg1,arg2,arg3);
Static关键字
为某特定数据分配一份存储空间,而不考虑要创建多少对象甚至不需要创建对象
希望某一个方法不与包含他的类的任何对象关联在一起
(不new对象也可以调用)
一个static域对每个类来说都只有一份存储空间  而非static域则是对每个对象都有一个存储空间
编译运行
比如我们有个HelloDate.java源文件,命令行切换到改目录下,并键入:
javac HelloDate.java
进行编译
java HelloDate
运行
文档注释
/** comment */
注意:javadoc只能为public和protected成员进行文档注释
代码风格
类名的首字母要大写,例如MyFirstClassName,称为驼峰风格
方法,域也都采用此种方式.只是标识符的第一字母采用小写,例如:
int myFirstInt;
void myFirstMethod(int newValue){//..}

Java编程思想笔记(第二章)的更多相关文章

  1. java编程思想笔记(第一章)

    Alan Kay 第一个定义了面向对象的语言 1.万物皆对象 2.程序是对象的集合,他们彼此通过发送消息来调用对方. 3.每个对象都拥有由其他对象所构成的存储 4.每个对象都拥有其类型(TYpe) 5 ...

  2. Java编程思想——第17章 容器深入研究 读书笔记(三)

    七.队列 排队,先进先出. 除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: ad ...

  3. Java编程思想 第21章 并发

    这是在2013年的笔记整理.现在重新拿出来,放在网上,重新总结下. 两种基本的线程实现方式 以及中断 package thread; /** * * @author zjf * @create_tim ...

  4. Java编程思想——第17章 容器深入研究(two)

    六.队列 排队,先进先出.除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: add ...

  5. java编程思想笔记(1)

    java编程思想笔记(1) 一,对象的创建和生命周期 对象的数据位于何处?怎样控制对象的生命周期? 在堆(heap)的内存池中动态地创建对象. java完全采用了动态内存分配方式. 二,垃圾回收器 自 ...

  6. Java编程思想 笔记

    date: 2019-09-06 15:10:00 updated: 2019-09-24 08:30:00 Java编程思想 笔记 1. 四类访问权限修饰词 \ 类内部 本包 子类 其他包 publ ...

  7. #Java编程思想笔记(一)——static

    Java编程思想笔记(一)--static 看<Java编程思想>已经有一段时间了,一直以来都把笔记做在印象笔记上,今天开始写博客来记录. 第一篇笔记来写static关键字. static ...

  8. 2.1(java编程思想笔记)位移操作

    java位移操作主要有两种: 有符号位移:有符号位移会保留原有数字正负性,即正数依然是正数,负数依然是负数. 有符号位左移时,低位补0. 有符号右移时:当数字为正数,高位补0.当数字为负时高位补1. ...

  9. 《深入理解Java虚拟机》笔记--第二章、Java内存区域与内存溢出异常

    Java程序员把内存的控制权交给了Java虚拟机.在Java虚拟机内存管理机制的帮助下,程序员不再需要为每一个new操作写对应的delete/free代码,而且不容易出现内存泄露和溢出. 虚拟机在执行 ...

随机推荐

  1. krpano漫游加方向性3D声音(这篇文章已被移到krpano中国网站 krpano360.com)

    需求:      在场景转换视角时.会出现不同方位的声音以及对应的音量变化,也即是将声音视作hotspot.当视角转到该声音热点时,也随之听到声音.官方样例:点击打开链接 本文已经搬迁到下述网址.请点 ...

  2. 十天学Linux内核之第九天---向内核添加代码

    原文:十天学Linux内核之第九天---向内核添加代码 睡了个好觉,很晚才起,好久没有这么舒服过了,今天的任务不重,所以压力不大,呵呵,现在的天气真的好冷,不过实验室有空调,我还是喜欢待在这里,有一种 ...

  3. 采用Duplicate target database在线恢复秩序oracle datagard图书馆设备

    线上oracle datagard备库由于断电以及误删除从库的归档日志文件,所以导致,备库主库数据不一致,备库须要紧急恢复.以下是大概恢复过程 1,从主库上面备份控制文件[oracle@localho ...

  4. rabbitMQ说明文档

    rabbitMQ是什么 RabbitMQ     是由     LShift     提供的一个     Advanced Message Queuing Protocol (AMQP)     的开 ...

  5. 改动ubuntu/linux文件夹显示颜色

    通过secureCRT登陆linux,假设背景颜色选为黑色,非常可能在使用ls命令时看不清楚文件夹名,这时候我们能够通过一个简单的方式将文件夹变为一个显眼的颜色,比如"黄色". [ ...

  6. linux_mac_配置itrem2 rz sz_bug处理

    0:传输 .jar 等文件有问题 是  添加 sz -bye  以二进制流方式传输 1:安装  homebrew 2: brew install lrzsz 3:搜索 iterm2-recv-zmod ...

  7. Apache & WebDav 配置(二)

    (二)WebDav配置 & put脚本编辑! WebDav 配置 ---------------- # 1. 修改了两个配置文件 # 2. 创建web访问用户的用户名和口令 # 3. 创建了两 ...

  8. 如何使用linq操作datatable进行分组

    使用微软.net的孩子们应该都知道linq吧,要知道linq可是其他高级语言没有的技术,比如php,java等等,但是起初我对linq的认识只是停留在对 list<> 的泛型集合进行操作, ...

  9. JS中5秒中跳转到其他页面

    原文:JS中5秒中跳转到其他页面 <head> <meta http-equiv="Content-Type" content="text/html; ...

  10. sgu139Help Needed!推断15数码是否有解,以及推断N数码是否有解的推论

    是这种,要你推断一个15数码是否有解. 我不会,找了这样一个方法. 将16个数按出现顺序存放在一维数组里面, 然后累加每一个数的逆序对数目, 还要加上0到终态的曼哈顿距离,得到一个数x. 因为最后的状 ...