虽万物皆可为对象,但我们所操作的标识符实际上只是对对象的引用。
—就是变量名
引用用来关联对象。Java使用 new 关键字代表:创建一个新的对象实例。
—String s = new String(“asdf”);
—PS:寄存器不能之间控制,栈内存存放Java的引用,堆内存存放Java的对象,常量存储在代码中,非RAM存储脱离代码的存在。
Java 的基本类型不是使用 new 创建变量,而是使用一个“自动”变量。 这个变量直接储"值",并置于栈内存中,因此更加高效。
基本类型 | 大小 | 最小值 | 最大值 | 包装类型 |
---|---|---|---|---|
boolean | - | - | - | Boolean |
char | 16 bits | Unicode 0 | Unicode 216 -1 | Character |
byte | 8 bits | -128 | +127 | Byte |
short | 16 bits | -215 | +215-1 | Short |
int | 32 bits | -231 | +231-1 | Integer |
long | 64 bits | -263 | +263-1 | Long |
float | 32 bits | IEEE754 | IEEE754 | Float |
double | 64 bits | IEEE754 | IEEE754 | Double |
void | - | - | - | Void |
在Java中有两种类型的数据可用于高精度的计算:
它们并没有对应的基本类型,必须要通过调用它们的方法来实现而非运算符。
在Java中,数组使用前需要被初始化,并且不能访问数组长度以外的数据。
当我们创建对象数组时,实际上是创建一个引用数组,并且每个引用的初始值都为null。在使用该数组之前,我们必须为每个引用指定一个对象。如果我们尝试使用为null的引用,则会在运行时报错。
Java中有两种类型的注释:
—PS:多行注释可以在每一行开头添加 *,不加也不影响效果。不过约定成俗的习惯还是需要遵守
在Java中,作用域是由大括号 {} 的位置决定的。
{
int x = 12;
// 仅 x 变量可用
{
int q = 96;
// x 和 q 变量皆可用
}
// 仅 x 变量可用
// 变量 q 不在作用域内
}
Java的变量只有在其作用域内才可用。
Java 对象与基本类型具有不同的生命周期。当我们使用 new 关键字来创建 Java 对象时,它的生命周期将会超出作用域。
{
String s = new String("a string")
}
// 作用域终点
上例中,引用 s 在作用域终点就结束了。但是,引用 s 指向的字符串对象依然还在占用内存。在这段代 码中,我们无法在这个作用域之后访问这个对象,因为唯一对它的引用 s 已超出了作用域的范围。
—PS:看不到不代表不存在
Java使用 class 关键字类来描述一种新的对象。
当我们创建好一个类之后,我们可以往类里存放两种类型的元素:方法(method)和字段(field)。 类的字段可以是基本类型,也可以是引用类型。如果类的字段是对某个对象的引用,那么必须要初始 化该引用将其关联到一个实际的对象上。
如果类的成员变量是基本类型,那么在类初始化时,这些类型将会被赋予一个初始值。
基本类型 | 初始值 |
---|---|
boolean | false |
char | \u0000(null) |
byte | (byte)0 |
short | (short)0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
不过这种默认值的赋予并不适用于局部变量(不属于类的字段)
方法的基本组成部分包括名称、参数、返回类型、方法体。
[返回类型] [方法名] (/参数列表/){
// 方法体
}
方法名和参数列表统称为方法签名(signature of the method)。签名作为方法的唯一标识。
参数列表必须指定每个对象的类型和名称。
Java 创建者希望我们反向使用自己的网络域名,因为域名通常是唯一的。
必须通过使用 import 关键字来告诉 Java 编译器具体要使用的类。
我们可以在类的字段或方法前添加 static 关键字来表示这是一个静态字段或静态方法。当 static 关键字修饰时, 它允许我们无需创建对象就可以直接通过类的引用来调用。
每个 java 源文件中允许有多个类。同时,源文件的名称必须要和其中一个类名相同,否则编译器将会 报错。每个独立的程序应该包含一个 main() 方法作为程序运行的入口。其方法签名和返回类型如 下。代码示例:
public static void main(String[] args) {
}
参数 args 并没有在当前的程序中使用到,但是 Java 编译器强制要求 必须要有, 这是因为它们被用于接收从命令行输入的参数。
类名的首字母大写。 如果类名是由多个单词构成的,则每个单词的首字母都应大写(不采用下划线来分隔),字段(成员变量)和对象引用名都采用驼峰命名的方式,但是它们的首字母不需要大写。