JavaSE 基础 (1) java 环境搭建及入门

Java 语言背景介绍

Java 语言

语言:人与人交流沟通的表达方式。

计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言

Java 语言是美国 Sun 公司 (Stanford University Network) 在 1995 年推出的计算机语言。

Java 之父:詹姆斯高斯林 (James Gosling)。

Java 语言的三个版本

  • Java SE: Java 的标准版, 其实就是 Java 基础, 又叫做 “J2SE”
  • Java ME: Java 的小型版, 主要做嵌入式开发, 已经被 Android 替代, 又叫做 “J2ME”
  • Java EE: Java 的企业版, 其实就是网站, 又叫做 “J2EE”

Java SE

Java 语言的(标准版),用于桌面应用的开发,是其他两个版本的基础

桌面应用:用户只要打开程序,程序的界面 会让用户在最短的时间内找到他们需要的功能,同时主动带领用户完成他们的工作并得到最好的体验。

/images/java/JavaSE 基础 (1) java环境搭建及入门/1.png
(图1)

学习 Java SE 的目的:为 Java EE 开发,打基础。

Java ME

Java ME:Java 语言的(小型版),用于嵌入式消费类电子设备

/images/java/JavaSE 基础 (1) java环境搭建及入门/2.png
(图2)

Java EE

Java EE:Java 语言的(企业版),用于 Web 方向的 网站 开发。

网页:通过浏览器将 数据展示 在用户面前,跟后台服务器没有交互

网站:通过跟后台 服务器的交互,将查询到的真实数据 再通过网页展示出来

简单理解:网站 = 网页 + 后台服务器

java 语言跨平台原理

平台与跨平台

平台:指的是操作系统。

  • Windows
  • Mac
  • Linux

跨平台:Java 程序可以在 任意操作系统上运行

跨平台原理

/images/java/JavaSE 基础 (1) java环境搭建及入门/3.png
(图3)
/images/java/JavaSE 基础 (1) java环境搭建及入门/4.png
(图4)

总结:在不同的操作系统中,都安装一个与操作系统对应的 Java 虚拟机 (JVM Java Virtual Machine) 即可。

分析:JVM 本身是否可以跨平台?

答:JVM 虚拟机本身不允许跨平台,允许跨平台的是 Java 程序

JRE 和 JDK

Java 程序开发的三个步骤

开发 Java 程序,需要三个步骤:编写代码、编译代码、运行代码

/images/java/JavaSE 基础 (1) java环境搭建及入门/5.png
(图5)
/images/java/JavaSE 基础 (1) java环境搭建及入门/6.png
(图6)

JDK、JRE 和 JVM 的关系

/images/java/JavaSE 基础 (1) java环境搭建及入门/7.png
(图7)

JDK 的下载和安装

Java 语言发展史

/images/java/JavaSE 基础 (1) java环境搭建及入门/8.png
(图8)

JDK 的下载

通过官方网站获取 JDK,http://www.oracle.com

注意:针对不同操作系统,下载对应的 JDK。

/images/java/JavaSE 基础 (1) java环境搭建及入门/9.png
(图9)
/images/java/JavaSE 基础 (1) java环境搭建及入门/10.png
(图10)
/images/java/JavaSE 基础 (1) java环境搭建及入门/11.png
(图11)

JDK 的安装目录

目录名称 说明
bin 该路径下存放了 JDK 的各种工具命令。Javacjava 就放在这个目录
conf 该路径下存放了 JDK 的相关配置文件
include 该路径下存放了一些平台特定的头文件
jmods 该路径下存放了 JDK 的各种模块
legal 该路径下存放了 JDK 各模块的授权文档
lib 该路径下存放了 JDK 工具的一些补充 JAR 包

Javac 是编译命令, java 是运行命令, 告诉虚拟机运行那些字节码文件

