第1章
1.1 计算机编程语言发展史
(1)机器语言——》汇编语言——》高级语言
(2)被誉为java语言之父的是:詹姆斯
(3)Java语言的特点:扩平台性
1.42Java跨平台的原理
每个支持Java的操作系统都有一个对应的JVM实现。JVM负责解释或即时编译(Just-In-Time Compilation, JIT)字节码,并将其转换成适合当前操作系统的本地机器指令
1.5 JDK和JRE
(1)开发java语言代码==》JDK
(2)运行JAVA代码 ==》JRE
第2章:Java 编程基础
2.1 Java 程序结构
-
源文件:每个Java源文件通常包含一个公共类(public class),其名称必须与文件名相同。
-
包声明:使用
package
关键字指定该文件所属的命名空间。例如:package com.example;
-
导入语句:通过
import
关键字引入其他包中的类或接口。例如:import java.util.Scanner;
-
类定义:Java程序的基本构建块,由属性(字段)、构造器和方法组成。
-
主方法:每个Java应用程序至少需要一个
main
方法作为入口点,格式为: -
源文件:每个Java源文件通常包含一个公共类(public class),其名称必须与文件名相同。
-
包声明:使用
package
关键字指定该文件所属的命名空间。例如:package com.example;
-
导入语句:通过
import
关键字引入其他包中的类或接口。例如:import java.util.Scanner;
-
类定义:Java程序的基本构建块,由属性(字段)、构造器和方法组成。
-
主方法:每个Java应用程序至少需要一个
main
方法作为入口点,格式为:public static void main(String[] args) { // 程序从这里开始执行 }
-
2.2 数据类型
变量:用于存储可以改变的数据值。声明时需指定数据类型。例如:
int count
-
基本数据类型:
- 整数类型:
byte
,short
,int
,long
。例如:int age = 25;
- 浮点类型:
float
,double
。例如:double pi = 3.14159;
- 字符类型:
char
。例如:char grade = 'A';
- 布尔类型:
boolean
。例如:boolean isStudent = true;
- 整数类型:
-
引用数据类型:
- 类:如
String
、自定义类等。 - 数组:存储相同类型的多个元素。例如:
int[] numbers = {1, 2, 3};
- 接口:定义行为规范,但不实现具体逻辑。
- 类:如
2.3 变量与常量
-
- 变量:用于存储可以改变的数据值。声明时需指定数据类型。例如:
int count = 0;
- 常量:使用
final
关键字声明,一旦赋值就不能更改。例如:final double PI = 3.14159;
-
2.54控制结构
- 选择结构:
- if语句:根据条件执行不同的代码块。例如:
-
if (temperature > 30) { System.out.println("It's hot outside."); }
switch语句:多分支选择,适用于离散值。例如:
-
switch (dayOfWeek) { case "Monday": System.out.println("Start of the week"); break; case "Friday": System.out.println("End of the work week"); break; default: System.out.println("Another day"); }
循环结构:
- for循环:已知次数的重复执行。例如:
-
for (int i = 0; i < 10; i++) { System.out.println(i); }
while循环:未知次数的重复执行,直到条件不再满足。例如:
-
int counter = 0; while (counter < 5) { System.out.println(counter); counter++; }
do-while循环:至少执行一次,然后根据条件决定是否继续。例如:
-
do { System.out.println("This will print at least once"); } while (false);
-
跳转语句:
- break:立即退出最内层循环或switch语句。
- continue:跳过当前循环体中剩余部分,直接进入下一次迭代。
- return:从方法中返回,可选带返回值。
2.6 方法(函数)
-
定义方法:方法是一段完成特定任务的代码块,可以通过调用来复用。例如:
-
public void greet() { System.out.println("Hello!"); }
参数传递:
- 方法可以接受零个或多个参数,用于传递外部数据。例如:
-
public void greet(String name) { System.out.println("Hello, " + name + "!"); }
返回值:方法可以有返回值,指定返回的数据类型。例如:
-
public int add(int a, int b) { return a + b; }
重载(Overloading):
- 同一方法名可以有不同的参数列表,编译器会根据参数类型和数量自动选择合适的方法。例如:
-
public void display(int number) { /* ... */ } public void display(String message) { /* ... */ }
2.7 数组
数组是用于存储固定数量相同类型元素的数据结构。它们可以是一维或多维的,并且提供了对多个数据项进行操作的便捷方式。一维数组:
- 声明和初始化:可以通过指定大小或直接赋值来创建数组。、
- 可以使用for循环或者增强的for-each循环来遍历数组。
-
for (int i = 0; i < numbers.length; i++) { System.out.println(numbers[i]); } for (String name : names) { System.out.println(name); }
2.8 JVM中的堆内存与栈内存
- 堆内存(Heap Memory):
- 用途:主要用于存储对象实例和大型数据结构。所有通过
new
关键字创建的对象都分配在堆上。特点:- 堆是一个共享资源,由整个应用程序的所有线程共同使用。
- 对象的生命周期独立于创建它的方法或作用域。
- 垃圾回收机制自动管理堆上的内存释放,开发者无需手动干预。
- 栈内存(Stack Memory):
-
用途:用于存储局部变量、方法参数以及方法调用信息(如返回地址)。每个线程都有自己的私有栈。
-
特点:
栈的操作非常快,因为它是按后进先出(LIFO)原则组织的。
局部变量的生命周期仅限于其所在的方法或代码块。当方法调用结束时,相关联的栈帧会被弹出,占用的空间也会被释放。
-
堆栈交互:
- 方法内部声明的对象引用通常存放在栈上,而实际的对象则存放在堆上。
- 如果一个方法接收对象作为参数,那么传递的是该对象的引用(即地址),而不是对象本身。
- 返回值如果是对象,则同样只返回引用。