今日内容
1. Java语言相关的介绍(发展历史<重要版本>、跨平台原理)
2. Java开发的环境(jvm/jre/jdk的关系、jdk的安装和环境变量的配置)搭建
3. Java的第一个入门程序(HelloWorld)
4. Java第一个入门程序的常见问题 ====>>> 自己写代码的时候避免这些问题 【难点】
5. Notepadd++高级记事本的使用
6. Java的基本语法 【重点】
* 注释
* 关键字
* 常量
* 变量(数据类型)
* 标识符(语法规则)
* 类型转换 【难点】
学习目标
1. 能够说出Java语言的跨平台原理
2. 能够独立下载并安装JDK
3. 能够独立配置path环境变量
4. 能够独立编写HelloWorld案例并编译执行
5. 能够说出Java中的8种基本数据类型
6. 能够定义基本数据类型的变量并使用变量名输出
7. 能够说出标识符的命名规则
8. 能够说出基本数据类型之间相互转换的规则
具体内容
1. Java语言发展史
- Java语言是由谁, 在哪家公司开发的?
* Java语言:
它是一门机器语言,不同与人与人之间交流方式(在中国使用普通话进行交流)
* Java是由詹姆斯.高斯林研发出来的,最早是SUN公司。后面SUN公司被Oracle公司收购!
- Java语言的发展史?
* Java自1994年诞生,在1995年发行第一个版本(1.0),随着时间的推移,后面陆陆续续发行了其它版本,在后面的这些版本中,具有划时代意义是1.5版本,为了突出这个版本的里程碑意义,将其更名为5.0。在此版本后,也有很多其它的版本,目前最新的是14版本。但是市场主流使用的是8.0版本,我们教学也使用8.0版本!
- Java语言的平台划分?【了解即可】
* Java语言分为三个领域:
Java桌面开发: JavaSE的内容(做一些桌面的应用程序:扫雷、坦克大战、打飞机、贪吃蛇、斗地主) 【Java语言的基石】
Java移动端开发:手机、平板(诺基亚的塞班系统)
Java企业级开发:京东网上商城、顺丰物流、办公自动化管理系统
2. Java语言的跨平台原理【重要】★
- 什么是跨平台?
* 平台:操作系统(Windows、Linux、Mac OS)
* 跨平台:同一个程序,能够在不同的操作系统中运行!
- 跨平台的原理是?
* Java的跨平台,是通过不同版的虚拟机来实现的!
java程序要想在windows系统中运行,那么只需要有一个windows版的虚拟机即可!
java程序要想在Linux系统中运行,那么只需要有一个Linux版的虚拟机即可!
java程序要想在Mac OS系统中运行,那么只需要有一个Mac OS版的虚拟机即可!
- JVM本身可以跨平台吗?
不可以。【如果可以,那么只需要一个版本的jvm即可,但是不行啊】