常用 D0S 命令

  • 常用 DOS 命令
  • Path 环境变量的配置
  • HelloWorld 案例编写和执行
  • HelloWorld 案例常见问题
  • Notepad 软件的使用

DOS 命令提示符

为什么要学习 DOS 命令提示符?

目的:为了能够使用 JDK, bin 目录中的 (javac.exe) 编译和 (java.exe) 运行工具。

/images/java/JavaSE 基础 (1) java环境搭建及入门/12.png
(图12)

结论:JDK 提供的编译和运行工具,并不是双击运行去使用的。

正确使用方式:在 DOS 中通过指令去运行。

如何打开DOS命令提示符?

(1) 按下 Win+R,在运行输入框中,输入 cmd,回车。

(2) 打开指定文件夹,在 “路径栏” 中,直接输入 cmd,然后点击回车 (推荐)

/images/java/JavaSE 基础 (1) java环境搭建及入门/13.png
(图13)

问题原因:javac.exe 存放于 D 盘的 JDK 安装目录,而当前却在 C 盘中进行访问,没有找到。

命令提示符窗口中的常用命令

操作 说明
盘符: 切换到对应的盘符, E: 回车, 表示切换到 E 盘
cd 目录路径 进入一个目录
cd.. 进入父目录
cd / 回到盘符根目录
dir 显示当前文件夹中的所有内容
cls 清屏
exit 退出
上下键 查找敲过的命令
tab键 自动补齐命令
ctrl+c 终止程序的运行

快速进入 bin 目录所在 DOS 命令提示符

1 打开 bin 文件所在目录。

/images/java/JavaSE 基础 (1) java环境搭建及入门/14.png
(图14)

2 在路径栏输入 cmd 敲回车

/images/java/JavaSE 基础 (1) java环境搭建及入门/15.png
(图15)

Path 环境变里的配置

为什么要配置 Path 环境变量

/images/java/JavaSE 基础 (1) java环境搭建及入门/16.png
(图16)

弊端:只能在 bin 目录下才能使用 javac 和 java 工具, 今后的代码都放在 bin 目录下不便于管理

/images/java/JavaSE 基础 (1) java环境搭建及入门/17.png
(图17)

假如要运行这个 A.java 文件, 我需要运行 javac 命令, 但是 javac 命令在 jdk12\bin 目录下, 也就是说只能把 A.java 文件放到 jdk12\bin 目录下, 在这个目录里打开 DOS 窗口, 才能运行 javac 命令, 综上所述, 需要 文件javac 命令处于同一目录, 但是随着文件越来越多, 都放到 bin 目录下, 不便于管理, 所以我们需要配置环境变量, 让文件无论放在那个位置, 都能够找到 javac.exe

作用:能够在任意目录(文件夹路径) 下,都能 访问到 bin 目录中的 javac 和 java 工具

配置 Path 环境变量

按下 Win键+E, 找到计算机

/images/java/JavaSE 基础 (1) java环境搭建及入门/18.png
(图18)
/images/java/JavaSE 基础 (1) java环境搭建及入门/19.png
(图19)
/images/java/JavaSE 基础 (1) java环境搭建及入门/20.png
(图20)
/images/java/JavaSE 基础 (1) java环境搭建及入门/21.png
(图21)
/images/java/JavaSE 基础 (1) java环境搭建及入门/22.png
(图22)

问题:变量名一定要叫 JAVA_HOME 吗?

答案:不一定,但建议叫 JAVA_HOME, 后续要使用的软件,只会识别该名称。

/images/java/JavaSE 基础 (1) java环境搭建及入门/23.png
(图23)

% % 代表引用

/images/java/JavaSE 基础 (1) java环境搭建及入门/24.png
(图24)

校验是否配置成功:重新打开 DOS 窗口,输入 javac 命令查看结果

He11o World 案例

操作步骤
① 创建一个文本文件
② 把文件的名字修改为 “HelloWorld.java”
③ 用记事本打开该文件,在文件中书写代码

