知识屋:更实用的电脑技术知识网站
所在位置:首页 > 科技

Java语言基础(二)变量和数据类型

发表时间:2022-03-25来源:网络

Java语言基础(二)

二、变量和数据类型2.1 变量的基本概念2.2 变量的声明和使用2.3 变量使用是注意事项2.4 标识符的命名规则(笔试)关键字2.5 变量输入输出的案例实现2.6 变量输入输出案例的优化和手册介绍2.7 数据类型的分类2.8 常用的进制2.9 十进制与二进制之间的转换(1)正十进制转换为二进制的方式(拆分法)(2)负十进制转换为二进制的方式原码、反码、补码(二进制数的码制)判断一个二进制数的正负情况(3)正二进制转换为十进制的方式(加权法)(4)负二进制转换为十进制的方式2.10 单个字节表示的整数范围(重中之重, 面试经常出现)2.11 整数类型的概念2.12 整数类型的笔试考点2.13 浮点类型的概念2.14 浮点类型的笔试考点2.15 布尔类型2.16 字符类型的概念2.17 字符类型和编号的使用2.18 Unicode字符集的概念和使用2.19 转义字符的概念和使用2.20 基本数据类型之间的转换(1)自动类型转换(小到大)(2)强制类型转换(大到小)总结

二、变量和数据类型

2.1 变量的基本概念

声明变量以记录单个数据内容, 内容可以改变 声明: 本质上是在内存中申请一个存储单元 由于存放数据内容大小不一, 导致所需存储单元的大小不一样, 在Java语言中使用数据类型加以描述 为了便于下次访问, 需要指定变量名, 用于记录该变量对应的存储单元

2.2 变量的声明和使用

数据类型 变量名 = 初始值; 其中 = 初始值 可以省略, 但是 ; 不能省略
在()或者 { } 中声明的变量叫做块变量,作用范围是从声明开始一直到语句块结束

2.3 变量使用是注意事项

Java是强类型语言,变量在使用前必须声明来指明变量的数据类型 变量使用前必须初始化 变量不能重复声明

2.4 标识符的命名规则(笔试)

由数字、字母、下划线以及$等组成,其中数字不能开头 为什么不能数字开头:(因为如果以数字开头一些直接量如22456213254L会跟标识符混淆)
(但是实际工作中只用英文单词,不得已时用数字,几乎不用下划线) 不能使用Java语言的关键字,所谓关键字就是Java语言中用于表示特殊含义的单词 区分大小写,长度没有限制但不宜过长 尽量做到见名知意支持中文不推荐使用 标识符可以给 类/变量/属性/方法/包 起名字

关键字

2.5 变量输入输出的案例实现

提示用户从键盘输入自己的姓名和年龄信息并打印下来

2.6 变量输入输出案例的优化和手册介绍

开发的两个原则 变量随使用随声明 尽可能减少重复代码
官方库的使用 JDK中带有大量的API类, 是有Java系统带来的工具库, 这些工具数以万计! 使用这些类可以大大简化编程, 提高开发效率。 具体的API类功能, 可以参阅Java的参考手册

2.7 数据类型的分类

在Java语言中数据类型主要分为两大类: (1)基本数据类型(记住)8个 都是小写
byte、short、int、long、float、double、boolean、char 引用数据类型(了解)
数组、类、接口、枚举、标注

2.8 常用的进制

日常生活中采用十进制描述数据,逢十进一,十进制的权重是:
100、101、102、102、104 … 计算机的底层采用0和1组成的二进制序列进行数据的描述,逢二进一,二进制权重
20、21、22、23 … 注:有符号数即正负数在计算机中是以补码形式存储的 二进制中的最高位(最左边)用于代表符号位,0表示非负数,1表示负数 八进制和十六进制其实都是二进制的简写(是为了解决二进制表示大数时位数多的问题)

2.9 十进制与二进制之间的转换

(1)正十进制转换为二进制的方式(拆分法)

方式一 除二取余法,使用十进制整数不断地除于2取出,直到商为0时将余数逆序排列
方式二(更简单,推荐) 拆分法,将十进制整数拆分为若干个二进制权重的和,有该权重下面写1,否则写0

(2)负十进制转换为二进制的方式

