01.初识计算机和Java语言

重点:

  掌握JDK的安装与环境变量的配置
  理解Java程序的运行过程

1、计算机的体系结构

在这里插入图片描述

计算机的基本概念

• 计算机(Computer)俗称电脑,是现代一种用于高级计算,使用非常广泛 的设备,主要由计算机硬件和计算机软件两个部分组成。

• 计算机硬件是客观存在的各种计算机相关设备,而计算机的软件是用于 控制各种硬件设备完成各种功能。

常见的主要硬件

• 计算机硬件(Computer Hardware)主要包括:中央处理器(CPU)、内存、 硬盘、输入输出设备、主板、机箱和电源等辅助设备。

在这里插入图片描述

CPU的概述

• CPU - 中央处理器(英文Central Processing Unit)

	- 是计算机中最核心的部件,类似于人的大脑
	
	- 是一台计算机运算核心和控制核心,所有运算都由CPU完成
	
	- 其功能主要是解释计算机指令以及处理计算机软件中的数据

内存的概述

• 内存 - 是计算机中的存储部件,内存(Memory)也被称为内存储器。

	- 用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据
	
	- CPU可以直接访问内存的数据,而且效率比较高
	
	- 容量小不能实现永久存储,一旦断电会造成数据的丢失
	
	- 时刻记住ctrl+s快捷键进行保存

硬盘的概述

• 硬盘 - 是计算机中的存储部件

	- 主要用于永久存放数据内容,容量大且断电不丢失
	
	- CPU不能直接访问硬盘中数据,若希望访问则需要先加载到内存中

科普小知识

1Tb = 1024Gb

1Gb = 1024Mb

1Mb = 1024Kb

1Kb = 1024Byte (字节) 

1Byte = 8Bit (二进制位)

输入输出设备

• 其中键盘叫做标准输入设备,显示器叫做标准输出设备。

在这里插入图片描述

常见的主要软件

• 计算机软件(Computer Software)可分为系统软件和应用软件,系统软件 就是操作系统,是其他软件的基础。

• 主流的操作系统有:Windows/Unix/Linux/IOS/Android。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-knpxIYsV-1640841205583)(/Users/hyq/Library/Application Support/typora-user-images/image-20211221110410025.png)]

计算机的体系结构

在这里插入图片描述

2、Java语言的概述

计算机语言的概述

• 语言是人与人之间进行沟通的主要表达方式。如:中国人与中国人使用 用普通话沟通。而中国人要和英国人交流,就要使用英语沟通。

• 计算机语言是人与计算机之间交流的表达方式,该语言有很多种。

计算机语言的发展

• 第一代语言:机器语言 指令以二进制代码形式存在,最开始使用穿孔卡片。

• 第二代语言:汇编语言。 使用助记符表示一条机器指令,如:ADD、SUB等。

• 第三代语言:高级语言  Java、C ,C++,PHP , Python,Scala等。

Java语言的江湖地位

在这里插入图片描述

Java语言的发展历史

• 1995年 Java问世。

• 1996年 Java 1.0。

• 1999年 Java 1.2发布(JAVA SE\JAVA EE\JAVA ME)。

• … … …

• 2004年 Tiger 发布(JAVA5.0),Java 登录火星。

• 2011年 7月由Oracle正式发布Java7.0。

• 2014年 3月19日,Oracle公司发布Java8.0的正式版。

• 2017年 9月21日,Java9.0正式发布。

• 2018年 9月25日,Oracle官方宣布Java11正式发布。

在这里插入图片描述

桌面应用

• Java SE(Java Platform, Standard Edition)称之为“Java平台标准版”,是 Java平台的基础。

• Java SE包含了运行Java应用所需要的基础环境和核心类库。

• Java SE还定义了基于桌面应用的基础类库,通过使用这些类库,我们可以编写出类似于像Office那样的丰富多彩的桌面应用。

企业应用

• Java EE(Java Platform,Enterprise Edition)称之为“Java平台企业版”。

• Java EE构建在Java SE基础之上,用于构建企业级应用。所谓企业级应用 是指那些为商业组织、大型企业而创建的应用系统,例如:电信的“计费系统”、银行的“网银系统”、企业中的“客户关系管理系统”等等。

移动应用