1
2
3
4
5
6
7
8
9
//public: 用来限制 "类名" 和 "文件名" 必须保持一致.
//class HelloWorld: 表示定义一个类,类名叫 "HelloWorld".
public class HelloWorld{
    //这是 main 方法,又叫做 "主方法",是 java 程序的入口,程序就是从这开始运行的.
    public static void main(String[] args){
        //输出语句,表示在 "控制台" 打印出来 "hello"
        System.out.println("hello");
    }
}

④ 在 Dos 窗口中找到该文件
⑤ 编译并运行

编译: javac 文件名.java
运行: java 类名
/images/java/JavaSE 基础 (1) java环境搭建及入门/25.png
(图25)

Notepad 软件的安装和使用

/images/java/JavaSE 基础 (1) java环境搭建及入门/26.png
(图26)
/images/java/JavaSE 基础 (1) java环境搭建及入门/27.png
(图27)
/images/java/JavaSE 基础 (1) java环境搭建及入门/28.png
(图28)

注释

注释概念

  • 注释是在程序 指定位置 添加的 说明性信息
  • 简单理解:对代码的一种解释说明,方便 我们程序员更好的去 阅读代码
概述: 就是对代码进行 "解释说明" 的文字.
格式:
	单行注释: // 注释内容
	多行注释: /* 注释内容 */
	文档注释: /** 注释内容 */

关键字

关键字概念

  • 关键字:被 java 赋予了特定含义的英文单词
/images/java/JavaSE 基础 (1) java环境搭建及入门/29.png
(图29)
概念: 在 Java 中 "被赋予特定含义" 的单词.
特点:
	1.全小写.
	2.会变色.

main 是关键字吗?
main 不是关键字,但是他是比关键字更为关键的一个单词,因为 JVM 在执行代码的时候,只会识别该单词

常量

常量概念

  • 常量:在程序的 执行过程 中,其值 不会发生改变 的量(数据)
/images/java/JavaSE 基础 (1) java环境搭建及入门/30.png
(图30)
常量分类:
	字符串: 被双引号包括起来. "abc","我爱Java".
	字符: 被单引号包括起来的一个字或符号. 'a','5','我'
	整数: 1,3,5,-9,-13
	浮点: 1.3,5.4,-2.2
	布尔: true,false        注意:布尔常量单独打印没有意义
	空: null,表示什么都没有. 注意:null 空常量不能输出打印
	
像 helloword 1 2 3 称字符常量   用 final 修饰称符号常量

常量优化机制

/images/java/JavaSE 基础 (1) java环境搭建及入门/31.png
(图31)

当常量在左侧的范围内时, 编译时不会报错, (隐藏了强制类型转换)?

数据类型

计算机存储单元

我们知道计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息单元叫 “位(bit)",我们又称之为 “比特位”,通常用小写的字母 “b” 表示。而计算机中最小的存储单元叫 “字节(byte)",通常用大写字母 “B” 表示,字节是由连续的 8 个位组成。

常用的存储单位,大家比较熟悉,我们一起来看看:

  • 1B(字节)=8bit
  • 1KB=1024B
  • 1MB=1024KB
  • 1GB=1024MB
  • 1TB=1024GB
  • 1PB=1024TB

数据类型

Java 语言是强类型语言,对于每一种数据都给出了明确的数据类型,不同的 数据类型 也分配了不同的 内存空间,所以它们表示的 数据大小 也是不一样的。

  • 不同的 数据类型 也分配了不同的内存空间,所以它们表示的 数据大小 也是不一样的。
/images/java/JavaSE 基础 (1) java环境搭建及入门/32.png
(图32)

说明:e+38 表示是乘以 10 的 38 次方,同样,e-45 表示乘以 10 的负 45 次方

  • 常量【没有手动指定数据类型】但只要是数据,就会存在数据类型
/images/java/JavaSE 基础 (1) java环境搭建及入门/33.png
(图33)

