1、 计算机存储
1.1 计算机存储常用的数据单位
计算机当中最小存储单位
字节 Byte
bit 比特 一个字节是 8个 bit 位(二进制)
100M 带宽 ==> 100M 比特率 bit/s ==> 12.5MB/s
常见的存储单位:
Windows 操作系统存储单位之间的进制关系
1024 ==> 2^10
1024 Byte ==> 1 KB
1024 KB ==> 1 MB
1024 MB ==> 1 GB
1024 GB ==> 1 TB
1024 TB ==> 1 PB
1硬件设备生产/macOS 操作系统 数据进制单位是 1000。Windows 读取U盘/硬盘数据,没有对应标明容量
windows 数据内容到 macOS 系统变大024 PB ==> 1 EB
1.2 计算机常见的进制【仅了解】
生活中使用最多的进制是十进制!!!在实际的开发,产品设计中需要考虑的也是十进制。
做开发实际价值/生活价值!!!
涉及到开发中使用较多的进制
进制 | 基数范围 | 进制关系 |
---|---|---|
十进制 | 0 ~ 9 | 逢十进一 |
二进制 | 0, 1 | 逢二进一 |
八进制 | 0 ~ 7 | 逢八进一 |
5十六进制 | 0 ~ 9, A ~ F | 逢G(16)进一 |
2、常量【重点】
2.1 生活中常见的量
数值:
光速,π,重力加速度
10 100 1000 10000
文字:
你 我 他/她
A B C D
1 2 3 4
I II III IV V VI
, . % &
文本:
"北国风光,千里冰封,万里雪飘...."
"先帝创业未半,而中道崩殂..."
"曲曲折折的的荷塘上面,弥望着田田的叶子"
2.2 针对于开发需求常量进行分类
整数:
10 100 1000 1000
-10 -20 -30 -40 -50
小数/浮点数:
3.14 0.618 11.11 12.12 9.8
文字/字符:
Java 代码规定:字符常量是英文单引号包含的【单个元素】
'A' 'B' 'C' '你' '我' '他'
字符串:
Java 代码规范:字符串常量是英文双引号包含的所有内容
"北国风光,千里冰封,万里雪飘..."
"先帝创业未半,而中道崩殂..."
真假关系/布尔类型:
true 真
false 假
小点子:
1. 数字字符常量和数值的区别
1 2 3 ==> 数值
'1' '2' '3' ==> 数字字符
2. 常量是在 Java 代码运行过程不会发生改变的量
2.3 常量代码演示
// Java 中常量演示
public class Demo1 {
public static void main(String[] args) {
/* 整数常量 */
System.out.println(10);
System.out.println(100);
System.out.println(-10);
System.out.println();
/* 浮点数常量 */
System.out.println(3.14);
System.out.println(5.5);
System.out.println();
/* 字符常量 */
System.out.println('A');
System.out.println('1');
System.out.println();
/* 字符串常量 */
System.out.println("注意代码格式!!!");
System.out.println("注意代码风格!!!");
System.out.println();
/* 真假关系/布尔类型 */
System.out.println(true);
System.out.println(false);
System.out.println();
}
}
运行结果:
2.4 字符串常量补充说明
2.4.1 编码集问题
编码集:
每一个文字都有一个对应的图片,每一个图片进行编号。计算机会根据编码集来处理当前信息中的编号,从而找到对应的文字图片。
开发中常用编码集:
UTF-8 国际编码,支持多国文字(中文,英语,阿拉伯,日语,朝鲜语...) 后期开发使用最多。
GBK 新国标,支持中文简体字,以及中国所有少数民族文字。【Windows中文系统默认编码集】
BIG5 中文繁体字编码集,主要流行于 中国台湾,中国香港,中国澳门,新加坡
ASCII 编码,美国信息交互标准协会制定的规范编码,主要包含英文,数字,标点符号,要求所有的编码必须首先支持 ASCII
要求:
1. 使用字符有且只允许使用字符本身,采用英文单引号包含【单个元素】的方式处理字符内容。
例如: '你' '我' '他' '她'
2. 绝对不允许使用编码值来表示字符信息,可视化极差,同时类型不一致!!!
【注意】如果我发现你使用编码值,抄<<辞海>>十遍
3. 编码集问题主要出现在中文乱码中,保证在开发中使用编码集一致!!!
后期前端 UTF-8 后台Java UTF-8 数据库 UTF-8
ASCII 编码集补充说明:
1. 0 ~ 31 是不可见字符,没有视觉效果
2. 数字字符 0 ~ 9
3. 大写字母顺序是 A ~ Z ,小写字母是 a ~ z
4. 大写字母的编码值小于小写字母
5. 大写字母和小写字母之间有其他标点符号内容
后期功能:
验证码比对全部转大字字母比较,因为大写字母编码值小于小写字母,节省一定的空间
标准十进制ASCII码表
八进制ASCII码表
2.4.2 转义字符【仅了解】
开发中有些字符因为开发需求已经被赋予了特定的含义
例如:
"" 字符串标记
'' 字符常量标记
\" \' 可以将原本特定含义在字符转换为字符本身,不具备任何的含义!!!
两个较为常用的转义字符
\n 换行回车
\t tab 键 制表符
需要在字符串中展示一个 \ 怎么办??
\\
需要在字符串中展示一个 \\ 怎么办??
\\\\
【注意】
转义字符有且只能处理 \ 转义符号之后的第一个字符
3. 变量【重点】
3.1 生活中哪些是变量
生活中的变量:
体重 温度 发量 余额 时间 工资 油价 电量
关注点:
1. 约定俗成,见名知意
2. 单位,数据范围,合理,合适数据单位
3. 容器的概念
变量需要在开发中提供:数据,信息,内容
3.2 Java 中定义变量的格式
格式:
数据类型 变量名 = 初始化数据;
解释:
数据类型:
表示当前变量数据存储对应的数据类型,数据容量范围,数据的描述形式。
温度 ==> 摄氏度
水杯 ==> 小(ML) 大(L)
重量 ==> 人(KG) 卡车载重(吨) 货轮(万吨)
变量名:
约定俗成,见名知意,通俗易懂
=:
赋值,赋值号,
将赋值号右侧的数据,赋值给左侧的【变量】
初始化数据:
根据当前数据类型情况,以及目前的代码运行需求,给予变量在定义阶段的初始化数值。
举例:
魂斗罗 超级玛丽 冒险岛 开局三次机会!!!
吃鸡 CF CSGO 人物出生血量 100%
雪碧 可乐 3.5RMB 500ML
3.3 基本数据类型【重点重点】
3.3.1 整数类型/整型
根据不同的数据存储范围,数据存储需求,整型在 Java 中分为 4个情况:
byte, short, int, long
数据类型 | 占用内存空间大小 | 数据存储范围 |
byte | 1字节 | -128 ~ 127 |
short | 2字节 | -32768 ~ 32767 |
int | 4字节 | -2^31 ~ 2^31 - 1 |
long | 8字节 | -2^63 ~ 2^63 - 1 |
3.3.2 小数/浮点数
针对于小数/浮点数情况,同时考虑精度范围和数据存储范围,浮点数分为两种情况:
1、单精度浮点型 float
2、双精度浮点型 double
要求明确 float 占用空间小于 double, 同时 float 数据范围小于 double
数据类型 | 占用内存空间大小 | 数据存储范围 |
float | 4字节 | 10^38 |
double | 8字节 | 10^308 |
3.3.3 字符类型
用于描述代码中使用的字符常量存储的变量内容
字符类型 char 可以存储中文
数据类型 | 占用内存空间大小 | 数据存储范围 |
---|---|---|
boolean | 视情况而定 | true false |
3.4 变量定义演示
3.4.1 整型变量操作
// 整型变量定义演示
public class Demo1 {
public static void main(String[] args) {
/* 变量定义的格式:
数据类型 变量名 = 初始化数据;
整型数据类型
byte short int long
数值变量一般会使用
number 简拼 num
*/
byte num1 = 10; // 定义了一个变量 num1 数据类型为 byte 类型,初始化数据存储 10
short num2 = 20;
int num3 = 50;
long num4 = 100;
System.out.println(num1); // 展示 num1 变量存储的数据类型
System.out.println(num2);
System.out.println(num3);
System.out.println(num4);
System.out.println();
// 定义之后的变量可以通过变量名直接使用
// 变量存储数据内容是可以修改的!!!
num1 = 50; // 给予 byte 类型变量 num1 赋值新的数据 50
num2 = 100;
num3 = 200;
num4 = 500;
System.out.println(num1); // 展示 num1 变量存储的数据类型
System.out.println(num2);
System.out.println(num3);
System.out.println(num4);
}
}
代码运行结果:
3.4.2 浮点型变量操作
// 浮点类型变量操作演示
public class Demo1 {
public static void main(String[] args) {
/*
变量定义的格式:
数据类型 变量名 = 初始化数据;
浮点数据类型
float double
数值变量一般会使用
number 简拼 num
*/
float num1 = 10.0F;
double num2 = 5.5;
System.out.println(num1);
System.out.println(num2);
System.out.println();
num1 = 10.5F;
num2 = 20.5;
System.out.println(num1);
System.out.println(num2);
}
}
代码运行结果:
3.4.3 字符类型变量操作
// 字符类型变量操作
public class Demo1 {
public static void main(String[] args) {
/*
变量定义的格式:
数据类型 变量名 = 初始化数据;
字符类型
char
字符类型变量常用的名称
ch
【重点强调】
字符类型数据操作有且只能使用字符本身,绝对不允许使用编码值
严格遵从【数据类型一致化要求】
*/
char ch1 = 'A';
char ch2 = '中';
System.out.println(ch1);
System.out.println(ch2);
System.out.println();
ch1 = '豫';
ch2 = '国';
// 字符常量是英文单引号包含的单个元素
// ch1 = '豫北';
// ch1 是【字符类型】,双引号包含的内容是【字符串类型】,类型不一致,无法赋值
// ch1 = "豫北";
System.out.println(ch1);
System.out.println(ch2);
}
}
代码运行结果:
3.4.4 布尔类型变量操作
// 布尔类型变量操作演示
public class Demo1 {
public static void main(String[] args) {
/*
变量定义的格式:
数据类型 变量名 = 初始化数据;
布尔类型
boolean
布尔类型常用变量名称
ret 结果 result 简拼
flag 标记
*/
boolean ret1 = true;
System.out.println(ret1);
System.out.println();
ret1 = false;
System.out.println(ret1);
}
}
代码运行结果:
3.5 变量定义常见问题
3.5.1 float类型变量常量赋值问题
以浮点型变量操作代码为例:
Line 12: float num1 = 3.5;
Demo1.java:12: 错误: 不兼容的类型: 从double转换到float可能会有损失
float num1 = 3.5;
^
1 个错误
计算机数据存储原则:
计算机存储数据优先考虑的是数据的精度和完整性。
3.5 作为浮点类型数据,计算机考虑到数据的精度和完整性情况,常量 3.5 会采用 double 类型作为数据类型。double 占用数据空间 8 字节。
相当于使用了一个 double 类型的数据 3.5 占用 8 字节内存数据空间,赋值给一个 float 类型变量,而 float 类型占用内存空间为 4 字节,并且 float 浮点类型数据精度不如 double
计算机在赋值操作中会给予错误提示,double 类型数据赋值给 float 类型数据会导致数据精度丢失,不允许!!!
【解决方案】
明确告知计算机,当前数据为 float 类型数据。
float num1 = 3.5F;
【注意】:
F 必须大写,告知编译器当前 3.5 为 float 类型,保证【数据类型一致化】
3.5.2 Java 中的变量未赋值不能使用
变量定义之后,没有进行赋值操作,不可以参与除赋值操作之外的其他内容
// 错误演示代码
public class Demo1 {
public static void main(String[] args) {
// 定义一个 int 类型的变量 num
int num;
System.out.println(num);
/*
Demo1.java:6: 错误: 可能尚未初始化变量num
System.out.println(num);
^
1 个错误
*/
}
}
3.5.3 Java 中变量未定义不能使用
Java 规定变量如果没有声明,没有定义,无法使用。
注意提示内容 【找不到符号】
相当于 你做饭没有买油,做饭的时候就不能用!
主要原因:
变量真的没有定义,你非要使用
变量真的定义了,但是你拼写错了【很常见】
// 错误演示代码
public class Demo1 {
public static void main(String[] args) {
System.out.println(num);
/*
Demo1.java:4: 错误: 找不到符号
System.out.println(num);
^
符号: 变量 num
位置: 类 Demo1
1 个错误
*/
}
}
// 错误演示代码
public class Demo1 {
public static void main(String[] args) {
int num = 10;
System.out.println(nmu);
/*
Demo1.java:5: 错误: 找不到符号
System.out.println(nmu);
^
符号: 变量 nmu
位置: 类 Demo1
1 个错误
*/
}
}
3.5.4 【提示】字符类型常量有且只允许使用字符本身
3.5.5 long 类型赋值常量建议
严格遵守数据类型一致化要求!
在给予 long 类型变量赋值操作时,对应的常量建议使用 L 明确告知编译器,当前变量数据类型为 long 类型
保证数据类型一致化操作,提高代码效率
要求必须使用大写 L ,小写 l 容易导致阅读不便
// 正确情况演示
public class Demo1 {
public static void main(String[] args) {
// num1 和 num2 都是 long 类型变量
// 对于计算机而言,整数默认类型为 int 类型
long num1 = 10;
// 10L 明确告知编译器当前常量数据类型为 long 类型
long num2 = 10L;
System.out.println(num1);
System.out.println(num2);
}
}
代码运行结果:
Java学习笔记第二篇,内容有点长,请耐心查看。对博主笔记感兴趣的点个关注呗,感觉笔记有帮助的可以收藏一下,和博主一块共同来学习吧。大佬勿喷!!!