计算机存储,数据类型,常量和变量
1.计算机存储
1.1计算机存储常用的数据单位
-
```
计算机当中最小的存储单位
字节 Byte
bit 比特 一个字节是 8 个bit 位(二进制)
100M 带宽 ==>100M 比特率 bit/s > 12.5MB/s
常见的存储单位:
Windows操作系统存储单位之间的进制关系
1024> 2^10
1024 Byte ==> 1kb
1024 kb ==> 1MB
1024 MB ==> 1GB
1024 GB ==> 1TB
1024 TB ==> 1PB
1024 PB ==> 1EB2014 年淘宝 ==> <<淘宝这十年>> 2014年 淘宝每天的数据量 50PB
硬件设备生产/macOS 操作系统 数据单位进制是1000 。windows读取U盘/硬盘数据,没有对应标明容量 Windows 数据内容到macOS系统变大
得数据者得天下!!
1.2计算机常见进制(仅了解)
-
生活中使用最多的进制是十进制!!,在实际开发,产品设计中需要考虑的也是十进制 做开发实际价值/生活价值!!! 涉及到开发中使用较多的进制
进制 基数范围 进制关系 十进制 0~9 逢十进一 二进制 0~1 逢二进一 八进制 0~7 逢八进一 十六进制 09,AF 逢G(16)进一
数据展示效果
八进制
程序员看着方便的要求 :数据0开头
0777 0775 0755 0555
【注意】存在特殊情况下,省略开头0的情况
40 ==> 040
【适用场景】Linux权限管理
十六进制
程序员看着方便的要求: 数据Ox 开头
ox1234 Oxabcd OxABCD
【十六进制不区分大小写】
【适用场景】
计算机内存地址
涉及到的进制转换问题
一律采用计算器 Windows or macOS 计算器
程序员/编程型
2.常量【重点】
2.1生活中常用的常量
数值:
光速,π,重力加速度
10 100 100 10000
文字:
你 我 他、她
A B C D
1 2 3 4
Ⅰ Ⅱ Ⅲ Ⅳ
, . % &
文本:
“北国风光,千里冰封,万里雪飘……”
“先帝创业未半,而中道崩殂…”
“曲曲折折的荷塘上面,弥望着田田的叶子"
标点符号
, 。 、 ‘ ;
寒江孤影,江湖故人,相逢何必曾相识
刀既然出鞘,就一定要见血
原来爹娘离去,便是远游
2.2针对开发需求常量进行分类
整数:
10 20 100 10000
-20 -50 -10 -50
小数/浮点数
3.1415926 11.11
文字/字符:
Java代码规定
Java字符常量是英文单引号包含的【单个元素】
'A' 'B' 'C' '你' '我' '它'
整数 1 2 3 与字符 '1' '2 ' '3' 不一样
字符串:
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('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.大写字母和小写字母之间有其他标点符号内容
后期功能:
验证码比对全部转大写字母比较,因为大写字母编码值小于小写字母,
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e9r6SLcU-1666190009851)(D:\qf\Typora笔记软件\参考笔记\微信图片_20221019193606.png)]
2.4.2转义字符【仅了解】
开发中有些字符因为开发需求已经被赋予了特定含义
例如:"" 字符串标记 '' 字符常量标记
\"\'可以将原本特定含义在字符转换为字符本身,不具备任何的含义!!!
两个较为常用的转义字符
\n 换行回车
\t tab键 制表符
\算不算特定含义字符??
需要在字符串中展示一个 \ 怎么办??
\\
需要在字符串中展示一个\\怎么办?
\\\\
【注意】
转义字符有且只能处理\转义符号之后的第一个字符
2.4.3只可学会,不得使用
2105年
请问:
\40是是么???
结果是空格!!!
1.\转义字符标记之后的数值默认是8进制
2.8进制数据标记 0 可以省略
3.\40==> 十进制编号为32的字符 ==>space空格
要求:
1.不能用来面试其他人!!!
2.如果对方不讲武德,电话号给我!!!
3.可以对暗号!!!
3.变量【重点】
3.1生活中的变量
生活中的变量:
体重 温度 发量 余额
关注点:
1.预定俗成,见名知意
2.单位,数据范围,合理,合适数据单位
3.容器的概念
变量需要在开发中提供
数据,信息,内存
3.2 Java中定义变量的格式
格式:
数据类型 变量名 = 初始化数据;
解释:
数据类型:
表示当前变量数据存储对应的数据类型,数据容量范围,数据的描述形式。
温度 ==> 摄氏度
水杯 ==> 小(ML) 大(L)
重量 ==> 人(KG) 卡车载重(吨) 货轮(万吨)
变量名:
约定俗成,见名知意,通俗易懂
=:
赋值,赋值号,
将赋值号右侧的数据,赋值给左侧的【变量】
初始化数据:
根据当前数据类型情况,以及目前的代码运行需求,给予变量在定义阶段的初始化数值。
魂斗罗 超级玛丽 冒险岛开局三次机会!!!
PUGB 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字节 | -231—231-1 |
long | 8字节 | -263—-263-1 |
3.3.2小数/浮点数
针对以小数/浮点数情况,同时考虑精度范围和数据存储范围,浮点数分为两种情况
单精度浮点类型float
双精度浮点类型double
要求明确float占用空间小于double同时float数据范围小于double
数据类型 | 占用内存空间大小 | 数据存储范围 |
---|---|---|
float | 4字节 | 10^38 |
double | 8字节 | 10^308 |
3.3.3字符类型
用于描述代码中使用的字符常量存储的变量内容
明确 字符类型 char 可以存储中文
数据类型 | 占用内存空间大小 | 数据存储范围 |
---|---|---|
char | 2字节 | 可以存储中文 |
3.3.4布尔类型
真假关系 true or false
明确 布尔类型Boolean数据范围有且只有TRUE FALSE
数据类型 | 占用内存空间大小 | 数据存储范围 |
---|---|---|
Boolean | 视情况而定 | true —false |
3.4变量定义演示
3.4.1整形变量操作
//整形变量定义演示
public class Demo4 {
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 = 1000;
num4 = 10000;
System.out.println(num1); //展示num1变量存储的数据类型
System.out.println(num2);
System.out.println(num3);
System.out.println(num4);
System.out.println();
}
}
3.4.2浮点型变量操作
//浮点类型变量操作演示
public class Demo5 {
public static void main(String[] args) {
/*
变量定义的格式:
数据类型 变量名 = 初始化数据;
浮点数据类型
float double
数值变量一般会使用
number 简拼num
*/
float num1 = 3.5F;
double num2 = 5.5;
System.out.println(num1);
System.out.println(num2);
System.out.println();
num1 = 10.5;
num2 = 20.5;
System.out.println(num1);
System.out.println(num2);
System.out.printl();
}
}
3.4.3字符类型变量操作
//字符类型变量操作
public class Demo6 {
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);
System.out.println();
}
}
3.4.4 布尔类型变量操作
//布尔类型变量操作演示
public class Demo7 {
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);
System.out.println();
}
}
3.5变量定义常见问题
3.5.1 float类型变量常量赋值问题
float num1 = 3.5;
Demo5.java:12: 错误: 不兼容的类型: 从double转换到float可能会有损失
float num1 = 3.5;
计算机数据存储原则:
计算机存储数据优先考虑的是数据的精度和完整度。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 Demo8{
public static void main(String[] args){
int num;
System.out.println(num);
/*
Demo8.java:5: 错误: 可能尚未初始化变量num
System.out.println(num);
^
1 个错误
*/
}
}
3.5.3 Java中变量未定义不能使用
Java规定变量如果没有声明,没有定义,无法使用。注意提示内容【找不到符号】
相当于 你做饭没有买酱油 ,做饭的时候就不能用!!!
主要原因
1.变量真的没有定义,你非要使用
2.变量真的定义了,但是你拼写错误【很常见】
//错误演示代码
public class Demo8{
public static void main(String[] args){
System.out.println(num);
/*
Demo8.java:5: 错误: 找不到符号
System.out.println(num);
符号: 变量 num
位置: 类 Demo8
1 个错误
*/
}
}
//错误演示代码
public class Demo8{
public static void main(String[] args){
int num = 10;
System.out.println(nmu);
/*
Demo8.java:6: 错误: 找不到符号
System.out.println(nmu);
^
符号: 变量 nmu
位置: 类 Demo8
1 个错误
*/
}
}
3.5.4【提示】字符类型常量有且只允许使用字符本身
3.5.5 long类型赋值常量建议
严格遵守数据类型一致化要求!!!
在给予long类型变量赋值操作时,对应的常量建议使用L明确告诉编译器,当前变量数据类型为long类型
保证数据类型一致化操作,提高代码效率
要求必须大写L,小写l容易导致阅读不便
public class Demo9 {
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);
System.out.println();
}
}
System.out.println(nmu);
^
符号: 变量 nmu
位置: 类 Demo8
1 个错误
*/
}
}
3.5.4【提示】字符类型常量有且只允许使用字符本身
3.5.5 long类型赋值常量建议
严格遵守数据类型一致化要求!!!
在给予long类型变量赋值操作时,对应的常量建议使用L明确告诉编译器,当前变量数据类型为long类型
保证数据类型一致化操作,提高代码效率
要求必须大写L,小写l容易导致阅读不便
public class Demo9 {
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);
System.out.println();
}
}