文章内容输出来源:拉勾教育大数据高薪训练营
拉勾教育大数据高薪训练营 学习笔记
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 常用的进制
日常生活中采用十进制描述数据,逢十进一,十进制的权重是: 10
0、10
1、10
2、10
2、10
4 …计算机的底层采用0和1组成的二进制序列进行数据的描述,逢二进一,二进制权重是 2
0、2
1、2
2、2
3 …
注:有符号数即正负数在计算机中是以补码形式存储的二进制中的最高位(最左边)用于代表符号位,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 (-2
7 ~ 2
7-1)
2.11 整数类型的概念
Java语言中描述整数数据的类型有:byte、short、int、long,推荐使用int类型, int 类型一般情况下够用了
类型字节表示范围
byte1字节-27 ~ 27-1 (-128 ~ 127)short2字节-215 ~ 215-1 (-32768 ~ 32767)int4字节-231 ~ 231-1 (-2,147,483,648 ~ 2,147,483,647)long8字节-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,推荐使用doublefloat类型在内存空间占4个字节,叫做单精度浮点数,一般可以表示7位有效数字,范围:-3.403E38 ~ 3.403E38double类型在内存空间占8个字节,叫做双精度浮点数,一般可表示15位有效数字,范围:-1.798E308~1.798E308Java程序中直接写出的小数数据叫做直接量(字面量),默认为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位,而
short占
2个字节,
16位,s1
= 128,其二进制是
0000 0000 1000 0000,当将s1的值赋给b1时,只能保留
8位,
即
1000 0000,而此二进制数表示的是负数(符号位为
1),因此由负二进制转换为十进制可得:
-128,即 b1
= -128
因此,强转有风险,操作需谨慎
总结