JavaSe基础---语法
# 第 1 章 Java 语言概述
# 1.1、java 语言概述
- 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言
- Java 语言:是美国 Sun 公司(Stanford University Network)在 1995 年推出的计算机语言
- java 之父:詹姆斯・高斯林(James Gosling)
- 重要事件:2009 年,Sun 公司被甲骨文公司收购,所以我们现在访问 oracle 官网即可:https://www.oracle.com
# 1.2、java 应用版本的区分
-
2005 年,Java 诞生十周年,从之前的 J2SE/J2EE/J2ME 分别改名为:JaveSE/JavaEE/JavaME。
-
JavaSE 是 Java 的标准版,是学习 JavaEE 和 JavaME 的基础,JavaEE 是企业版,JavaME 是微型版。
-
JavaSE:java 基础语法 + 核心技术🤺
-
JavaEE:企业版
-
- 为我们提供了 13 项技术规范,这些技术规范其中都包含了例如:Web 开发,数据库,JDBC 开发,邮件开发…… 但是实际项目开发中,JavaEE(企业版),我们根本就不用!!!因为 Java 的类库,不仅仅只是第一方强大,很多第三方提供的类库更加的强大。如果说要使用 JavaEE 的类库,我们只学习使用两项规范。分别是 servlet 规范,以及 jsp 规范。
-
JavaME:微型版、游戏版 —> 现在早就已经过时了
-
Java 版本划分:
-
JavaSE 标准版 Java 核心技术 必学
-
JavaEE 企业版 13 项技术规范 servlet jsp
-
JavaME 微型版 / 游戏版 过时了 肯定不用
# 1.3、java 语言特性
-
简单性(相对于 C 和 C++):Java 语言底层采用 C 语言实现,相对于 C 来说,Java 是简单的,在 Java 语言中程序员不需要再操作复杂的指针(指针的操作是很复杂的),继承方面也是只支持单继承(C 语言是一种半面向对象的编程语言,支持多继承,多继承会导致关系很复杂),在很多方面进行了简化。
-
面向对象:Java 中提供了封装、继承、多态的面向对象机制。
-
健壮性:在 C 程序当中的无用数据 / 垃圾数据需要编程人员手动释放,当忘记释放内存的时候,会导致内存使用率降低,影响程序的执行;在 Java 语言当中这种问题得到了解决,因为 Java 语言引入了自动垃圾回收机制(GC 机制),Java 程序启动了一个单独的垃圾回收线程,时刻监测内存使用情况,在特定时机会回收 / 释放垃圾数据,这样会让内存时刻处于最好的状态。
-
** 多线程:**Java 语言支持多个线程同时并发执行,同时也提供了多线程环境下的安全机制。
-
可移植性 / 跨平台:
-
a. 平台:指的是操作系统
- Windows
- MacOS
- Linux
-
b. 跨平台
- Java 程序不需要进行任何修改,就可以在任意操作系统上运行。(注意:不是所有语言都具备这样的特征。例如 C# 只能在 Windows 上运行)
-
c. 实现跨平台的原理
-
-
编写的 Java 代码并不是直接运行在操作系统当中的。而是运行在操作系统安装的 JVM 虚拟机中。每一个操作系统都会对应各自版本的 JVM 虚拟机
# 1.4、JDK、JRE、JVM 三者关系
-
JDK:JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。它是每一个 Java 软件开发人员必须安装的。JDK 安装之后,它会自带一个 JRE,因为软件开发人员编写完代码之后总是要运行的。
-
JRE:JRE(Java Runtime Environment,Java 运行环境),运行 JAVA 程序所必须的环境的集合,包含 JVM 标准实现及 Java 核心类库。
- JVM:JVM 是 Java Virtual Machine(Java 虚拟机)的缩写,JVM 是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM 是实现 Java 语言跨平台的法宝。
- 如下图所示:
- JVM:JVM 是 Java Virtual Machine(Java 虚拟机)的缩写,JVM 是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM 是实现 Java 语言跨平台的法宝。
-
JDK、JRE、JVM 之间存在这样的包含关系:JDK 包含 JRE,JRE 又包含 JVM。换句话说,只要安装了 JDK,JRE 和 JVM 则自动就安装了。
-
JDK: Java 开发工具包。做 Java 开发,必须安装,安装 JDK,自带安装 JRE
-
JRE: Java 运行环境。JVM 虚拟机 + Java 核心类库
-
JVM:Java 虚拟机,作用运行 Java 程序可实现跨平台
# 1.5、初步了解 java 的加载与执行
- 在编写第一个 Java 程序之前,我们应当对 Java 的加载与执行提前有一个简单的了解
如图所示:
# 第 2 章 Java 基础语法
# 2.1、注释
-
作用:解释说明,在程序中不运行,增加程序的可读性
-
注释的分类:
-
(1) 单行注释 //
-
(2) 多行注释 / 注释内容 /
-
(3) 文档注释 /** 注释内容 */
-
# 2.2、关键字
-
(1)关键字在 Java 中具有一定特殊含义,全部小写,如:class public static void ………
-
(2)注意:在 EditPlus 中,编写 Java 源文件时没有更改主题,则蓝色的字体都是 Java 中的关键字
-
(3)Java 中的关键字,如图所示:
# 2.3、标识符
-
标识符就是名字,对类名、变量名称、方法名称、参数名等修饰
-
标识符的命名规则:
- 标识符可以由字母,数字,下划线 (_) , 美元符 ($) 构成 (注意中文标识符)
- 数字不能开头
- 区分大小写
- 不能使用关键字
- 注意:以上几点需要大家在以后不断的练习中进行掌握,不需要死记硬背
-
标识符的命名规范:
- 建议:标识符见名知意,也就是编写单词,如:name age
- 建议:类名每个单词首字母大写,如:HelloWorld Homework Student
- 建议:使用驼峰命名规则
- 建议:比较长的单词也可以适当以缩写形式呈现(没有具体规则)
- 注意:中文的标识符是可以使用的,但是开发中千万不要使用中文的标识符。
# 2.4、变量
# 2.4.1、字面量
- 字面量就是数据(文字信息 / 数值等 都是数据)例如:1234,true,”abc”,” 你好”,3.14 都是数据。在现实生活中每天都会接触到数据,例如:你今天的体重是 86Kg,你今天花了 500 元,买了个西瓜重量是 8.6Kg,外面明明是晴天,你却说狂风暴雨,你说的是假话(false)。
以上这些具体的数据就是字面量。
# 2.4.2、变量
-
变量:
- 变量是用来存放以上字面量的容器
- 存放的数据是可以改变的,所以叫变量
-
变量的操作步骤
-
优化变量的操作步骤
-
常用的数据类型:
-
整数类型 int
-
浮点类型 double
-
字符串类型 String
-
# 2.4.3、变量的分类
- 变量按声明的位置 (作用范围) 分为:
- 局部变量:在方法中声明的
- 成员变量:在方法外声明的,也就是在类中声明的变量。例如:
1 |
|
- 变量按数据类型分为:
- 基本数据类型变量:在内存中存放真正的值,如:int、double、char………
- 引用数据类型变量:在内存中存放的是地址,如:String…
# 2.5、基本数据类型
# 2.5.1、基本数据类型概述
java 中的数据类型包括两大类:一类是基本数据类型,一类是引用数据类型,基本数据类型又包括:
- 整数型:byte,short,int,long
- 浮点型:float,double
- 字符型:char
- 布尔型:boolean
-
补充:计算机存储的是二进制信息,也就是 0 和 1(日常生活中使用十进制 0----9)计算机中以字节为单位存储和解释信息,规定一个字节由八个二进制位构成。
-
计算机存储单位:
-
8bit(位)------------------------ >1byte
-
1024byte ---------------- >1KB
-
1024KB ------------------ >1MB
-
1024MB ----------------- >1GB
-
1024GB ------------------ >1TB
-
PB、EB、ZB、YB、BB、NB、DB、CB…
-
# 2.6、字符编码
- 对于以上的八种基本数据类型来说,其中七种类型 byte,short,int,long,float,double,boolean 计算机表示起来是很容易的,因为这七种类型底层直接就是数字,十进制的数字和二进制之间有固定的转换规则,所以计算机可直接表示和处理。但是大家别忘了,除了以上的七种数据类型之外,还有一种类型叫做字符型 char,这个对于计算机来说表示起来就不是那么容易了,因为字符毕竟是现实世界当中的文字,而文字每个国家又是不同的。
- 最初的时候美国标准协会制定了 ASCII 码,ASCII 码采用 1 个字节编码,1 个字节可以表示 256 种不同的形式(前面说过了),对于英文来说这个足够了,因为英文单词就是由 26 个英文字母拼凑而成,大小写全部才 52 个,再加上数字和标点符号也不会超过 256 个。但 ASCII 码对于中文来说那就不够了,因为汉字不止 256 个。
常见的 ASCII 码需要大家能够记住几个,在 ASCII 码中规定
’a’对应 97,'b’对应 98,以此类推,'A’对应 65,'B’对应 66,以此类推,'0’字符对应 48,'1’字符对应 49。 - 在字符编码当中,有这样两个常见的术语需要大家了解一下:编码和解码,它们都是什么,我们拿字符’a’来解释一下:’**a’是 97,97 对应的二进制是 01100001,那么从’a’到二进制 01100001 的转换过程称为编码,从二进制 01100001 到’a’的转换过程称为解码。** 大家一定要注意:编码和解码要采用同一种字符编码方式(要采用同一个对照表),不然会出现乱码。这也是乱码出现的本质原因。
- 在上世纪 90 年代初,国际组织制定了一种字符编码方式,叫做 Unicode 编码,这种编码方式统一了全球所有国家的文字,具体的实现包括:UTF-8,UTF-16,UTF-32 等。Java 为了国际化,为了支持所有国家的语言,所以 Java 采用的编码方式为 Unicode 编码。例如字符’中’对应的 Unicode 码是’\u4e2d’。在实际开发中几乎所有的团队都会使用 Unicode 编码方式,因为这种方式更通用,兼容性更好。Java 采用 unicode 编码,目前在实际的开发中大部分团队都会选择 UTF-8 的编码方式。
# 2.7、数据类型
1 |
|
-
基本数据类型之间是存在固定的转换规则的,现总结出以下 6 条规则,无论是哪个程序,将这 6 个规则套用进去,问题迎刃而解:
-
- 八种基本数据类型中,除 boolean 类型不能转换,剩下七种类型之间都可以进行转换;如果整数型字面量没有超出 byte,short,char 的取值范围,可以直接将其赋值给 byte,short,char 类型的变量;
- 小容量向大容量转换称为自动类型转换,容量(以及转换规则)从小到大的排序为:byte <short (char) < int < long < float < double,其中 short 和 char 都占用两个字节,但是 char 可以表示更大的正整数;
- 大容量转换成小容量,称为强制类型转换,编写时必须添加 “强制类型转换符”(类型),但运行时可能出现精度损失,谨慎使用;
- byte,short,char 类型混合运算时,先各自转换成 int 类型再做运算;未来的实际项目开发,不会出现 byte,short,char 的混合运算,对于整型的计算,一般我们直接将变量的类型声明为 int 就可以了,如果需求分析中确定 int 不够用,我们会使用 long 类型。
- 多种数据类型混合运算,各自先转换成容量最大的那一种再做运算。