Day2-计算机存储,数据类型,常量和变量

1 篇文章 0 订阅
1 篇文章 0 订阅

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

数据类型占用内存空间大小数据存储范围
byte1字节-128 ~ 127
short2字节-32768 ~ 32767
int4字节-2^31 ~ 2^31 - 1
long8字节-2^63 ~ 2^63 - 1

3.3.2 小数/浮点数

针对于小数/浮点数情况,同时考虑精度范围和数据存储范围,浮点数分为两种情况:

1、单精度浮点型 float

2、双精度浮点型 double

要求明确 float 占用空间小于 double, 同时 float 数据范围小于 double

数据类型占用内存空间大小数据存储范围
float4字节10^38
double8字节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 规定变量如果没有声明,没有定义,无法使用。

注意提示内容 【找不到符号】

相当于 你做饭没有买油,做饭的时候就不能用!

主要原因:

  1. 变量真的没有定义,你非要使用

  2. 变量真的定义了,但是你拼写错了【很常见】

// 错误演示代码
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学习笔记第二篇,内容有点长,请耐心查看。对博主笔记感兴趣的点个关注呗,感觉笔记有帮助的可以收藏一下,和博主一块共同来学习吧。大佬勿喷!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

外呼小胖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值