java 的数据类型可分为两大类:基本数据类型引用数据类型

/images/java/JavaSE 基础 (1) java环境搭建及入门/34.png
(图34)

整数类型

/images/java/JavaSE 基础 (1) java环境搭建及入门/35.png
(图35)
/images/java/JavaSE 基础 (1) java环境搭建及入门/36.png
(图36)

一个字节有 8 位,每位有 0 和 1 两种状态,一共可以表示 2 的 8 次方个信息

byte: 1 字节, 28=256

1-256 , 从零开始 0-255, 从负数开始 -128 到 127(-128 到 -1 是 128 个状态,0 到 127 是 128 个状态), 所以是-27~27-1

整型常数默认为 int 型,声明 long 型常量可以后加 l 或 L

浮点类型

金融领域不允许误差,需使用 BigDecimal 类

float (精确到 7 位)  4 字节  -3.403E38(E38 是 10 的 38 次方) 到 3.403E38

double (精确到 15,16 位)  8 字节 -1.798E308 到 1.798E308

java 浮点型常量有两种表示形式

  • 十进制数形式,例如:3.14 314.0 0.314
  • 科学记数法形式,如:3.14E0 3.14E2 3.14E-1

默认为 double 类型,float 类型赋值时需要添加后缀 F/f

浮点数是不精确的,尽量不要直接进行比较

字符型

占 2 个字节, 表示 1 个字符

char 类型用来表示在 Unicode 编码表中的字符。Unicode 编码被设计用来处理各种语言的文字,它占 2 个字节,可允许有 65536 个字符。

其他语言使用的是 ASCII 字符集,占 1 个字节,256 位,对英语来说绰绰有余,但对汉字来说是不够的。

Unicode 具有从 0 ~ 65535 之间的编码,他们通常用从 ‘\u0000’ ~ ‘\uFFFF’ 之间的十六进制值来表示(前缀为 u 表示 Unicode)

一个字符可以用 char,两个字符得用 string,因为他是字符串,java 中的字符串不是基本数据类型,而是一个独立定义的类

字符串用 String 定义,String str=‘我爱中国’

转义字符:
\n 换行
\r 回车
\t 制表符(tab)
\" 双引号
\' 单引号
\\ 反斜杠

boolean

boolean 有两个常量值,true、false,在内存中占 1 个或 4 个字节

一般是 4 个字节,数组中是 1 个字节

标识符

java 采用 Unicode 字符集,汉字和英文字母一样,都是普通字符集

概述: 标识符其实就是 "给类或变量起的名字".  
规范:  
	硬规则:  
		1.标识符必须以 字母、下划线_、美元符$ 开头  
        2.标识符其他部分可以是 字母、下划线_、美元符$ 和 数字 的任意组合  
        3.java 标识符大小写敏感,且长度无限制  
        4.标识符不可以是 java 的关键字  
	潜规则:  
		1.见名知意.  
		2.给 "变量/方法" 起名字的时候,要使用 "小驼峰命名法".  
		3.给 "类/接口" 起名字的时候,要使用 "大驼峰命名法".  
扩展:  
	小驼峰命名法: 第 1 个单词全小写,其他单词首字母大写,其他字母小写. student, studentName, studentAgeName  
	大驼峰命名法: 所有单词,首字母大写,其他字母小写. Student, StudentName, StudentAgeName  

变量

为什么要有变量

/images/java/JavaSE 基础 (1) java环境搭建及入门/37.png
(图37)

什么是变量

/images/java/JavaSE 基础 (1) java环境搭建及入门/38.png
(图38)

以上两块内存空间,所记录的值,是经常发生改变的,对于这种经常发生改变的数据,就是所谓的变量

变量: 其实就是内存中的一块空间  
变量名: 给空间起的名字就是 "变量名"  
数据值: 空间中存储的数据  
数据类型: 对空间中存储的数据的限制  