3. JRE和JDK 【重要】
- 什么是JDK?
- 什么是JRE?
- 什么是JVM?
- 三者之间的关系是什么?
* JDK: java开发工具包 包含了jre和开发工具包(编译工具和运行工具) 编译工具:javac.exe 运行工具:java.exe * JRE: java运行环境 包含了jvm和核心类库 核心类库:别人应该写好的一些程序。【我们自己在编写java程序的时候可以拿过来使用】* JVM: java虚拟机 java程序执行的地方!* 这三者都是软件!其中:jdk包含了jre,jre包含了jvm* 三者的关系: jdk > jre > jvm* 结论:我们要想进行java开发,只需要有jdk就可以了!
4. JDK的下载和安装 ★
- A:JDK的下载
官网:http://www.oracle.com Oracle公司的官网会不断的更新主页面!
-
B:JDK的安装
大家的开发环境涉及的软件的版本尽量统一!!! ======>>>>避免就业班出现的一些不必要的麻烦!JDK它分为绿色版和安装板! 绿色版:直接解压压缩包就可以使用(一台电脑可以安装很多jdk) 安装版: 需要按照特定的步骤,一步一步的去执行安装操作(一台电脑只能安装同一个版本的一个jdk) 安装的原则:能使用绿色版就不使用安装板!我们这里使用JDK8,安装是傻瓜式的(下一步,下一步!) =======>>>安装路径不要有中文和特殊符号!D:【不要是系统盘】 Develop Tlias tlias data jdk jdk1.8 jdk11.0 NotePad++ ...jdk8在安装的过程中,出现了一个界面 ,3BL 千万不要关闭! 按照它默认的路径安装即可!!!! -
C:验证安装是否成功
进入安装JDK的bin目录,在当期目录的地址位置输入cmd回车,在弹出的DOS窗口里面分别输入javac回车和java回车,能够在屏幕看到一些内容,说明JDK安装成功! -
JDK目录结构说明
目录名称 说明bin 该路径下存放了JDK的各种工具命令。javac.exe和java.exe就放在这个目录---------------------------------------------------------------------------------conf 该路径下存放了JDK的相关配置文件include 该路径下存放了一些平台特定的头文件jmods 该路径下存放了JDK的各种模块legal 该路径下存放了JDK各模块的授权文档lib 该路径下存放了JDK工具的一些补充JAR包
- 5分钟时间自己操作一遍
JDK的安装说明:注意目录要求!
5. 常用的DOS命令
- 为什么要学习命令提示符?
- 如何打开命令提示符(DOS窗口)?
* 为什么要学习命令提示符? 后面我们要使用javac.exe和java.exe开发工具,就必须进入指定的目录!* 如何打开命令提示符(DOS窗口)? win+r(一起按), 输入框中输入 cmd,然后回车 * dos常用命令 ① 盘符切换: 直接输入盘符名称:+回车 【盘符名称大小写均可】 ② 查看当前盘符(目录)里面的内容:dir ③ 目录切换: cd 目录结构 D:\Develop\jdk\jdk1.8.0_172\bin> 【你也可以一次进入一个目录,执行多次cd命令】 ④ 返回根目录:cd / 【可以从任意目录直接返回根目录】 ⑤ 返回上一级目录: cd .. ⑥ 清屏目录: cls
在按下win+r之后输入的: 1. calc -> 打开计算器 2. notepad -> 打开记事本
6. Path环境变量的配置 ★
- 为什么要配置环境变量?
- 如何配置?
总结:1. 为什么要配置环境变量? 正常情况,我们想要使用javac.exe和java.exe开发工具,必须进入指定的目录 D:\Develop\jdk\jdk1.8.0_172\bin 为了方便开发,我们不希望每次都进入这个目录,那么可以通过环境变量的配置实现在任意目录都可以直接使用这2个开发工具。 2. 如何配置?
win10配置截图:


win7配置截图:



配置环境过程中可能出现的问题:1. 配置了环境变量,在DOS窗口执行javac命令不好使? 可能是你在配置环境变量之前打开了窗口,关闭窗口重新打开一个!2. 环境变量失效问题 Win10, 重启电脑之后, 可能就会失效 解决方案: 找到环境变量的path, 进入编辑文本, 不需要修改任何内容, 直接确定即可 Win10的同学,建议将%JAVA_HOME%\bin 上移到顶端 一个电脑可以安装多个版本的JDK,最终使用哪一个,取决于环境变量的配置!%JAVA_HOME%\bin;D:\Develop\jdk\jdk1.8.0_172
7. HelloWorld案例 ★
- Java程序开发运行的基本步骤是什么?
* ①创建Java文件 新建一个文本文档,修改扩展名为.java =====>>> HelloWorld.java

* ②使用记事本打开java文件,在java文件中编写java代码(源代码) [目前:固定写法(记忆),具体内容后续课程陆续讲到] 【程序员能够读懂!】
public class HelloWorld{ public static void main(String[] args){ System.out.print("Hello World!"); }}

* ③编译java代码(对应java文件) 【让程序员能够读懂的内容,变成机器能够识别的内容】 借助jdk开发工具javac.exe! 在HelloWorld.java所在的目录(已经配置了环境变量),执行 javac HelloWorld.java即可! 注意:虽然我们配置了环境变量,但是它仅仅只是保证了可以在任意目录执行javac.exe或者java.exe文件,但是你还得给定java文件所在的位置! 一旦将java程序编译成jvm能够识别的内容,那么会多出一个文件,它是以.class结尾的(字节码文件)!

