- 用引用来操纵对象
String a = "123"; -
推荐做法:创建一个引用的同时便进行初始化
-
new关键词:创建一个新对象
String s = new String("asdf");
- 创建一个字符串对象,存储asdf
- 创建一个引用对象s
- 将引用对象s与字符串对象关联
- 数据的存储管理
- 寄存器:最快的存储区,根据需求进行分配,不能直接控制
- 堆栈:位于RAM(随机访问存储器),通过堆栈指针来管理,明确生命周期;比如:对象引用
- 堆:位于RAM,不知道生命周期;比如:对象
- 常量存储:直接存放在代码内部,可选择放在ROM(只读存储器)
- 非RAM存储:磁盘或其他机器
- 基本数据类型
- 不用new来创建变量
- 变量是非引用的
- 变量直接存储值,并置于堆栈中
- 每种基本类型都有固定大小的存储空间
- 每种基本类型都有固定大小的存储空间
- 所有的数值类型都有正负号
- boolean所占存储空间大小没有明确指定,仅可以取字面值true或false
- 基本类型都有相应的包装类,且具备自动包装功能
Character ch = 'x';
char c = ch;
- 高精度数字
- BigInteger支持任意精度的整数
- BigDecimal支持任意精度的定点数;特别是货币计算要使用,而不要用double、float
- 数组
- Java确保数组会被初始化,而且不能在范围之外被访问《=内存开销+下标检查
- 使用任何引用前,必须指定一个对象,否则会报错
- 创建数组对象,默认将引用赋值为null;数组对象实际上就是一个引用数组
- 创建基本类型的数组,默认赋值为0
- 作用域
- 决定了在其内定义的变量名的可见性 和 生命周期
- 由花括号的位置决定
{
int x = 12;
// Only x available
{
int q = 96;
//Both x & q available
}
//Only x available
//q is out of scope
}
- 在作用域里定义的变量,只可用于作用域结束之前
- //到行末的文字都是注释
- 缩排格式便于阅读,且空格、制表符、换行不会影响程序的执行结果
{
int x = 12;
{
int x = 96;//非法,Java不允许隐藏
}
}
- 对象的作用域
- Java对象不具备和基本类型一样的生命周期
- new创建的对象,可以存活于作用域之外
{
String s = new String("a string");
}
//引用s作用域结束
//s执行的对象仍占据内存空间,由垃圾回收器来处理
- 类
- 关键字class来定义类
class ATypeName {
/* Class body goes here */
}
- 通过new来创建对象
ATypeName a = new ATypeName();
-
- 字段和方法
- 字段:数据成员
- 方法:成员函数
- 每个对象都有独立的存储其字段的空间
- 普通字段不能在对象间共享
class DataOnly { int i; double d; boolean b; } DataOnly data = new DataOnly();
- 引用对象成员的方法:objectReference.member
data.i = 46; myPlane.leftTank.capacity = 100;//级联模式
- 基本成员默认值
- 基本成员默认会被初始化,而局部变量不会
-
- 方法、参数和返回值
- 方法:决定了一个对象能够接收什么样的消息
- 组成部分:名称、参数、返回值和方法体
ReturnType methodName(/* Argument list */) { /* Method body */ }
- 方法名和参数列表一起唯一地标识出某个方法
- 方法只有通过对象才能被调用,且该对象必须能执行这个方法的调用
- 调用方法:objectName.methodName(arg1,arg2,arg3); =>发送消息给对象
- 参数列表:指定传递给方法什么信息;必须指定每个所传递对象的类型及名字
- return关键字的含义:(1)方法完成(2)返回函数结果
- void表示不想返回任何值
void nothing() {
return;
}
- 通过包来解决命名冲突,且都使用小写
- import可以导入想要的类
import java.util.ArrayList;
或
import java.util.*;//*是通配符
注意:
(1)向前引用:就是在定义类、接口、方法、变量之前使用它们
class MyClass
{
void method()
{
System.out.println(myvar);
}
String myvar = "var value";
}
(2)Java允许向前引用
- static关键字
- 使用场景:(1)只想为特定域分配单一存储空间,而不去考虑要创建多少对象(2)希望某个方法不与包含它的类的任何对象关联在一起
class StaticTest {
static int i = 46;//所有StaticTest的对象共享i字段
}
- 静态字段的访问方法:(1)对象.字段(2)类.字段(推荐)
class Incrementable {
static void increment(){
StaticTest.i++;
}
}
- 静态方法的访问方法:(1)对象.方法(2)类.方法(推荐)
- 小知识
- 类名称必须和文件名相同
- javac Hello.java //编译代码为class文件
- java Hello //执行class文件
- 注释的两种风格:
(1)/* ... */ 多行注释
(2)// 单行注释
- 注释的两种风格:
-
- 注释文档
- /** ... */
- javadoc是用于提取注释的工具
- 类型:类注释、域注释、方法注释
- javadoc只能为public和protected成员进行文档注释
- 常见标签:@version @see @author @param @return @deprecated
- 采用驼峰风格编写代码
- 采用驼峰风格编写代码
网友评论