Thinking in java-02

来源:互联网 发布:京东上传软件 编辑:程序博客网 时间:2024/04/29 18:14

/*************************************************

function:java language Technology
author  :chinayaosir   QQ:44633197 
blog    :http://blog.csdn.net/chinayaosir
note    :禁止其它网站转载此文章

**************************************************/


第2章 java中一切都是对象
目录
2.1用引用操作对象
2.2必须由你创建所有对象
2.2.1存储到什么地方?
2.2.2基本类型
2.2.3java中的数组
2.3永远不需要销毁对象
2.4创建新的数据类型-类
2.6构造一个JAVA程序
2.7第一个JAVA程序
2.8.1三种注释方式
2.8.2javadoc的语法
2.8.3javadoc一些使用方法
2.8.4javadoc示例

尽管java是基于C++的,但相比之下,java是一种更加纯粹的面向对象程序设计语言
2.1用引用操作对象
所有这一切在java里都得到了简化,一切都被视为对象,因此可用固定的语法。
但操作对象都是基于一个引用方法(reference),如同用遥控器操作电视,电视是对象,遥控器是引用
创建一个引用的同时便进行初始化是一个安全的做法,我们必须对对象采用一种更加通用的初始化方法。

2.2必须由你创建所有对象
new关键字的意思是“给我一个新对象”,一旦创建了一个引用,就希望它能马上与一个对象关联,如
String s;   //只定义一个string类的引用,并没有与任何对象关联
String s = new String("hello"); //创建一个引用并同时与String对象关联
2.2.1存储到什么地方?
程序运行时,对象在内存中是如何分配?
有6个地方可以存储
1.寄存器:这是最快的地方,位于CPU内部cache
2.堆栈:这是第二快的地方,位于RAM内存条中,java编译器通过堆栈指针动态管理所有对象,以及垃圾回收
3.堆:这是一种通用的内存池,位于RAM内存条中,堆为java提供了动态的对象分配,当用new创建新对象就会使用堆
4.静态存储:这是一种在内存固定位置的对象,它是java中static关键定义的对象,从程序开始到结束永远不会变
5.非RAM存储:这一种不没有存在内存中,而是存在磁盘中的对象,如java中流对象和持久化对象
流对象把对象转换成字节流,然后发送给另一个机器上,持久化对象把对象转保存到磁盘上
2.2.2基本类型
java的基本类型如下:
这些基本类型是java的内置类型是,因此不是引用,而是按值操作,如同C中的数据类型操作。
基本类型与java包装类对照 默认值
boolean  Boolean  false
char  Character null
byte  Byte  0
int  Integer  0
long  Long  0l
float  Float  0.0f
double  Double  0.0d

以上整数没有C/C++中的有,无符号差别,java中全是有符号的整数
另个有两个高精度计算的包装类BigInteger,BigDecimal
2.2.3java中的数组
C/C++中使用数组经常会越界访问,造成程序出错,而java编译器会确保数组被初始化和拒绝越界访问,
从而使用java中的数组安全和不容易出错

2.3永远不需要销毁对象
在C/++设计语言中,变量生命周期的控制占据了程序设计工作中的大部分,
而java的神奇之外就是有一个“垃圾回收器”,用来监控new创建的对象的生命周期,
不使用它们的时候自动清除,从而使用JAVA程序员不要担心内存泄漏的问题

2.4创建新的数据类型-类
如果java中一切都是对象,那对象的类型又是什么?
它就是类,不同的类决定了对象的外观和行为!
2.5返回值,方法,参数
java中的类的函数通常叫方法,而不是叫函数
方法体定义语法:
returntype menthodname(argument list)
{
/*method body*/
}
方法中的参数,当传递对象时,它们传递的都是对象的引用,而不是如同C语言中按值传递的

2.6构造一个JAVA程序
2.6.1名字的可见性
名字管理对任何程序设计语言都是非常重要的任务。
为了避免名字冲突,C++的解决方法是引入名字空间,
java则是用import packname的方式,而包名的命名则与internat域名相同的编码方式
例如我的域名是chinanetboy.bokee.com,
包名的命名则是把域名反转过来成com.bokee.chinanetboy,形成此包的命名规则
而com.bokee.chinanetboy以.分隔对应级别不同的文件夹,假如为代码放在E:盘
com.对应E:/com文件夹
com.bokee对应E:/com/bokee文件夹
com.bokee.chinanetboy对应E:/com/bokee/chinanetboy文件夹
java的包命令规则让我们非常方便而又规范的组织java源代码

2.6.2运用其它构件
import 可以用通配符*来达到一次导入多个包
import java.util.*;
它导入了/$javapath$/java/util/文件夹下面所有的包

2.6.3static关键字使用
通常在java类中,如果要定义类的方法成员和数据成员,就定义成static,
从而当用类建立对象时,这些static方法和static数据,是不会与对象关联的,
它只为此类工作,不为对象工作。
static方法常常用来做“牧羊人”的角色,负责看护此类的实例对象群体

2.7第一个JAVA程序
import java.util.*;
public class hello {
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  System.out.print("hello,today is :");
  System.out.println(new Date());
 }
}
2.8注释与嵌入式文档
2.8.1三种注释方式
/*this is comment
 *xxxxx
 *xxxxxxx
 */

/*this is comment */

//this is comment

2.8.2javadoc的语法
如果每次修改代码,都要修改文档,这的确是相当麻烦
把代码同文档“链接”起来的解决方案是javadoc,
javadoc是用于从java源代码中自动提取注释文档的工具,
为实现这个目的,我们就得按特javadoc的特殊的注释语法来标记文档
javadoc只读取/**    */包含的注释
javadoc只读取public,protected成员中的注释,private部分会被忽略的
javadoc输出文档是html格式,以方便阅读

2.8.3javadoc一些使用方法
1.{@see:}
  功能:引用其它类,引用格式如下/**@see class name*/,
  它就会自动读取引用类的注释并生成html文档
2.{@link package.class#member label}
  功能:与@see极其相同,只是作用于行内
3.{@docRoot}
  功能:产生到文档根目录的相对路径
4.{@inheritDoc}
  功能:产生此类最直接的父类的的注释文档
5.@version
  功能:提取版本信息
6.@author
  功能:提取作者信息
7.@since
  功能:用来指定可使用此代码最早的JDK版本
8.@param
  功能:提取代码中的方法参数信息
9.@return
  功能:提取返回值说明
10.@throws
  功能:提取异常代码

2.8.4javadoc示例
在源代码中添加完整注释的程序
/**filename: hello.java */
import java.util.*;
/**功能:显示当天日期
 *@author chinanetboy,qq:44633197
 *@author http://chinanetboy.bokee.com
 *@version 1.0 verion
 */
public class hello {
 public static void main(String[] args) {
 /**class hello ,main(string[]) methods
  *@param args 字符数组类型
  *@return 无返回值
  *@throws 没有设置异常控制
  **/
  System.out.print("hello,today is :");
  System.out.println(new Date());
 }
}

原创粉丝点击