* ④执行字节码文件 借助jdk的开发工具java.exe! 在HelloWorld.class文件所在目录中执行命令: java HelloWorld

注意:若修改了java源代码,要想生效,必须先保存文件,然后重新编译java文件生成新的字节码文件!
win10系统特别注意:
系统默认是将所有文件的扩展名隐藏了,所以务必将文件的扩展名的复选框勾选【文件的扩展名就不会是.java,而是.txt】
- 10分钟时间练习
- 使用java程序,在屏幕上输出
你不努力,谁也给不了你想要的生活!将来的你一定感谢现在拼命的自己!
8. HelloWorld案例常见问题
- 总结
1.文件名与类名不一致【HelloWorld.java class Helloworld】

2.单词拼写错误 【void 写成了 viod或者 String写成了string】


3.main方法书写错误 将main写成了mian

4.类名(第三方类库)书写错误 【System写成了system】

5.代码结束未写分号

6.使用了中文的符号

说明: ★ BUG:编写的程序存在问题,不能正常执行! ★ 以后我们写java代码,每行代码结束,都会以;为标记! ★ 在书写代码的时候,我们输出中文,出现的结果不是预期的(没有报错),可能是文件保存的时候使用的编码不正确! ★ 以后但凡更改了java源代码,那么之后都需要重新编译再执行! ★ println和print的区别: 前者打印输出内容后,换行! 后者打印输出内容后,不换行!
- 请找出下方HelloWorld案例的错误, 并修改
public class Demo { // 类名与文件名称不一致! public static void main(String[] args) { System.out.println("HelloWorld"); }}
9. Notepad++ 软件的安装和使用
- Notepad软件安装后的设置
软件安装:傻瓜式的下一步下一步完成,建议安装目录与之前的JDK在同一级创建一个目录设置 -> 首选项 A. 新建 -> windows -> 默认语言Java -> 文件编码ANSI B. 自动完成问题:我们已经配置了环境变量,为什么在编译java文件的时候,还要进入指定位置? 环境变量配置只是处理了 执行文件javac.exe和java.exe 要编译哪个文件,是不是也要找到这个文件的位置!
- 5分钟时间安装并配置
10. 注释
- 什么是注释?
- 注释的分类?
- HelloWorld说明
1. 什么是注释? 对Java代码进行一些文字性的描述信息(解释代码是啥意思) 【注释是给人(程序员)看的】它是不参与程序执行的!!!2. 注释的分类? 单行注释: // 注释内容 多行注释: /* 注释内容 */ 文档注释: /** 注释内容 */ 【了解】
/** 这是一个文档注释:一般对类进行描述,我们使用文档注释 这个类是我们的第一个Java程序! class:它是一个关键字(稍后讲解),它后面的内容就是一个类名 HelloWorld:它是一个类名(类是java里面的基本组织单位,所有的代码都是写在类中的)*/public class HelloWorld{ /* 这是一个多行注释,注释的内容可以写在多行!多行注释一般写在方法上面 main:这是一个方法(它是Java程序运行的入口方法) 【固定写法】 */ public static void main(String[] args){ // 这是一个单行注释,注释的内容只能在当前行! System.out.println("HelloWorld"); // 这是一条输出语句,输出完毕后会换行 }}
注意:注释的嵌套问题 多行注释中不能嵌套多行注释! 【在不清楚注释嵌套的情况下,就不要玩嵌套!!!】
11. 关键字
- 什么是关键字?
- 关键字有哪些特征?
总结:1. 什么是关键字? 在java中被赋予特殊含义的单词(被java语言内定了)!======>>>> 后面在定义变量(为变量取名)的时候不能使用这些关键字~ 例如: public class static void 具体什么含义,在后续课程会陆续学习!2. 关键字的特征?【如何识别关键字】 ① 它都是由一些小写的单词组成!(全部都是小写字母) ② 在高级记事本中是高亮显示(有特殊的颜色) 我们在后续会接触到很多关键字!我们每接触一个,就掌握一个!问题: main是关键字吗? 它不是关键字!但是它的确有特殊含义,主方法(程序入口方法)的单词是固定的!
12. 常量
- 什么是常量?
- 常量的分类有哪些?
我们编写Java程序很多时候是需要描述一些事物的特征!(描述某位同学<姓名、年龄、身高、性别>) 而在这些数据中,性别是固定的(一旦出生后不可更改了)!总结:1. 什么是常量? 在java程序运行过程中,其数值不可改变的量! 2. 常量的分类? 字符串常量:标志是一对双引号!【双引号中间可以书写任意内容(不写也行)】 "HelloWorld","么么哒!","a","@","" 字符常量:标志是一对单引号!【单引号中间不能空着不写,而且只能出现单个字符】 'a','1','国','@' 【‘’ 这是错误的!】 整数常量:全部都是数字,不能有小数点 100,-58 小数常量:全部都是数字,有小数点 3.14,-10.5 布尔常量:只有2个取值(true,false) 【"true" 错误,它是一个字符串常量】 空常量:null(只有这么一个取值,不能直接打印输出) 【面向对象章节会学习到】 3. 注意问题 ① 字符串常量,里面可以空着不写任何内容 ② 字符常量,不能空着不写,不能写多个字符(单个字母,单个数字,单个汉字都是一个字符) ③ 布尔常量,不能加双引号 ④ 空常量,不能直接打印输出
public class Demo01{ public static void main(String[] args){ // 字符串常量 System.out.println("$"); System.out.println("itheima"); System.out.println("国"); System.out.println(""); // 字符常量 System.out.println('a'); System.out.println('1'); System.out.println('@'); System.out.println('男'); System.out.println(' '); // 下列三种字符常量对应代码都是错误的! // System.out.println('abc'); //System.out.println('10'); //System.out.println(''); // 整数常量 System.out.println(100); System.out.println(-58); // 小数常量 System.out.println(3.14); System.out.println(-10.5); // 布尔常量:只有2个取值 System.out.println(true); System.out.println(false); // 空常量 【不能直接打印输出】 //System.out.println(null); }}
10分钟时间练习
请在屏幕上输出一个学生的信息,包含姓名、性别、年龄、身高、地址。
public class Demo02{ public static void main(String[] args){ // 姓名(字符串常量) System.out.println("虞姬"); // 性别(字符常量) System.out.println('女'); // 年龄(整数常量) System.out.println(18); // 身高(单位m,小数常量) System.out.println(1.65); //System.out.println(1.65+"米"); // 地址(字符串常量) System.out.println("北京市顺义区白各庄"); }}
13. Java中的数据类型 ★
- 为什么要有数据类型?
- Java的基本数据类型一共分为哪些?
总结:1. 为什么要有数据类型? 所有的数据都是要进行存储的!数据类型的出现就是为了让JVM合理的为数据分配合适的空间!★★★★★ 【我们写的java程序在JVM中运行,JVM它是一款软件,软件运行会消耗内存】 int number = 100; // int类型占据4个字节空间,数值100可以使用byte类型存储! byte number = 100; // byte类型只占据1个字节空间 在计算机中,存储数据的最小单元是 bit(位),存储的数据都是二进制(里面只有0和1)的,每1个0或者1就代表一个位。在计算集中,存储数据的最小单位是字节byte(每8个位就成为了1个字节),而显示文件的大小通常是KB或者更高的单位。 1byte = 8bit 1KB = 1024 byte 1MB = 1024 KB 1GB = 1024 MB 1TB = 1024 GB 在前面我们定义了字符串常量、布尔常量等等它在内存中都会占据空间 2. 数据类型分类 【非常重要!】 ★ 基本数据类型:四类八种 【今天的重点】 整型: byte 1个字节 short 2个字节 int 4个字节 long 8个字节 浮点型: float 4个字节 double 8个字节 字符型: char 2个字节 布尔型: boolean 1个字节 ★ 引用数据类型:数组、类、接口 【后续课程陆续学习】 字符'国'占据多少位?16位! 【字符占据2个字节,每个字节8个位】 注意: 类型的取值范围与占据空间的大小无关的!!!!! byte类型的最大取值 127 在没有特殊说明的情况下,整数默认的是int类型,浮点数默认的是double类型
14. 变量 ★
- 什么是变量?
- 变量的格式是?
- 变量的作用?
总结:1. 什么是变量? 变量:在程序运行过程中,值可以改变的量,本质是内存中一块区域(java程序都是在内存中运行的!) 变量组成: 数据类型 变量名称 变量值 三部分构成!2. 变量的定义格式 格式1:先定义变量,后赋值 数据类型 变量名称; 变量名称 = 变量值; 例如: int number; number = 100; 格式2:在定义变量的同时,直接赋值 数据类型 变量名称 = 变量值; 例如: int number = 100; 简而言之: byte/short/int/long/float/double/char/boolean a; a = 值;【根据不同的类型赋不同的值】 byte/short/int/long/float/double/char/boolean a = 值;【根据不同的类型赋不同的值】 3. 变量的使用 获取变量的值: 格式:变量 [可以进行输出] System.out.println(number); 修改变量的值: 格式: 变量名称 = 新的变量值; number = 200; 4. 变量的作用 能够非常方便修改程序中那些需要变动的值! System.out.println(true); System.out.println(true); System.out.println(true); System.out.println(true); System.out.println(true); 上面使用常量,要修改需要全部挨个完成,如果使用变量会非常方便 boolean flag = true; System.out.println(flag); System.out.println(flag); System.out.println(flag); System.out.println(flag); System.out.println(flag); // 如果要将输出到数据弄成false 使用变量,我们只需要将 flag = false;// 代码演示:public class VariableDemo{ public static void main(String[] args){ // 定义变量(先定义后赋值) boolean flag; // 定义变量,没有赋值的 flag = true; // 为变量赋值 // 定义变量(在定义的同时直接赋值) char ch = 'A'; // 获取变量的值(打印输出) System.out.println(flag); System.out.println(ch); // 修改变量的值 flag = false; ch = '牛'; System.out.println(flag); System.out.println(ch); } }
- 变量的扩展讲解:
1. 变量可以先定义, 再赋值.也可以在定义的时候直接赋值!2. 一条语句可以定义n个变量.【能看懂即可,一般开发不会使用,但是面试会出现!】
public class VariableDemo2{ public static void main(String[] args){ // 在一个语句中定义多个变量(未赋值) int x,y,z; // 一次性定义了3个变量,没有赋值 // 为变量赋值 x = 10; y = 20; z = 30; // 使用变量 System.out.println(x); System.out.println(y); System.out.println(z); System.out.println("-----------------"); // 在一个语句中定义多个变量同时赋值 int m=10,n=20,p=30; // 使用变量 System.out.println(m); System.out.println(n); System.out.println(p); } }
- 10分钟练习: 请分别定义byte、short、int、double、char以及boolean这6种类型的变量,并将值输出到屏幕上。
/** 请分别定义byte、short、int、double、char以及boolean这6种类型的变量,并将值输出到屏幕上。*/public class VariableDemo3{ public static void main(String[] args){ // 定义byte类型的变量 byte a = 10; System.out.println(a); // 定义short类型的变量 short b = 20; System.out.println(b); // 定义int类型 int c = 30; System.out.println(c); // 定义double类型的变量 double d = 12.03; System.out.println(d); // 定义char类型的变量 char e = 'a'; System.out.println(e); // 定义boolean类型的变量 boolean f = true; System.out.println(f); } }
15. 变量的注意事项
- 总结:
1. 定义变量的时候(定义在方法中),需要先赋值,后使用 【定义在方法中变量我们称之为局部变量】 public static void main(String[] args){ // 定义变量 int a; // 定义了变量,没有赋值 System.out.println(a); // 错误: 可能尚未初始化变量a //【执行javac命令出现的错误,我们称之为编译报错;执行java命令报错,我们称之为运行时报错!】 } 2. 变量在定义的时候,变量名称重复 public static void main(String[] args){ // 定义变量 int a; // 定义了变量,没有赋值 char a = 'a'; // 在定义一个变量 (错误: 已在方法 main(String[])中定义了变量 a),简而言之,变量名称不允许重复! } 3. 定义long类型的数据时,建议在后面添加一个L //long b = 10000000; // 右侧是一个int类型的数值(整数默认是int类型,当前的数值没有超过int类型的最大取值) //long b = 100000000000; // 右侧是一个int类型的数值(整数默认是int类型,当前数值超过了int类型的最大取值,所以会报错!) long b = 100000000000L; // 加了L说明数值是一个long类型的,没有超过long类型的最大取值,代码正确! 4. 定义float类型的数据,后面添加F //float d = 3.15; // 小数默认是double,你将这个double类型的数值赋值给一个float类型的变量,出现了不兼容类型的错误 float d = 3.15F; // 明确指定这个小数是一个float类型
16. 标识符 ★
- 什么是标识符?
- 标识符的组成规则?
总结: 【学习标识符主要注意2个问题:它的规则?能够识别标识符是否符合要求!】1. 什么是标识符? 就是我们为 类名、变量名称、方法名称取名字!都是自定义!2. 标识符的组成 只能是 数字(0-9)、字母(a-z或者A-Z)、下划线(_)、美元符号($)
标识符的命名规范1. 硬性要求: ★ 不能以数字开头 ★ 不能是关键字(关键字已经被内定了,赋予了特殊的含义!) ★ 严格区分大小写的 ★ 只能是 数字(0-9)、字母(a-z或者A-Z)、下划线(_)、美元符号($) 2. 江湖规矩(软性要求) ★ 见名知意,别人一看到类名就知道这个类是干啥的,比如:public class Student{} ====>>> 这个类是用于描述学生信息的 针对类名:大驼峰 类名:描述朋友 一个单词:单词的首字母大写,比如:Friend 多个单词:每个单词的首字母都要大写:比如,男朋友 BoyFriend 针对变量名称、方法名称:小驼峰 变量/方法名称: 一个单词:每个字母都是小写 int number = 10; 多个单词:第一个单词的首字母小写,其它的单词的首字母都大写 int oddNumber = 9;
17. 类型转换 ★
- 类型转换的分类有?
- (隐式)转换指的是?
- (强制)转换指的是?
总结: 1. 类型转换分为 自动类型转换和强制类型转换 2. 自动类型转换(我们不用手动处理) 将小范围的数值赋值给大范围的变量! 只要遵循范围的规则:【类型转换都是数字型的!布尔类型不参与类型转换!】 byte--->>short--->>>int--->>long--->>float--->>double char--->>>int--->>long--->>float--->>double 例如: long number = 100; // 将小范围的数值100(int类型),赋值给大范围(long类型)的变量number byte b = 100; // 代码也没有问题,比较特殊(还有short),只要数值没有超过byte的最大取值范围即可! 3. 强制类型转换(手动处理) 将大范围的数值赋值给小范围的变量 处理的格式: 小范围数据类型 变量名称 = (小范围的数据类型)大范围数值; 例如: long c = (long)3.15; // 小数默认是double类型,将大范围的数值赋值给小范围的变量,必须强转! System.out.println(c); // 3 强制转换存在2个问题: 丢失精度:大范围的浮点数转成小范围的整数 long c = (long)3.15; // 小数默认是double类型,将大范围的数值赋值给小范围的变量,必须强转! System.out.println(c); // 3 数据溢出:大范围的整数转成小范围的整数 【有一个水桶,里面有10L水,然后倒入一个容量只有1L的水杯】 byte d = (byte)200L; System.out.println(d); // -56 ★ 强制类型转换风险极大,慎用!!!
面试题:问题: 下面的程序是否有问题,如果有问题,请指出并说明理由(必须掌握!!!!)
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
错误原因: 因为所有整数默认都是int类型, 所以b1和b2相加的时候, 会先将自己提升为int类型 两个int相加的结果还是int, 将int结果赋值给byte, 必须加入强转解决方案: byte b3 = (byte)(b1 + b2);
byte b = 3 + 4; // 这句话不会出现编译错误 原因是3和4是两个常量, Java有常量优化机制, 在编译的时候就会将3和4计算出一个结果 并自动判断结果是否在byte的取值范围内.
double d = 20; System.out.println(d); // 没有,自动转换,结果为 20.0 long l = 10; System.out.println(l); long l2 = 12345678998765432L;
浙公网安备 33010602011771号