• Java ME (Java Platform,Micro Edition)称之为Java 平台微型版。

• 为机顶盒、移动电话和PDA等嵌入式消费电子设备提供的Java解决方案。 随着3G移动智能平台时代的到来,特别是以Java为核心编程语言的 Android智能平台的迅速普及,Java ME已经走向淘汰。

3、开发环境的搭建和使用 (重点)

开发工具的下载和安装

下载方式

	方式一:通过官网下载 www.sun.com www.oracle.com 
	
	方式二:通过搜索下载 www.baidu.com www.sogou.com

安装方式

 若下载的是安装版,则一路点击下一步安装即可;

 若下载的是绿色版,则直接解压即可;

 无论是安装版还是绿色版,切记安装的路径中不要有中文!

jdk安装教程

https://blog.csdn.net/weixin_44796239/article/details/121979379

Jdk的目录结构

	• bin目录 - 该目录下主要存放JDK的各种工具命令。
	
	• conf目录 - 该目录下主要存放jdk的相关配置文件。
	
	• include目录 - 该目录下主要存放了一些平台的头文件。
	
	• jmods目录 - 该目录下主要存放了JDK的各种模块。
	
	• legal目录 - 该目录下主要存放了JDK各模块的授权文档。
	
	• lib目录 - 该目录下主要存放了JDK工具的一些补充jar包和源代码。

相关的概念

• JDK - 称为Java开发工具包( Java Development Kit)。Java开发人士需 要下载和安装JDK,目前的主流版本为JDK11。

• JRE - 称之为Java SE运行时环境(Java SE Runtime Environment),提供 了运行Java应用程序所必须的软件环境等。无论是开发还是运行Java应用 都必须安装。

• javac.exe - 编译器,主要用于将高级Java源代码翻译成字节码文件。

• java.exe - 解释器,主要用于启动JVM对字节码文件进行解释并执行。

Jdk、jre、jvm之间的关系

在这里插入图片描述

Java开发的常用工具

• 文本编辑器(TE,Text Editor)

• 记事本、Notepad++、Edit Plus、UltraEdit、…

• 集成开发环境(IDE,Integrated Development Environment ) • Jbuilder、NetBeans、Eclipse、MyEclipse、IDEA、…

编写Java程序的流程

	• 新建文本文档,将文件扩展名由xxx.txt修改为xxx.java;
	
	• 使用记事本/Notepad++的方式打开文件,编写Java代码后进行保存; 
	
	• 启动dos窗口,并切换到.java文件所在的路径中;
	
	• 使用javac xxx.java进行编译,生成xxx.class的字节码文件;
	
	• 使用java xxx 进行解释执行,打印最终结果;

常见的错误

•错误:需要class,interface或enum =>通常都是class关键字拼写错误

• 错误: 找不到符号 => 通常因为单词拼写错误或Java中不支持这样的单词

• 错误: 需要';' => 通常都是因为少写分号,加上英文版分号即可

• 错误: 非法字符: '\uff1b' => 通常是因为出现了中文标点符号,修改为英文版即可

• 错误: 在类 PrintTest 中找不到 main 方法, 请将 main 方法定义为: => main写成了mian

编译和运行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y4YNV3Hx-1640841205592)(/Users/hyq/Library/Application Support/typora-user-images/image-20211221124337268.png)]

Java11新特性之简化的编译运行

• 新建文本文档,将文件扩展名由xxx.txt修改为xxx.java;

• 使用记事本/Notepad++的方式打开文件,编写Java代码后进行保存; 

• 启动dos窗口,并切换到.java文件所在的路径中;

• 使用java xxx.java 进行编译运行,打印最终结果(慎用);

常用的快捷键

ctrl+s 保存 ctrl+c 复制 ctrl+v 粘贴 ctrl+a 全选 ctrl+x 剪切

ctrl+z 撤销 ctrl+f 搜索 ctrl+shift 切换输入法,使用shift进行中英文切换

windows+d 回到桌面 windows+e 打开计算机 windows+l 锁屏 windows+r 打开运行,
输入cmd后回车就会启动dos窗口 windows+tab 切 换任务 alt+tab 切换任务

ctrl+alt+delete 启动任务管理器

注释

• 注释用于进行代码说明,是给程序员看的文字描述,编译器会忽略注释。

