第二章  一切都是对象

尽管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. DFS PKU 1562

    简单地DFS Oil Deposits Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12801   Accepted: 6 ...

  2. springMVC框架建设进程

    1.创建Dynamic Web Project 2.导入spring和springmvc所须要的文件 3.配置web.xml文件 3.1 监听spring上下文容器 3.2 载入spring的xml文 ...

  3. Writing your first Django app, part 1(转)

    Let’s learn by example. Throughout this tutorial, we’ll walk you through the creation of a basic pol ...

  4. 于 jsp第横梁list数据

            往往我们都会将查询到的数据显示到界面中,那么该怎样在界面显示.请看以下的具体解释:     0)前提得在jsp页面中获取后台传过来的数据(在此为List集合):             ...

  5. C# 使用 Code Snippet 简化 Coding

    在开发的项目的时候,你是否经常遇到需要重复编写一些类似的代码,比如是否经常会使用 for.foreach ? 在编写这两个循环语句的时候,你是一个字符一个字符敲还是使用 Visual Studio 提 ...

  6. java_ log4j的基本配置参数

    目标:  err级别发送邮件 ,要求美观 ,信息详细 开工: 材料: 三个jar ,版本不建议高,不能低. 方便起见,打包下载即可    http://pan.baidu.com/s/1mgmfyvY ...

  7. JavaEE Tutorials (2) - 使用教程示例

    2.1 必要软件27 2.1.1 Java EE 7软件开发包28 2.1.2 Java平台标准版28 2.1.3 Java EE 7教程组件28 2.1.4 NetBeans IDE29 2.1.5 ...

  8. SVN & Git (二)

    Git:是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.Git 是 Linus T ...

  9. oracle删除重复记录,只保留rowid最小的记录

    初探oracle删除重复记录,只保留rowid最小的记录   如题,初探oracle删除重复记录,只保留rowid最小的记录(rowid可以反映数据插入到数据库中的顺序) 一.删除重复记录可以使用多种 ...

  10. Responsive Design in 3 Steps

    Responsive web design is no doubt a big thing now. If you still not familiar with responsive design, ...