6.13 java课程——基本数据类型(p45~p59)

一、 概述

1、概述
在这里插入图片描述
变量、程序流程控制是重点

二、关键字和保留字

在这里插入图片描述
简单的说就是在Java里有特殊含义的,不能用他们命名变量
在这里插入图片描述
说白了就是先把这个坑站上,以后可能会用到,命名时也要避开

三、标识符

标识符(自己命名的)
在这里插入图片描述
命名规则第三个就是说标识符不能是单独的关键字或保留字,但是可以是他们加上前面说到的英文字母大小写、0到9、下划线、$
注意:
1>、Java严格区分大小写,意思就是,虽然static是关键字,但是如果标识符是Static,则不会报错!
2>、如果是staticpublic也不会报错

【补充】小技巧
1>、想要用cmd命令进入某个地址之后,进行操作,可以直接在在那个目标文件夹的上面的路径那里输入cmd就直接使cmd在这个路径下
2>、写代码只要暂停了,要形成不自觉地ctrl+s——保存
在这里插入图片描述

四、变量

在这里插入图片描述

首先出现的问题:在文件夹里新建文件,一开始是文本文件(.txt),但是我们要先把他的扩展名改成.java之后,再往里面写程序,同时要注意含有main的那个类名要和文件名一致,之后再用javac编译
在这里插入图片描述
类名和文件名的关系:
1、文件中只能有一个类前面有public修饰,这个类要和文件名一致,上面那个图有两个public,但是是一个类中的两个方法。
2、类中有main方法的要和文件名一致

变量在未定义过、未赋值过的情况下都不能直接输出,在编译会报错
在这里插入图片描述
【小技巧】新建一个Java文本,在新建——Java里,会把大致的框架给出

4.1变量的分类

在这里插入图片描述
1>变量按照数据类型来分
基本数据类型:

     整型:byte、short、int、long
	 浮点型:float、double
	 字符型:char
	 布尔型:boolean
	 引用数据类型:
	 类 (class)
	 接口(interface)
	 数组(array)

2>变量在类中声明的位置
成员变量 vs 局部变量(后面会讲到)

4.1.1整型

在这里插入图片描述
因为byte的范围比较小,需要记一下
long 型在数据后面要加l或L
【补充】编程过程中发现,程序只要修改一次,保存,先要重新编译,再运行,才能出现刚才修改过的内容

4.1.2浮点型

在这里插入图片描述
这里的E代表10的多少次方
小知识:为什莫int也是4个字节,float也是,但float表示的范围比int还大,而且比long还大?
因为在float里有一部分表示小数,还有一部分表示10的几次幂,所以范围大
注意:
1、定义float类型时,末尾要以f或者F结尾
2、通常定义浮点型,一般用double

4.1.3字符类型

在这里插入图片描述
一个字符=2个字节
1、定义char型变量通常使用一对单引号,内部只能写一个字符
声明一个转义字符 char c1=‘\n’(换行符)、char c1=‘\t’(制表符)
【补充】
①如果就像单纯的输出\n这两个字符,应该System.out.println(“\n”);
②想在字符串中出现双引号,应该System.out.println(“你是"单身狗”");
*还可以用Unicode值来表示一个字符型常量(不常用)char c1=‘\u01043’(表示Unicode值为0043的那个字符——c)
【小误区】在写System.out.println()括号里面可以直接写变量名称,比如上面定义的c1,也可以写一个字符串,但是这个时候要加双引号
2、字符集
作用:我们在写一个字符的时候,需要计算机用01的二进制将这个字符表示出来,字符和二进制数之间的转换就是需要字符集
a——97
A——65
在这里插入图片描述

4.1.4布尔型

1、只能取两个值之一:true、false(与c语言不同,c中用0表示false,非0表示true)
2、常常在条件判断、循环结构中使用

五、基本数据类型间的运算规则

前提:这里说的是7种数据类型之间的运算(byte、int、short、long、float、double、char),不包含boolean类型

5.1自动类型转换

1、当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动转换为容量大的类型。
容量小/大指的是类型标识属的范围的大小,而不是占用内存空间的大小。
byte<short<int<long<float<double
在这里插入图片描述
如果转换成float类型,也可以,只不过输出结果会自动补一个.0,即123.0
在这里插入图片描述
但其实考虑到char类型,应该是:
byte 、short 、char<int<long<float<double,因为:
char c1=‘a’; byte b1=10; short s1=10;
c1+b1、c1+s1最后都要保存为int型
特别的:当char、short、byte做运算时,结果为int(这里指的是这三种类型之间运算,也就是short+byte、char+char、byte+byte、short+short等等都算)

5.2 强制类型转换

1、是自动类型转换的逆运算,即:
在这里插入图片描述
进行“往回返”操作的时候需要进行强制转换

2、进行的操作是截断而不是四舍五入
在这里插入图片描述
输出结果为12

3、注意
①需要使用强制转换符()
②强制转换可能会导致精度损失,如:
long l1=123;short s1=(short)l1;这时就不会出现精度损失

在这里插入图片描述

注意以下情况:
1、如果在定义long型时,没有在变量后面加上L,有时不会报错,有时会。因为这个时候其实不加L,计算机会把数据存成int型。如:
long l1 = 123;//不会报错,因为赋值的数据没有超过int范围
long l1 = 1234567898;//会报错,因为超出范围
2、在定义float型时,必须要加F,否则编译失败
3、
①整型常量默认为int型,如:
byte b = 12;
byte b1 = b + 1;//这里会出现报错,应该将b1设置为int型,因为1是整型常量,计算机默认1是int型
②对于浮点型常量,默认为double型

根据提供的引用内容,可以看出6.12和6.13是关于赫夫曼编码的编码和解码算法。下面是对这两个算法的简要介绍: 6.12 赫夫曼编码算法 赫夫曼编码是一种可变长度编码,用于将字符编码为比特串。它是一种前缀编码,即没有任何一个字符的编码是另一个字符编码的前缀。这种编码方式可以有效地压缩数据,因为出现频率高的字符可以用较短的编码表示,而出现频率低的字符可以用较长的编码表示。 赫夫曼编码算法的基本思想是:根据字符出现的频率构建一棵赫夫曼树,然后对每个字符进行编码。具体步骤如下: 1. 统计每个字符出现的频率,并将它们存储在一个频率表中。 2. 将频率表中的每个字符作为一个叶子节点,构建一棵赫夫曼树。构建赫夫曼树的方法是:将频率最小的两个节点合并成一个新节点,新节点的权值为两个节点的权值之和。重复这个过程,直到所有节点都被合并成一个根节点。 3. 对赫夫曼树进行遍历,对每个字符生成一个编码。从根节点开始,如果向左走就在编码的末尾添加一个0,如果向右走就在编码的末尾添加一个1。当遍历到一个叶子节点时,就得到了该字符的编码。 4. 将每个字符的编码存储在一个编码表中。 6.13 赫夫曼解码算法 赫夫曼解码算法的基本思想是:根据赫夫曼编码表和赫夫曼树,将比特串解码为字符。具体步骤如下: 1. 从比特串的开头开始,沿着赫夫曼树向下走,直到遇到一个叶子节点。 2. 如果遇到的是一个叶子节点,就将该节点对应的字符输出,并返回到根节点。 3. 如果遇到的是一个内部节点,就根据比特串的下一位向左或向右走,重复步骤1和步骤2,直到遇到一个叶子节点。 --相关问题--: 1. 赫夫曼编码有哪些应用场景? 2. 如何实现赫夫曼编
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值