Java 中的所有代码都必须写在类里。 Java 的标识符实际上只是对对象的“引用”。
对象创建
new 关键字创建一个新的对象实例。
数据存储
- 寄存器(Registers)最快的存储区域,位于 CPU 内部。
- 栈内存(Stack)存在于常规内存 RAM。
- 堆内存(Heap)这是一种通用的内存池(也在 RAM 区域),所有 Java 对象都存 在于其中。
- 常量存储(Constant storage)常量值通常直接放在程序代码中,因为它们永远不 会改变。
- 非 RAM 存储(Non-RAM storage)数据完全存在于程序之外,在程序未运行以 及脱离程序控制后依然存在。
基本类型的存储
Java 的基本类型不是使用 new 创建变量,而是用一个“自动”变量直接存储“值”放在栈内存。
基本类型的占用的内存不会随机器环境而变化,因此更具可移植性。 ![[Pasted image 20220823105719.png]] 所有的数值类型都是有正/负符号的。如果要在堆内存表示基本类型,需要用包装类。
高精度数值
BigInteger, BigDecimal 属于包装类型,没有对应基本类型。
数组存储
在 Java 中,数组使用前需要被初始化,并且不能访问数组长度以外的数据。
代码注释
//单行注释
/*
多行注释
*/
对象清理
作用域
一对大括号之内是一个作用域,决定了在该范围内定义的变量名的可见性和生存周期。
Java 是一种自由格式的语言,额外的空格、制表符和回车并不会影响程序的执行结果。
对象作用域
{
String s = new String("a string");
}
上例中,引用 s 在作用域终点就结束了。无法在之后用引用 s 访问这个对象。但是,它指向的字符串对象依然还在占用内存。
Java 的垃圾收集器会检查所有 new 出来的对象并判断哪些不再可达,继而释放那些被占用的内存。
类的创建
class ATypeName {
// 这里是类的内部
}
ATypeName a = new ATypeName();
字段
类里可以存放方法(method)和字段(field)。 类的字段可以是基本类型,也可以是引用类型。
用点号(.)访问对象内部的字段。
如果类的成员变量(字段)是基本类型,那么在类初始化时,这些类型将会被赋予一个初始值。 ![[Pasted image 20220823112349.png]]
注意,方法中定义的基本类型数据没有默认值。
方法
[返回类型] [方法名](/* 参数列表 */){
// 方法体
}
方法名和参数列表统称为方法签名(signature of the method)。签名作为方法的唯一标识。
向方法传递参数,实际上是在传递对象引用,而不是复制体。
程序编写
命名可见性
Java 采取了一种新的方法避免不同模块中的命名冲突:为一个类库生成一个明确的名称, Java 创建者希望我们反向使用自己的网络域名,因为域名通常是唯一的。
如 com.mindviewinc.utility.foibles,点号代表子目录。
使用其他组件
用 import 关键字导入包(类库),可以用通配符 *导入多个类
static 关键字
对于普通的非静态字段和方法, 我们必须要先创建一个对象并使用该对象来访问字段或方法,因为非静态字段和方法必须与特定对象关联。
static 关键字, 意味着该字段或方法不依赖于任何特定的对象实例。即使我们从未创建过该类的对象,也可以调用其静态方法或访问其静态字段。
class StaticTest {
static int i = 47;
}
//两个对象共享变量i
StaticTest st1 = new StaticTest();
StaticTest st2 = new StaticTest();
//通过类名访问
StaticTest.i++;
使用类名直接引用静态变量是首选方法,因为它强调了变量的静态属性。
类似的逻辑也适用于静态方法。
编写第一个完整程序
import java.util.*; //使用java.util.Date类
public class HelloDate {
//程序运行的入口
public static void main(String[] args) {
System.out.println("Hello, it's: "); //输出
System.out.println(new Date());
}
}
Java源文件的名称必须和其中一个类名相同,每个独立程序应该包含一个main()方法。
public static void main(String[] args) { }
编码风格
Java编程语言编码规范要求类名的首字母大写,如果是由多个单词构成的,则每个单词的首字母都应大写(即驼峰命名法)。
对绝大多数其他方法,字段(成员变量) 和对象引用名也采用驼峰命名的方式,但是它们的首字母不需要大写。
Java 和 C/C++ 同属 “自由格式” 的编程语言,但通常我们会在 Java 控制流程语句中采用首部缩进的规范,以便代码更具可读性。