• 基本分类

	// 单行注释 ,从 // 开始,到本行结束,都是注释。
	
	/* */ 多行注释,从/* 开始,到*/结束,中间所有都是注释。
	
	/** */ 多行/文档注释,从/**开始,到*/结束,是一种支持提取的注释。

• 多行注释不允许嵌套使用!

环境变量的配置

• 基本概念

通常情况下可执行文件只能在该文件所在的路径中使用,为了使得该可 执行文件可以在任意路径中使用,则需要将该文件所在的路径信息配置到 环境变量Path中。

• 配置方式

计算机 => 右击,选择属性 => 高级系统设置 => 高级 => 环境变量 => 系统变量 => 找到Path,点击编辑 => 将javac.exe所在的路径信息配置到 Path变量值的最前面,加上英文版的分号 => 一路点击确定即可

• 注意事项 切记Path变量原来的变量值不要删除,配置完毕后记得重启dos窗口!

跨平台原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zzH0GUol-1640841205594)(/Users/hyq/Library/Application Support/typora-user-images/image-20211221124516243.png)]

Java字节码可以通过JVM翻译为具体平台能够执行的机器指令。由于Sun 定义了JVM规范,而且不同的操作系统大多提供了JVM实现,才使得相同 的一个字节码文件可以在不同的系统上运行,从而使Java赢得了“一次编 译,到处使用”的美名。

4、作业:

1、独立完成JDK的安装与环境变量的配置

2、java是如果做到“一次编译,到处运行”的?

