Java 编程思想笔记
第二章 一切都是对象
Java 是基于 C++ 的一门面向对象的程序设计语言。
Java 操作对象的方式
引用
package com.company;
public class Main {
// 创建的只是一个引用,并不是创建了一个对象。 此时向 s 发送消息会报运行时错误。
static String s;
public static void main(String[] args) {
//static String s; 在此处就会编译错误,原因待查。
System.out.print(s.toCharArray());
}
}
image.png
数据的存储
- 寄存器,最快的存储区域,位于处理器内部。
- 堆栈,位于通用 RAM(随机访问存储器)
- 堆,通用的内存池,存放所有的 Java 对象, new 一个对象,就会在堆里进行一次存储分配。
- 常量存储,存放到ROM(只读存储器)中。
- 非 RAM 存储。
- 流对象
- 持久化对象,对象被存放于硬盘上。
基本类型
并非引用的自动变量,直接存储值,存放在堆栈之中。
Java 每种基本类型所占的存储空间是不变的。
boolean 所占存储空间没有明确指定,
数组
Java 确保数组会被初始化,而且不能再它的范围之外被访问,这种检查是以每个数组上少量的内存开销及运行时的下标检查为代价的。
创建一个数组对象,就是创建了一个引用数组,并且每个引用会自动被初始化为一个特定值 null。
可以创建一个用来存放基本数据类型的数组,会将数组所占的内存全部置零。
对象销毁
作用域:决定了在其内定义的变量名的可见性和生命周期。
{
String s = new String("1123");
}
引用 s 在作用域终点消失了,但 s 指向的 String 对象仍然占据内存空间。
-> 垃圾回收器:监视所有的对象,并在一个特定的时间释放这些不会再引用的对象的内存空间
类
class name { /* 内容 */}
类中包含字段和方法。
如果字段是某个对象的引用,那么必须初始化该引用。
每个对象都有用来存储其字段的空间,并且普通字段不能在对象之间共享。
类的某个成员为基本数据类型的时候,即使没有进行初始化,也会获得一个默认值
image.png当变量作为类的成员使用时,Java才能确保给定其默认值,
如果为局部变量(即并非某个类的字段时)变量得到的可能是任意值。
方法参数返回值
基本形式
returnType methodName(/*Argument list*/){
/*
* method body
* */
}
方法名和参数列表(合起来 方法签名)唯一的标识出某个方法、
方法的参数列表指定要传递给方法什么样的信息,采用的都是对象形式,因此参数列表必须指定每个传递对象的类型和名字,这里实际上传递的也是对象的引用,基本类型除外。
可见性
Java 消除了向前引用的问题,即使这个类在当前源文件之后才被定义,但依旧可以直接使用这个类。
public class Main {
public static void main(String[] args) {
Test t = new Test();
}
}
class Test{
}
import xxxx.xxxx.xxx.*
通配符来导入更多的类
static
声明一个事物为 static 时,意味着这个域或方法不会包含他的那个类的任何对象关联在一起,就是说即使不创建对象,也能调用这个方法。
package com.company;
public class Main {
public static void main(String[] args) {
StaticTest s1 = new StaticTest();
StaticTest s2 = new StaticTest();
}
}
class StaticTest{
static int i = 47;
}
即使创建两个对象,但 .i 仍然只有一份存储空间,共享一个 i
两种访问方式:
System.out.print(s1.i);
System.out.print(StaticTest.i);
类名
类的名字必须与文件名相同,文件中必须存在某个类与该类文件名同名,否则编译期会报错,且那个类必须包含一个名为 main()
的方法,
public static void main(String[] args){}
public 关键字指这是一个可由外部调用的方法。
注释
/**/
//
网友评论