怎样定义变量

格式:	数据类型 变量名 = 数据值;
解析:
	该格式本质上是两句话.
    数据类型 变量名: 叫做变量的定义,本质上是去内存中 "挖一块空间"
    变量名 = 数据值: 叫做变量的赋值,其实就是给 "空间装数据"

变量的注意事项

1.变量名不能重复    
2.Java 以分号作为一句话的结尾,一句话可以定义多个变量(不建议)
3.变量在使用之前必须赋值
4.定义 long 类型变量时,数值后边必须加 L
5.定义 float 类型变量时,数值后边必须加 F
6.变量只能在他所在的大括号中使用,当这个大括中的代码执行完毕后,内部所【定义】的变量就会从内存中消失

成员变量和局部变量

变量的分类

从整体上可将变量划分为局部变量、成员变量(也称为实例变量)和静态变量

类型 声明位置 从属于 生命周期
局部变量 方法或语句块内部 方法/语句块 从声明位置开始,直到方法或语句块执行完毕,局部变量消失
成员变量(实例变量) 类内部,方法外部 对象 对象创建,成员变量也跟着创建。对象消失,成员变量也跟着消失;
静态变量(类变量) 类内部,static 修饰 类被加载,静态变量就有效;类被卸载,静态变量消失。

局部变量(local variable)
方法或语句块内部定义的变量。生命周期是从声明位置开始到到方法或语句块执行完毕为止。局部变量在使用前必须先声明、初始化(赋初值)再使用。

书写位置:
	成员变量: 类中方法外
	局部变量: 方法内部
存储位置:
	成员变量: 存储在堆中
	局部变量: 存储在栈中
生命周期:
	成员变量: 随着对象的创建而出现,随着对象的消失而消失,和对象在一块.
	局部变量: 随着方法的调用而出现,随着方法的调用完毕而消失,和方法在一块.
初始化值:
	成员变量: 有默认初始化值,byte、short、int、long:是0, float、double:是0.0, char是 '\u000',布尔是false,引用类型是 null
	局部变量: 没有默认初始化值,必须先定义, 赋值, 才能使用

键盘录入

键盘录入介绍

  • 为什么要有键盘录入?

目的:为了让我们操的数据,变得更加灵活
举例:int a = 10:
这里 a 虽然是个变量,但记录的值,却是手动写死的。
能不能让 a 变量记录的值,灵活起来,用户输入 什么,a 变量就记录 什么。

使用步骤

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
//步骤 1:导包,需要写在 class 的上面
import java.util.Scanner;

//步骤 2:创建对象
//只有 sc 可以改变,其他属于固定格式
Scanner sc = new Scanner(System.in);

//步骤 3:使用变量接收数据
//只有 i 变量可以改变,其他属于固定格式
int i = sc.nextInt();

Scanner 方法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
next()	//遇到了空格,就不再录入数据了
		//结束标记:空格,tab键

nextLine()	//可以将数据完整的接收过来
			//结束标记:回车换行符

int num = sc.nextInt();//获取用户在控制台录入的数字
String str = sc.next();//获取用户在控制台录入的字符串,遇到空格或回车都会停止
string str = sc.nextLine();//获取用户在控制台录入的字符串,遇到回车才停止,不建议使用(因为会和nextInt冲突)
double d = sc.nextDoub1e();//获取用户在控制台录入的小数

Scanner 中 nextInt() 后 nextLine() 无效的原因:
nextInt(): 接收一个整型数字,注意,只接受数字
nextLine(): 接收一串字符串,包括空格,制表符,换行符
当我们输入数字的时候,是不是按下了回车键,这个时候,nextInt() 从缓冲区把我们输入的数字读走了,但留下了换行符,等到运行 nextLine(),他开始读缓冲区里的内容,然而缓冲区里还留有一个换行符,相当于没给我们机会去输入东西,就按回车结束了


0%