先将十进制的绝对值转换为二进制,然后进行按位取反再加1(最高位也要按位取反负数的需要补码:按位取反,再加1 如何验证转换得对不对: 1 用微软计算器 2 验证一个数加上其相反数,结果为0 例如 -45转化为二进制的计算结果为 1101 0011
为了验证对不对,求其相反数45的二进制结果 00101101 ,然后两者的二进制数相加
(经过高位丢弃后,得到结果为0),即验证结果是正确的

原码、反码、补码(二进制数的码制)

最高位用0表示非负数,1表示负数 正二制数(真值)的原码、反码和补码都是一致的 负二进制数(真值) 原码:一个二进制数,用0和1代表符号,数值位不变,就得到与该二进制数真值对应的原码 符号位 + 数值位,最高位为符号位,1(表示负数) 0 有两种原码形式(0000 0000 和 1000 0000) 反码:除了符号位,其余按位取反(1变成0, 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 在Java程序中直接写出的整数数据叫做直接量/字面值/常量,默认为int类型。 若希望表达更大的直接量(long类型),则在直接量的后面加上 l 或者 L,推荐 L(避免混淆) 若需要描述比long类型还大的数据,则使用官方提供的 java.math.BigInteger 类型

2.12 整数类型的笔试考点

(1)为什么标识符不能以数字开头 因为如果以数字开头一些直接量如22456213254L会跟标识符混淆 (2)请问下面的代码是否有错误?若有请指出并说明原因
int i1 = 25;
byte b1 = i1;
- 错误:不兼容的类型:从 int 转换到 byte 可能会有损失
- 原因:i1是变量,其值可以随时改变(而且也不能直接获取到该变量的值),因此不能确保不会出错,所以报错 以下代码却没有错误:
byte b2 = 25;
原因: 25是字面值,虽然是int类型,但值是固定的,编译时可以立刻检测出来

2.13 浮点类型的概念

Java语言中用于描述小数数据的类型:float 和 double,推荐使用double float类型在内存空间占4个字节,叫做单精度浮点数,一般可以表示7位有效数字,范围:-3.403E38 ~ 3.403E308 double类型在内存空间占8个字节,叫做双精度浮点数,一般可表示15位有效数字,范围:-1.798E308~1.798E308 Java程序中直接写出的小数数据叫做直接量(字面量),默认为double类型
若希望表达float类型的直接量,在后面加f或F(如果有效数字超过7位,会产生误差)

2.14 浮点类型的笔试考点

(1)System.out.println(0.1 + 0.2); 输出结果:0.3000000000000004 原因:float 和 double 运算可能会有误差 (商业开发时不采用这两种类型,实现精确运算,采用官方的 java.math.BigDecimal 类型)

2.15 布尔类型

Java语言中用于描述真假信息类型:boolean,数值只有 true 和 false (注意:没有0 和 1) 布尔类型在内存空间中大小没有明确规定,可以认为是1个字节(其实1个bit就够了)

2.16 字符类型的概念

Java语言中用于描述单个字符的数据类型:char类型。如:‘a’、'中’等 char类型在内存空间中占2个字节并且没有符号位,表示的范围是:0 ~ 65535 开发中更多的使用由多个字符串起来组成的字符串,使用String类型加以描述,如:“hello”、“奇点”等 计算机的底层只识别0和1组成的二进制序列, 对于字符’a’这样的图案来说不满足该规则
因此该数据无法直接在计算机中存储, 为了能够存储该数据, 给该数据指定一个编号,
然后将编号存储起来即可,该编号就叫做ASCII(美国人所使用的文字编号,0 ~ 127个编号)

2.17 字符类型和编号的使用


必须掌握的ASCII码有:

‘0’ -> 48 ‘A’ -> 65 ‘a’ -> 97 空格 -> 32 换行符 -> 10

2.18 Unicode字符集的概念和使用

Java字符类型采用Unicode字符集编码。Unicode是世界通用的定长字符集,所有的字符都是16位(2个字节byte) Unicode中包含了ASCII编码(因为是Unicode是全世界通用)

2.19 转义字符的概念和使用

要求掌握的转义字符(反斜杠): \" -> " \’ -> ’ \\ -> \ \t -> 制表符 \n -> 换行符

2.20 基本数据类型之间的转换

(1)自动类型转换(小到大)

主要指从小类型到大类型的转换 :float 表示的范围 比 long 大 (虽然float只有4个字节,long有8个字节,但是由于底层二进制结构的区别,float的范围更大)

(2)强制类型转换(大到小)

主要指从大类型到小类型的转换,语法格式: 目标类型 变量名 = (目标类型)源类型变量名 :强转有风险,操作需谨慎! byte b1; short s1 = 128; b1 = (byte)s1; 打印s1 和 b1 输出结果:s1 = 128, b1 = -128 结果分析: byte 占一个字节,8位,而short2个字节,16位,s1 = 128,其二进制是0000 0000 1000 0000,当将s1的值赋给b1时,只能保留8位, 即1000 0000,而此二进制数表示的是负数(符号位为1),因此由负二进制转换为十进制可得:-128,即 b1 = -128 因此,强转有风险,操作需谨慎

总结

收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