对象引用类型和基本类型
二、Java程序的存储区域
1、寄存器
2、堆栈
3、堆
4、常量存储
5、非RAM存储
基本类型和对象引用(String a)存储在堆栈中
对象(new String("hello world"))存储在堆中
字面常量字符串和具有字符串值的常量表达式被存放在常量存储中
举例来说:
int a=5;
a这个变量存储在堆栈中,它的值为5;
String a=new String("hello world");
String b=a;
"hello world"这个字面常量字符串存储在常量存储中
new String("hello world")对应的对象存储在堆中
a这个变量存储在堆栈中,它的值为new String("hello world")对应的对象的引用地址
b这个变量存储在堆栈中,它的值为a的值,即为new String("hello world")对应的对象的引用地址
三、基本类型:
Java中一共有9种基本类型,这些基本类型所占用的存储空间都是固定的,这个特性也使得Java程序比其他语言的程序更具有可移植性。每种基本类型都有对应的包装器类,基本类型和对应的包装器类之间能够互相转换。
关于基本类型的信息如图1所示:
图1
所有数值类型都有正负号,所以不要去寻找无符号的数值类型
boolean类型所占用的存储空间没有明确指定,仅定义为能够取字面值true和false
float和double都符合IEEE754标准
另外在Java的Float类中有如下静态变量:
Float.MAX_VALUE:表示最大正值,最大负值为"-Float.MAX_VALUE"
Float.MIN_VALUE:表示最小能够取到的正数值,这个名称取得很有歧义。注意,0不是正数
Float.MAX_EXPONENT:表示最大能够取到的科学计数法中的指数值
Float.MIN_NORMAL:表示最小能够取到的科学计数法中的底数值
Double类中的相应静态变量类似。
四、作用域
在C和C++中,将一个较大作用域的变量“隐藏”起来的做法,在Java里是不允许的比如
{在C和C++中被允许,但是在Java中不被允许
int x = 12;
{
int x = 96;
}
}
另外:
只能存活于作用域内:基本类型和对象引用(存储在堆栈中)
可以存活于作用域外:对象(存储在堆中)
五、创建新的数据类型:类
类中包含“字段”和“方法”字段如果是基本类型,Java确保给定默认值,具体如图2所示:
图2
方法由“方法名”和“参数列表”唯一进行标识
普通字段和方法跟类的对象相关
静态字段和静态方法跟类相关
注释有两种语法:
/*...*/和//
JavaDoc标准使得文档和代码处于同一个源文件,有利于维护。
JavaDoc处于"/**"和"*/"之间。
8.1、语法
包含两种方式:嵌入HTML和文档标签。
8.1.1、文档标签
文档标签是以'@'开头的命令,可细分为“独立文档标签”和“行内文档标签”。
独立文档标签可以出现于JavaDoc中每一行的第一个*后面,如下所示:
/**
* @author dslztx
*/
生成的HTML文件中相对应的内容如图3所示:
图3
常见的独立文档标签有@see,@version,@author,@since,@param,@return,@throws
/**
* 你好,这是JavaDoc{@docRoot} 测试
*/
生成的HTML文件中相对应的内容如图4所示:
图4
常见的行内文档标签有{@link package.class#member label},{@docRoot},{@inheritDoc}
直接将HTML语句传递给最终生成的HTML文件中。
现在有如下内容的JavaDoc内容:
/**
* 测试HTML语句<br/>
* <ol>
* <li>Item One
* <li>Item two
* <li>Item three
* </ol>
*/
生成的HTML文件中相对应的内容如图5所示:
图5
生成的HTML文件的源代码中含有如下内容:
<P>
测试HTML语句<br/>
<ol>
<li>Item One
<li>Item two
<li>Item three
</ol>
<P>
8.2、输出
JavaDoc的输出是一个HTML文件。
在Java中,在某处可以使用在其后定义的资源,即解决了“向前引用”问题。
在每个.java文件中,默认包含“import java.lang.*”语句
System.out.println(System.getProperties());可以打印Java程序运行时所有的环境参数