文章目录
博客中的部分图来自Head First Java
1 Java概述
1.1 Java的发展历程
-
Java语言是Sun(Stanford University Network)在1995年推出的计算机语言
Java之父:詹姆斯·高斯林(James Gosling)
-
2009年,Sun公司被甲骨文公司收购,所以我们现在访问oracle官网即可:https://www.oracle.com
1.2 Java中一些概念
-
JVM(Java Virtual Machine),Java虚拟机
-
JRE(Java Runtime Environment),Java运行环境,包含了JVM和Java的核心类库(Java API)
-
JDK(Java Development Kit)称为Java开发工具,包含了JRE和开发工具(我们只需安装JDK即可,它包含了java的运行环境和虚拟机)
1.3 Java的工作方式
1.4 Java的程序结构
1.5 类和对象
程序员常说万物皆对象,能够较好的理解对象的含义是编程修炼中的基本功,初接触可能会较难理解,但是基本的概念是一定要有的,首先需要清楚类和对象的关系。
总结来说,类是对象的蓝图,类可以看作对现实生活中一类具有共同属性和行为的事物的抽象,而对象则是具体的事物。根据一个类可以创建多个对象,每个对象的实例变量都可以不同。
对象有实例对象和方法两个属性:
- 实例对象:对象已知的事物,代表了对象的状态
- 方法:对象可执行的动作,代表了对象的行为
类的组成是由属性和行为两部分组成
- 属性:在类中通过成员变量来体现(类中方法外的变量)
- 行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)
下面给出一般类的定义:
public class 类名 {
// 成员变量
变量1的数据类型 变量1;
变量2的数据类型 变量2;
…
// 成员方法
方法1;
方法2;
}
除了成员方法外,我们在定义类的时候还会给出类的构造方法,构造方法又分为无参构造和带参构造,这些通过快捷键都可以很方便的完成。
例如:
public class Student {
//成员变量(私有)
private int age;
private String name;
//无参构造方法
public Student() {
}
//带参构造方法
public Student(int age, String name) {
this.age = age;
this.name = name;
}
//getter
public int getAge() {
return age;
}
//setter
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
根据定义的类来创建对象的格式为:
类名 对象名 = new 类名();
例如:
//无参构造方法创建对象
Student s1 = new Student();
s1.setAge(10);
s1.setName("mary");
//带参构造方法创建对象
Student s2 = new Student(10,"ma");
1.6 对象内存图
创建对象时,对象名和地址是存储在栈内存中的,对象的属性内容存储在堆内存中,Java会根据对象的大小来分配内存空间,同时也会主动管理内存。当JVM发现某个对象不会再被使用时,该对象就会被标记为可回收,当内存不足时,垃圾收集器会启动来清理垃圾,回收空间。
单个对象内存图
多个对象内存图
多个对象在堆内存中,都有不同的内存划分,成员变量存储在各自的内存区域中,成员方法多个对象共用的一份
多个对象指向相同地址内存图
当多个对象的引用指向同一个内存空间(变量所记录的地址值是一样的)
只要有任何一个对象修改了内存中的数据,随后,无论使用哪一个对象进行数据获取,都是修改后的数据