第二章  一切都是对象

尽管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. Model-View-Presenter(MVP)

    Model-View-Presenter(MVP)模式 Model-View-Presenter(MVP)是一种应用程序表示层的设计模式.该设计模式最早于90年代由Taligent提出,并率先在C++ ...

  2. javaEE异常摘要——更换工作区相同tomcat当部署在同一个项目疑难解答

    我有一个项目,我的工作区公告,没问题,它可以运行正常,但我把项目copy还有一个工作空间,然后发布到tomcat(随着tomcat,先前的工作空间remove deployment,公布信息)上去,想 ...

  3. IBM Java架构师的技能

    一天,群里飘过一个IBM招聘信息.我看过之后,也只是如此而已. 大家好!我是XXX,IBM招聘java架构师,如今还有38个名额 学历大专以上即可,英语能面试交流的.项目有非常多到时候依据您面试会详谈 ...

  4. cocos2d-x注意事项(十)Lua发展飞机战争-4-创建主角

    二战中被称为二战飞机飞机,当然,以飞机作业.这是一个游戏,我们必须加入一个飞机--这是我们的英雄. 首先创建一个层(PlaneLayer)要显示飞机.然后,create飞机初始化方法 module(& ...

  5. ftp server来源分析20140602

    ftp  server学习位和源代码分析片 记录自己的第一个开源的分析过程: 从源代码:野狐灯(我接下来的几篇文章是从源头:野狐灯,每个以下哪项不是他们设置.) 20140602 Ftp的源码目录例如 ...

  6. Cocos发育Visual Studio下一个HttpClient开发环境设置

    Cocos2d-x 3.x相关类集成到网络通信libNetwork图书馆project于.这其中包括:HttpClient分类. 我们需要在Visual Studio溶液中加入libNetwork图书 ...

  7. Effective C++之‘宁以pass-by-reference-to-const替换pass-by-value’

    Effective C++之'宁以pass-by-reference-to-const替换pass-by-value' 缺省情况下C++以by value 方式(一个继承自C的方式)传递对象至函数.除 ...

  8. 菜鸟学Java(二十一)——怎样更好的进行单元測试——JUnit

    測试在软件生命周期中的重要性,不用我多说想必大家也都很清楚.软件測试有许多分类,从測试的方法上可分为:黑盒測试.白盒測试.静态測试.动态測试等:从软件开发的过程分为:单元測试.集成測试.确认測试.验收 ...

  9. Shuttle ESB

    Shuttle ESB(六)——在项目中的应用 如果说你认真看了前面几篇关于ESB的介绍,我相信,在这一篇文章中,你将会找到很多共鸣. 尽管,市面上开源的ESB确实非常之多,像Java中的Mule E ...

  10. CSS3+HTML5特效5 - 震动的文字

    先看效果(把鼠标移上去看看) abcd 这个效果很简单,就是移动文字的位置模拟出震动的效果. Css <style> @-webkit-keyframes shake { 0%{ -web ...