今日内容
- Java概述、开发环境搭建
- Eclipse的概述、配置及使用
- 注释、关键字、常量、变量、数据类型、标识符
01. Java语言概述
- Java语言是谁在哪个公司开发的?
- Java语言平台分为?
总结:
1. 詹姆斯高斯林,在Sun公司开发,现在被Oracle收购
2.
JavaSE: 是Java语言的基础语法,可以实现一些桌面应用的开发(坦克大战)
JavaME: 用于嵌入式设备的开发(Nokia手机小游戏)
已经退出历史舞台了
JavaEE: 用于web方向网站的开发(京东,淘宝..)
网站:基于前台页面,和后台逻辑交互配合开发出来的一套系统。
网页:就是一套用于显示数据的页面,数据基本都是固定的。
- 什么是jdk?
jdk就是Java给我们开发人员提供的一套【工具】包,java.exe javac.exe javadoc.exe
- 什么是jre?
jre当中包含了我们所需要的【核心类库】,简单理解就是Java已经写好的代码,我们可以直接使用的。
jre当中包含了JVM(java虚拟机).
- 什么是jvm?
JVM(虚拟机),是我们运行Java程序需要的一个【载体】【平台】
换句话来说,如果电脑中没有安装JVM,是不能运行Java程序的.
- 三者之间有什么关系?
总结: 包含关系
JDK -> JRE -> JVM.
- Java语言的强大之处
* Java语言具备跨平台性(一次编译,到处运行)
问题:java是如何实现跨平台的?
是因为在不同的操作系统都安装了对应版本的Java虚拟机.
问题:JVM自身是否可以跨平台?
不可以!
- jdk的平台版本
* jdk1.5 里程碑
* jdk7 8 市面上最常见的两个版本,也是最稳定的两个版本
* jdk11 18年最新的版本
02. Java开发环境搭建
-
A:JDK的下载
- a:官网 http://www.oracle.com
- b:演示下载流程
-
B:JDK的安装
- a:傻瓜式安装
- 双击安装程序,然后一路next即可(但是不建议)
- b:安装的推荐方式
- 安装路径不要有中文或者特殊符号如空格等。
- 所有和开发相关的软件最好安装目录统一。
- 举例:我的JDK安装路径
- D:\develop\Java\jdk1.7.0_72
- 举例:我的JDK安装路径
- 当提示安装JRE时,可以选择不安装。
- c:演示安装流程
- 可以先在d盘建立一个文件夹develop
- 然后演示安装过程
-
C:验证安装是否成功
- a:通过DOS命令,切换到JDK安装的bin目录下。
- D:\develop\Java\jdk1.7.0_72\bin
- b:然后分别输入javac和java,如果正常显示一些内容,说明安装成功
-
D:为什么要配置path环境变量
- 就是为了在任意盘符下都能访问到bin目录中的工具.
- 两种配置方式
总结:
1: 无脑配置(不建议)
直接复制绝对路径到path当中
弊端:这种配置方式,在就业班学习tomcat服务器的时候,配合会出现冲突问题。
2: JAVA_HOME(建议)
1. 打开电脑 -> 右键 -> 属性 -> 高级 -> 环境变量
2. 在系统变量当中,新建一个JAVA_HOME,内部存放jdk的安装目录,不要进入到bin当中
3. 找到path -> 编辑 -> %JAVA_HOME%\bin;
- 10分钟时间安装jdk并配置环境变量
03. Eclipse的概述
- A: Eclipse的下载安装
- a: 下载
- http://www.eclipse.org
- b: 安装
- 只需要解压后就能使用
- 纯绿色版
- 只需要解压后就能使用
- c: 卸载
- 只需要将文件夹删除就可以了
- d: 注意
- 开发软件的安装目录中,尽量不要出现空格与中文
- a: 下载
-
B: Eclipse的特点
- a: 免费
- b: 纯Java语言编写
- c: 免安装
- d: 扩展性强
-
IDE(集成开发工具)
- eclipse(基础班)
- myeclipse
- IDEA(就业班)
04. Eclipse的基本使用(HelloWorld案例)
- 基本使用(工作空间&新建工程&编译运行)
- A: Eclipse的工作空间和新建工程
* a: 工作空间
* 其实就是我们写的源代码所在的目录
* b: 创建工程(项目)
* 右键/Package Explore 空白区/new /Project/Java Project/输入项目名称如day01/
* c: 创建包
* 打开上面建立的day02项目/右键/new/package/
在弹出的对话框的name中输入包名,如:"com.itheima.tests"/finish
* d: 创建类
* 创建一个java类:右击包名/new/class/在对话框的name中输入类名/finish
- B: 编译与执行
* a: 编译
* 自动编译,当java代码保存的时候,自动 编译class文件
* b: 运行
* 方式1:点击菜单工具栏中的 绿色带有三角形的 run按钮 运行
* 方式2:点击菜单栏中Run, 点击Run 运行 快捷键是 ctrl+F11
* 方式3:选中要运行的java文件,或者在编写代码的空白区域,右键选择 Run As --> 运行java程序
- 5分钟时间练习, 创建一个Java类并运行
05. Eclipse工作空间的基本配置
A:行号的显示和隐藏
- 显示:在代码区域的最左边的空白区域,右键 -- Show Line Numbers即可。
- 隐藏:把上面的动作再做一次。
B:字体大小及颜色
- a:Java代码区域的字体大小和颜色: window -- Preferences -- General -- Appearance -- Colors And Fonts -- Java -- Java Edit Text Font
- b:控制台 window -- Preferences -- General -- Appearance -- Colors And Fonts -- Debug -- Console font
- c:其他文件 window -- Preferences -- General -- Appearance -- Colors And Fonts -- Basic -- Text Font ** 只需要配置此处即可 **
C:窗体给弄乱了,怎么办?
- window -- Perspective -- Reset Perspective
- window -- Perspective -- save Perspective
D:控制台找不到了,怎么办?
- Window--Show View—Console
5分钟时间完成Eclipse的基本配置
06. Eclipse中项目的删除和导入
- A:删除项目
- 选中项目 – 右键 – 删除
- 从项目区域中删除 从硬盘上删除 --> 选项勾上
- 选中项目 – 右键 – 删除
-
B:导入项目
- 在项目区域右键找到import
- 找到General,展开,并找到
- Existing Projects into Workspace
- 点击next,然后选择你要导入的项目
-
注意:这里选择的是项目名称
-
熟练完成JDK的卸载和安装
- 熟练配置Path环境变量
- 能够在eclipse上,熟练的创建工程、包、类
- 能够在eclipse上完成HelloWorld案例的编写,并可以看得懂,加入注释说明。
07. 注释的概述和分类
- 什么是注释?
- 注释分为哪些?
- 分别如何编写?
- 注释的注意事项?
总结:
1: 注释就是对代码的一种解释,方便我们程序员更好的去阅读代码
2:
A. 单行注释
B. 多行注释
C. 文档注释 (TODO:后续课程讲解)
3:
单行注释 : //
多行注释: /* */
文档注释: /** */
4:
注释当中,只有是单行注释允许嵌套
HelloWorld详解: (必掌握!!!!!)
// 这是通过class定义了一个类,类名叫HelloWorld
public class HelloWrold {
// 这是程序的入口点
public static void main(String[] args) {
// 这是打印了一句话
System.out.println("HelloWorld");
}
}
08. 关键字的概述和特点
- 什么是关键字?
- 关键字有什么特点?
总结:
1: 被java赋予特殊含义的单词
2: 所有字母全部小写, 高级编辑器当中, 有颜色的高亮显示.
- 内容辅助键
>* 辅助键
* alt + /
* 生成main方法
* syso输出语句
>* 快捷键
* 单行注释
* Ctrl + / --> 取消的话, 重复操作即可
* 多行注释
* Ctrl + Shift + / -> 取消的操作, Ctrl + Shift + \
* 格式化快捷键
* Ctrl + Shift + F
09. 常量的概述和分类
- 什么是常量?
- 常量的分类?
总结:
1: 在程序的执行过程中,其值不可以发生改变的数据
2:
整数常量:所有整数
小数常量:所有小数
布尔常量:true false
字符串常量:被双引号括起来的内容
字符常量:被单引号括起来的内容,内部只能存储一个字
-------------------------------------
空常量: 今天暂不讲解,数组部分讲解 null
10. 变量的概述和定义格式
- 什么是变量?
- 变量的作用是什么?
总结:
1: 在程序的执行过程中,其值在【某个范围内】可以发生改变的数据
2: 就是在程序中创建了一块内存空间(小盒子),用来记录不断发生改变的常量
- 变量的定义格式
数据类型 变量名 = 初始化值;
byte abc = 10;
11. 数据类型概述和分类
- 为什么要有数据类型?
- (基本)数据类型的分类为?
总结:
1: Java是强类型语言,对于每一种数据都明确了具体的类型,并分配了不同大小的内存空间.
2:
整数类型:(使用最多的是int)
byte 1个字节 -128~127
short 2个字节
int 4个字节
long 8个字节
(浮点)小数类型:
float(单精度) 4个字节
double(双精度) 8个字节
布尔类型:
boolean 1个字节 true false
回答:理论上来说,八分之一个字节就能表示他的大小,但是计算机当中最小的存储单位是字节,所以它应该占1个字节。
字符类型:
char 2个字节 0~65535
// a = 97
// A = 65
// 0 = 48
char c1 = ‘a’;
char c2 = 65;
char c3 = 48;
注意:
所有整数默认都是int类型
所有小数默认都是double
定义float类型变量应该加F的标识
定义Long类型变量应该加L的标识,建议使用大写.
12. 标识符的组成和注意事项
- 什么是标识符?
- 标识符的组成规则为?
- 标识符的注意事项?
总结:
1: 就是自己给类,方法,变量...起的名字
大白话:自己起的名字
2:
26个英文字母,大小写
数字0-9
_ $
3:
A. 关键字不能最为标识符
B. 数字不能开头
C. 中间不能以空格隔开
13. 变量的定义和使用
- 案例演示: 定义8种类型的变量并打印
- 创建类, 创建包的快捷键
* byte,short,int,long,float,double
* 问题:为什么float占4个字节,long占8个字节,float却比long要大呢?
* 因为整数和小数,底层的二进制存储结构不同.
System.out.println(Float.MAX_VALUE - Long.MAX_VALUE);
* char,boolean
14. 变量定义的注意事项
总结:
1. 变量名不允许重复
2. 变量[使用之前]必须完成初始化
3. 一条语句可以定义n个变量,但是中间需要通过逗号隔开
15. 类型转换之隐式转换
- 什么是数据类型的隐式转换?
总结:
1: 将小的数据,给大的数据类型赋值,可以直接赋值。
2. 当小的数据类型和大的数类型做运算的时候,会先将小的,提升为大的之后,再做运算。
举例:
1:
int i = 10; // 4个字节
System.out.println(i);
double d = i; // 8个字节
System.out.println(d);
2:
byte a = 100;
int b = 100;
int c = a + b;
16. 类型转换之强制转换
- 什么是数据类型的强制转换?
总结:
1: 将大的数据类型,给小的数据类型赋值,不能直接赋值,需要强转符号。
举例:
1:
int i = 100;
byte b = (byte)i;
System.out.println(b);
格式:
(要强转的类型)将要转换的值;
注意:
如果强转的值, 超过了数据类型的取值范围, 那么结果可能会跟我们期望的结果不同(损失精度)
byte b = (byte)130; --> 127
--> -126
为什么?? 以下内容
----------------------------------------------------------
二进制,八进制,十进制,十六进制
二进制到十进制的转换:
图解.
注意: 如果想要书写2进制数据的话, 需要以0b开头 --> 0b100 --> 4
8421码
二进制中的原码,反码,补码:
* 原码
* 就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
* 通过一个字节,也就是8个二进制位表示+7和-7
* 0(符号位) 0000111
* 1(符号位) 0000111
* 反码
* 正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外
* 1(符号位) 0000111
* 1 1111000
* 补码
* 正数的补码与其原码相同;负数的补码是在其反码的末位加1。
* 11111001
130的补码:
00000000 00000000 00000000 10000010
强转后:
补码: 100000010
反码: 100000001
原码: 11111110
计算: 1 1 1 1 1 1 1 0
64 32 16 8 4 2 1
- 面试题
byte b1=3,b2=4,b;
----------------------
b=b1+b2;
1. 因为所有整数默认都是int类型,b1和b2两个byte类型在做运算之前,会先各自提升为int类型,然后再做运算
两个变量都提升为int类型了,两个int相加,结果还是int,将int数据赋值给byte,不能直接赋值,应该加入强转。
2. 因为b1和b2是两个变量,变量内部所记录的值是不可控的,有可能相加之后的结果就超出了byte的取值范围
----------------------
----------------------
b=3+4;
因为3和4是两个常量,Java有常量优化机制,在编译的时候就会将3和4进行相加,然后看相加的结果是否在byte的取值范围。
----------------------
哪句是编译失败的呢?为什么呢?