3、简述java程序的运行过程
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1. 实验目的 本实验旨在通过设计一个简单的石头迷阵游戏来帮助学生深入理解面向对象程序设计和Java语言的基本概念,包括类、对象、继承、接口、异常处理等。 2. 实验要求 设计一个石头迷阵游戏,要求实现以下功能: (1)设计一个迷阵类Maze,包含一个二维数组表示迷阵的地图,以及一个方法printMaze()用于打印地图。 (2)设计一个角色类Role,包含角色的位置坐标、移动方法move()、攻击方法attack()等。 (3)设计一个怪物类Monster,包含怪物的位置坐标、移动方法move()、攻击方法attack()等。 (4)设计一个游戏控制类Game,包含游戏的开始、进行和结束方法,以及游戏中的各种操作。 (5)实现异常处理机制,防止程序崩溃。 3. 实验设计 在本实验中,我们采用了面向对象的程序设计思想,将游戏中的各种元素抽象成不同的类,并通过继承、接口等方式进行组合和扩展。具体的实现步骤如下: (1)设计Maze类 Maze类是游戏中的地图类,包含一个二维数组map表示迷阵的地图,以及一个方法printMaze()用于打印地图。具体代码如下: ```java public class Maze { private int[][] map; // 迷阵地图 private int rows; // 迷阵行数 private int cols; // 迷阵列数 public Maze(int[][] map) { this.map = map; this.rows = map.length; this.cols = map[0].length; } // 打印地图 public void printMaze() { for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { System.out.print(map[i][j] + " "); } System.out.println(); } } } ``` (2)设计Role类 Role类是游戏中的角色类,包含角色的位置坐标、移动方法move()、攻击方法attack()等。具体代码如下: ```java public abstract class Role { protected int x; // 角色横坐标 protected int y; // 角色纵坐标 protected int hp; // 角色血量 protected int attack; // 角色攻击力 // 移动方法 public abstract void move(int direction); // 攻击方法 public abstract void attack(Role enemy); // 受伤方法 public void hurt(int damage) { hp -= damage; if (hp <= 0) { System.out.println("角色死亡!"); } } } ``` (3)设计Monster类 Monster类是游戏中的怪物类,包含怪物的位置坐标、移动方法move()、攻击方法attack()等。具体代码如下: ```java public class Monster extends Role { public Monster(int x, int y, int hp, int attack) { this.x = x; this.y = y; this.hp = hp; this.attack = attack; } @Override public void move(int direction) { // 怪物随机移动 int dx = (int) (Math.random() * 3) - 1; int dy = (int) (Math.random() * 3) - 1; if (x + dx >= 0 && x + dx < Game.MAP_ROWS && y + dy >= 0 && y + dy < Game.MAP_COLS) { x += dx; y += dy; } } @Override public void attack(Role enemy) { System.out.println("怪物攻击!"); enemy.hurt(attack); } } ``` (4)设计Player类 Player类是游戏中的玩家类,继承自Role类,包含玩家的位置坐标、移动方法move()、攻击方法attack()等。具体代码如下: ```java public class Player extends Role { public Player(int x, int y, int hp, int attack) { this.x = x; this.y = y; this.hp = hp; this.attack = attack; } @Override public void move(int direction) { switch (direction) { case Game.UP: if (x > 0 && Game.map[x - 1][y] != Game.WALL) { x--; } break; case Game.DOWN: if (x < Game.MAP_ROWS - 1 && Game.map[x + 1][y] != Game.WALL) { x++; } break; case Game.LEFT: if (y > 0 && Game.map[x][y - 1] != Game.WALL) { y--; } break; case Game.RIGHT: if (y < Game.MAP_COLS - 1 && Game.map[x][y + 1] != Game.WALL) { y++; } break; } } @Override public void attack(Role enemy) { System.out.println("玩家攻击!"); enemy.hurt(attack); } } ``` (5)设计Game类 Game类是游戏的控制类,包含游戏的开始、进行和结束方法,以及游戏中的各种操作。具体代码如下: ```java import java.util.Scanner; public class Game { public static final int UP = 1; public static final int DOWN = 2; public static final int LEFT = 3; public static final int RIGHT = 4; public static final int WALL = 1; public static final int PLAYER = 2; public static final int MONSTER = 3; public static final int TREASURE = 4; public static final int MAP_ROWS = 10; public static final int MAP_COLS = 10; public static int[][] map = new int[MAP_ROWS][MAP_COLS]; // 游戏地图 private Maze maze; // 迷阵对象 private Player player; // 玩家对象 private Monster monster; // 怪物对象 // 开始游戏 public void start() { initMap(); maze = new Maze(map); maze.printMaze(); initPlayer(); initMonster(); Scanner scanner = new Scanner(System.in); while (true) { System.out.print("请输入方向(w上 s下 a左 d右):"); String input = scanner.next(); int direction = getDirection(input); if (direction == 0) { System.out.println("输入有误!"); } else { player.move(direction); checkCollision(); } } } // 初始化地图 private void initMap() { for (int i = 0; i < MAP_ROWS; i++) { for (int j = 0; j < MAP_COLS; j++) { if (i == 0 || j == 0 || i == MAP_ROWS - 1 || j == MAP_COLS - 1) { map[i][j] = WALL; } else { map[i][j] = (int) (Math.random() * 3) + 2; } } } } // 初始化玩家 private void initPlayer() { int x, y; do { x = (int) (Math.random() * MAP_ROWS); y = (int) (Math.random() * MAP_COLS); } while (map[x][y] != PLAYER); player = new Player(x, y, 100, 10); } // 初始化怪物 private void initMonster() { int x, y; do { x = (int) (Math.random() * MAP_ROWS); y = (int) (Math.random() * MAP_COLS); } while (map[x][y] != MONSTER); monster = new Monster(x, y, 50, 5); } // 获取方向 private int getDirection(String input) { switch (input) { case "w": return UP; case "s": return DOWN; case "a": return LEFT; case "d": return RIGHT; default: return 0; } } // 检测碰撞 private void checkCollision() { if (player.x == monster.x && player.y == monster.y) { player.attack(monster); monster.attack(player); } } } ``` 4. 实验结果 经过测试,我们的石头迷阵游戏能够正常运行,并且实现了基本的功能,如玩家移动、怪物移动、玩家攻击、怪物攻击等。同时,我们还实现了异常处理机制,确保程序不会因为错误输入或其他异常情况而崩溃。 5. 实验总结 通过本次实验,我们深入学习了面向对象程序设计和Java语言的基本概念,如类、对象、继承、接口、异常处理等。同时,我们通过实际设计一个简单的石头迷阵游戏来加深对这些概念的理解和掌握。在实验过程中,我们还学习了如何使用Java的基本语法和API,如数组、循环、条件语句、Scanner类等。通过这些实践,我们不仅提高了自己的编程能力,还加深了对计算机科学的理解和认识,为以后的学习和工作打下了坚实的基础

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

添砖#Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值