Java语言基础
Java语言基础
一、 初识计算机和Java语言
1.1 计算机的基本概念
用于高级计算、使用广泛的设备,主要由计算机硬件和计算机软件两个部分组成
硬件:看得见,摸得着
软件:看得见,摸不着
1.2 常见的主要硬件
中央处理器(CPU)、内存、硬盘、输入输出设备、主板、机箱、电源等辅助设备。
Java重点是CPU、内存、硬盘
硬盘里面的核心就是一张光盘
1.3 主要硬件的讲解
- CPU
- 中央处理器(Central Processing Unit)
- 运算核心和控制核心
- 功能主要是解释计算机指令以及处理计算机软件中的数据
- 内存
- Memory,也称内存储器
- 用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据
- CPU可以直接访问内存的数据,而且效率高
- 缺点:容量小,不能实现永久存储,断电会造成数据丢失
- 关于内存容量的科普:
- Byte -> KB -> MB -> GB -> TB -> PB
- 1byte 是八位,有八个二进制数,如10100011
- 硬盘
- 机械硬盘、固态硬盘
- 永久存放数据,容量大且断电不影响
- CPU不能直接访问,访问数据时需要先加载到内存中
- 输入输出设备
- 键盘:标准输入设备(注意不是鼠标)
- 显示器:标准输出设备
1.4 常见的主要软件
系统软件和应用软件
主流操作系统:Windows、Unix、Linux、IOS、 Android
1.5 计算机的体系结构
1.6 计算机语言的概述
- 第一代语言:机器语言
- 指令以二进制形式存在,穿孔卡片
- 第二代语言:汇编语言
- 助记符表示机器指令,如 ADD、SUB等
- 第三代语言:高级语言
- 如Java、Python、Scala、Go(谷歌)、Swift(苹果)等
1.7 Java语言的发展
- 20世纪90年代 单片机系统 家电设备 Sun公司 绿色计划 用C++开发 1983年 跨平台
命名为橡树,aok,但是被其他公司注册了,所以改名,Java,咖啡,爪哇岛
后被Oracle收购 - Java语言1995年问世
- 历代版本
1.0/1.2/1.3/1.4/5.0/6.0/7.0/8.0 …
Java11.0 是比较稳定的版本,且长期支持
1.8 Java语言的主要版本
-
Java SE(Java platform,Standard Edition),Java平台标准版,是Java平台的基础
- 包含了运行Java应用所需要的基础环境和核心类库
- 定义了基于桌面应用的基础类库,通过使用这些类库,可以编写出丰富多彩的桌面应用
-
Java EE (Java Platform,Enterprise Edition),Java平台企业版
- Java EE构建在Java SE基础上,用于构建企业级应用(以后工作最常用,但是Java SE是基础,所以也要学习)。
- Java ME(Java Platform,Micro Edition),Java平台微型版
- 随着安卓智能手机的普及,其已经面临淘汰
1.9 JDK安装目录相关概念
- bin 二进制文件
- conf 配置文件
- include 头文件
- jmods 模块文件
- legal 授权文件
- lib 库,JDK工具的一些补充jar包和源代码
- javac.exe 编译器,主要用于将高级Java源代码翻译成字节码文件
- java.exe 解释器,主要用于JVM对字节码文件进行解释并执行
(Java11的安装目录中没有jre,可以用命令生成jre文件夹)
jdk、jre、jvm之间的关系(掌握)
1.10 编写Java程序的流程
-
文本编辑器(TE,Text Editor)
- 记事本,Notepad++,Edit Plus …
-
集成开发环境(IDE,Integrated Development Environment)
- Eclipse,MyEclipse、IDEA …
-
编写Java程序的流程
- 新建文本文档,将文件扩展名由xxx.txt修改为xxx.java
- 使用记事本打开文件,编写代码后保存
- 启动dos窗口,切换到 .java 所在路径中
- 使用 javac xxx.java 进行编译,生成 xxx.class 的字节码文件
- 使用 java xxx 进行解释执行, 打印最终结果
java11新特性之简化的编译运行(编译和运行一步到位)
- 使用java xxx.java 直接进行编译运行,打印最终结果(慎用)
- 当同名的class文件存在时, 会发生错误, 把已存在的class文件删除才可一步到位运行
- 还有出现其他错误, 因此该特性要慎用
1.11 常见的错误和简化的编译运行
- 错误: 需要class, interface或enum => 通常都是class关键字拼写错误
- 错误: 找不到符号 => 通常因为单词拼写错误或Java中不支持这样的单词
- 错误: 需要’;’ => 通常都是因为少写分号,加上英文版分号即可
- 错误: 非法字符: ‘\uff1b’ => 通常是因为出现了中文标点符号,修改为英文版即可
- 错误: 在类 PrintTest 中找不到 main 方法, 请将 main 方法定义为: =>main写成了mian
1.12 注释和环境变量配置(掌握)
- // 单行注释
- /* */ 多行注释
- /** */ 多行/文档注释, 从 /**开始, 到 */结束, 是一种支持提取的注释
- 注: 多行注释不允许嵌套使用!
- 以上环境变量配置不够完美
- 应该添加一个 JAVA_HOME 的环境变量
- 用于JDK版本的升级和后续Java EE 的学习
- 配置过程如图所示:
1.13 跨平台原理
- 核心在于JVM,同一个字节码文件 .class ,在不同操作系统上执行时, 由不同操作系统对应的JVM翻译成不同的机器指令
- 一次编译, 到处使用
总结
二、变量和数据类型
2.1 变量的基本概念
- 声明变量以记录单个数据内容, 内容可以改变
- 声明: 本质上是在内存中申请一个存储单元
- 由于存放数据内容大小不一, 导致所需存储单元的大小不一样, 在Java语言中使用数据类型加以描述
- 为了便于下次访问, 需要指定变量名, 用于记录该变量对应的存储单元
2.2 变量的声明和使用
- 数据类型 变量名 = 初始值;
- 其中 = 初始值 可以省略, 但是 ; 不能省略
2.3 变量使用是注意事项
- Java是强类型语言,变量在使用前必须声明来指明变量的数据类型
- 变量使用前必须初始化
- 变量不能重复声明
2.4 标识符的命名规则(笔试)
- 由数字、字母、下划线以及$等组成,其中数字不能开头
(但是实际工作中只用英文单词,不得已时用数字,几乎不用下划线) - 不能使用Java语言的关键字,所谓关键字就是Java语言中用于表示特殊含义的单词
- 区分大小写,长度没有限制但不宜过长
- 尽量做到见名知意支持中文但不推荐使用
- 标识符可以给 类/变量/属性/方法/包 起名字
2.5 变量输入输出的案例实现
- 提示用户从键盘输入自己的姓名和年龄信息并打印下来
2.6 变量输入输出案例的优化和手册介绍
- 开发的两个原则
- 变量随使用随声明
- 尽可能减少重复代码
- 官方库的使用
- JDK中带有大量的API类, 是有Java系统带来的工具库, 这些工具数以万计!
- 使用这些类可以大大简化编程, 提高开发效率。
- 具体的API类功能, 可以参阅Java的参考手册
2.7 数据类型的分类
- 在Java语言中数据类型主要分为两大类:
- (1)基本数据类型(记住)8个
byte、short、int、long、float、double、char、boolean - 引用数据类型(了解)
数组、类、接口、枚举、标注
- (1)基本数据类型(记住)8个
2.8 常用的进制
- 日常生活中采用十进制描述数据,逢十进一,十进制的权重是:
100、101、102、102、104 … - 计算机的底层采用0和1组成的二进制序列进行数据的描述,逢二进一,二进制权重是
20、21、22、23 …- 注:有符号数即正负数在计算机中是以补码形式存储的
- 二进制中的最高位(最左边)用于代表符号位,0表示非负数,1表示负数
- 八进制和十六进制其实都是二进制的简写(是为了解决二进制表示大数时位数多的问题)
2.9 十进制与二进制之间的转换
(1)正十进制转换为二进制的方式
- 方式一
-
除二取余法,使用十进制整数不断地除于2取出,直到商为0时将余数逆序排列。
-
除二取余法,使用十进制整数不断地除于2取出,直到商为0时将余数逆序排列。
- 方式二(更简单,推荐)
-
拆分法,将十进制整数拆分为若干个二进制权重的和,有该权重下面写1,否则写0
-
拆分法,将十进制整数拆分为若干个二进制权重的和,有该权重下面写1,否则写0
(2)负十进制转换为二进制的方式
- 先将十进制的绝对值转换为二进制,然后进行按位取反再加1(最高位也要按位取反)
- 负数的需要补码:按位取反,再加1
- 如何验证转换得对不对:
- 1 用微软计算器
- 2 验证一个数加上其相反数,结果为0
- 例如 -45转化为二进制的计算结果为 1101 0011
为了验证对不对,求其相反数45的二进制结果 00101101 ,然后两者的二进制数相加
(经过高位丢弃后,得到结果为0),即验证结果是正确的
- 例如 -45转化为二进制的计算结果为 1101 0011
原码、反码、补码(二进制数的码制)
- 最高位用0表示非负数,1表示负数
- 正二制数(真值)的原码、反码和补码都是一致的
- 负二进制数(真值)
-
原码:一个二进制数,用0和1代表符号,数值位不变,就得到与该二进制数真值对应的原码
- 符号位 + 数值位,最高位为符号位,1(表示负数)
- 0 有两种原码形式(0000 0000 和 1000 0000)
-
反码:除了符号位,其余按位取反(1变成0, 0变成1)
- 负数要用补码表示,这样子才能满足 正数+其相反数 = 0
- 补码:在反码的基础上在最低位加上1
-
原码:一个二进制数,用0和1代表符号,数值位不变,就得到与该二进制数真值对应的原码
- 0 可以看成是正数或者负数
判断一个二进制数的正负情况
- 看一个二进制数是正数还是负数,要先看其在计算机中是以有符号存储还是无符号存储
- 如果是无符号存储,则为正数
- 如果是有符号存储,则为补码存储
看最高位,最高位为0,为正数,最高位为1,是负数
(3)正二进制转换为十进制的方式
- 跟(1)互逆(与除二取余法互逆)
- 加权法
(4)负二进制转换为十进制的方式
- 跟(2)互逆
- 先减1再按位取反,合并为十进制整数后添加负号
2.10 单个字节表示的整数范围(重中之重, 面试经常出现)
- 在计算机中单个字节表示八位二进制位,其中最高位(最左边)代表符号位,0代表非负数(0和正数),1代表负数
- 单个字节所能表示的整数范围是: -128 ~ 127 (-27 ~ 27-1)
2.11 整数类型的概念
- Java语言中描述整数数据的类型有:byte、short、int、long,推荐使用int类型, int 类型一般情况下够用了
byte | 1字节 | -27 ~ 27-1 (-128 ~ 127) |
---|---|---|
short | 2字节 | -215 ~ 215-1 (-32768 ~ 32767) |
int | 4字节 | -231 ~ 231-1 (-2,147,483,648 ~ 2,147,483,647) |
long | 8字节 | -263 ~ 263-1 |