0
点赞
收藏
分享

微信扫一扫

Java基础知识体系_变量与类型

云卷云舒xj 2022-05-04 阅读 57

Java基础知识体系
(一)、计算机与java
(二)、变量与类型
(三)、运算符
(四)、流程控制
(五)、数组

(二)、变量与类型
常量 程序运行中 其值 不可改变的量
变量 在一定范围内 其值可以改变的量

1,常量
自定义常量 面向对象

字面值常量:
字符串常量 “世界,您好!”
整数常量 10 20 300
小数常量 1.10 12.33
字符常量 用英文半角下的单引号引起来的单个字符 ‘a’ ‘A’ 空字符常量 ‘’
布尔常量 true false
空常量 vnull 即NullPointException

2,进制
计算机中存储的最小单位是bit (比特) ,最小的计量单位是byte (一个字节)
1 byte = 8 bit
1 k = 1024 byte
1 m = 1024 k
1 g = 1024 m
1 t = 1024 g
1 p = 1024 t

单个字节表示的整数范围
在计算机中单个字节表示八位二进制位,其中最高位(最左边)代表符号位,使用0代表非负数,使用1代表负数,具体表示的整数范围如下:
非负数表示范围:0000 0000 ~ 0111 1111 => 0 ~ 127 => 0 ~ 2^7-1
负数表示范围:1000 0000 ~ 1111 1111 => -128 ~ -1 => -2^7 ~ -2^0
单个字节表示的整数范围是:-2^7 ~ 2^7-1 ,也就是-128 ~ 127.

进制分类
二进制: 以0b(0B)开头, 由0和1组成 ; 举例:0b10100 ,最高位(最左边)代表符号位,若该位是0则表示非负数,若该位是1则表示负数
在计算机的底层采用0和1组成的二进制序列进行数据的描述,逢二进一,二进制的权重是20、21、2^2、…
十进制: 开头没有符号,由0…9 开头不能为0 举例:100,
在日常生活中采用,逢十进一,十进制权重是:100、101、10^2、…
八进制: 以0 开头, 由0-7 组成 ; 举例: 01237,对二进制的缩写
十六进制: 以0x(0X)开头, 由0 - 9, a,b,c,d,e,f 举例: 0x3C 0X2B,对二进制的缩写

进制转换
任意进制转换成十进制: 正进制数
系数: 一个数每一位上的数就是系数
基数: 几机制就是基数就是几 , 十进制基数是是10 , 八进制基数是8 …
权: 从右向左,从0开始编号,每一位上的编号就是权
结果: 系数 * 基数^权 之和
十进制 位全展开法: 12345 = 1 * 10 ^ 4 + 2 * 10 ^ 3 + 3 * 10 ^2 + 4* 10 ^ 1 + 5 * 10 ^0

练习:
二进制转十进制 0b111 = 12^2 + 12^1 + 1 * 2^0 = 7
八进制转十进制 077 = 78^1 + 78^0 = 56+ 7 = 63
十六进制转十进制 0x9a = 9* 16^1 + 10 * 16 ^0 = 144 + 10 = 154
十进制转其他进制
十进制变到其他任意进制: 正进制数
除基倒取余,直到商为0
举例: 80 算二进制除的是2, 商为0的的时候, 倒取语句
结果:
二进制 0b1010000
八进制 o120
十六进制 ox50

正十进制转换为二进制的方式
a.除2取余法,使用十进制整数不断地除以2取出余数,直到商为0时将余数逆序排序。
b.拆分法,将十进制整数拆分为若干个二进制权重的和,有该权重下面写1,否则写0
拆分法

正二进制转换为十进制的方式
a.加权法,使用二进制中的每个数字乘以当前位的权重再累加起来。
加权法

负十进制转换为二进制的方式
a.先将十进制的绝对值转换为二进制,然后进行按位取反再加1,负数的需要补码:按位取反,再加1 。
负10进制转2进制
负二进制转换为十进制的方式
a.先减1再按位取反,合并为十进制整数后添加负号。
负2进制转十进制
3,原码反码补码
原码: 二进制的定点标示法. 0 和 1组成. 最高位是符号位 1负数, 0 代表正数
-5 : 10000101
5 : 00000101
反码: 正数的反码和原码一样, 负数的反码符号位不变,其他为按位取反.
5 的反码: 00000101
-5 的反码: 11111010
补码: 正数的补码和原码也相同, 负数的补码,在其反码的基础上 +1
5 的补码: 00000101
-5的补码: 11111011
练习:
10101011 (原码) ----- 求补码 - (32 + 8 + 2 + 1) = -43
11010101
10001110 (是补码) ----- 求原码
11110010

4,变量
变量概念
当需要在程序中记录单个数据内容时,则声明一个变量,而声明变量的本质就是在内存中申请一个存储单元,由于该存储单元中的数据内容可以发生改变,因此得名为"变量"。
由于存放的数据内容大小不一样,导致所需存储单元的大小不一样,在Java语言中使用数据类型加以描述,为了便于下次访问还需要给该变量指定一个名字,用于记录该变量对应的存储单元。

变量声明
定义变量: 1)数据类型 2)变量名(标识符) 3) 变量值
格式: 数据类型 变量名 = 变量值; //将变量值给变量名,变量值就相当于未知数x保存了这个数,变量值可以省略,后续再传递值

变量注意事项
Java是强类型语言,变量在使用前必须声明来指明其数据类型。
变量在使用之前必须初始化。
变量不能重复声明

Java标识符
由数字、字母、下划线以及$等组成,其中数字不能开头(后面讲到)。
不能使用Java语言的关键字。
区分大小写,长度没有限制但不宜过长。
尽量做到见名知意,支持中文但不推荐使用。
标识符可以给类/变量/属性/方法/包 起名
关键字

数据类型
引用数据类型:String,数组,对象,接口,枚举,标注
基本数据类型:4类8种
byte 整型: 内存空间中占1个字节,表示范围是:-2^7 ~ 2^7-1
short 整型: 2个字节,表示范围是:-2^15 ~ 2^15-1
int 整型: 4个字节,表示范围是:-2^31 ~ 2^31-1.
long 整型: 8个字节,表示范围是:-2^63 ~ 2^63-1
在Java程序中直接写出的整数数据叫做直接量/字面值/常量,默认为int类型。若希望表达更大的直接量,则在直接量的后面加上l或者L

float 浮点型: 4个字节,叫做单精度浮点数,可以表示7位有效数字,范围:-3.403E38~3.403E38。
double 浮点型: 4个字节,叫做单精度浮点数,可以表示7位有效数字,范围:-3.403E38~3.403E38。
Java程序中直接写出的小数数据叫做直接量,默认为double类型,若希望表达float类型的直接量,则需要在直接量的后面加上f或者F

boolean 布尔型: 默认1个字节,Java语言中用于描述真假信息类型有:boolean,数值只有:true 和 false

char 字符型: 占2个字节并且没有符号位,表示的范围是:0 ~ 65535,Java语言中用于描述单个字符的数据类型 ‘a’、'中’等
由于现实生活中很少有数据能够被单个字符描述,因此以后的开发中更多的使用由多个字符串起来组成的字符串,使用String类型加以描述,如:“hello”、“奇点”等。

计算机的底层只识别0和1组成的二进制序列,对于字符’a’这样的图案来说不满足该规则,因此该数据无法直接在计算机中存储,但现实生活中存在这样的图案数据需要计算机存储,为了使得该数据能够存储起来就可以给该数据指定一个编号,然后将编号存储起来即可,该编号叫做ASCII。
常见ASCII有:‘0’ - 48 ‘A’ - 65 ‘a’ - 97 空格 - 32 换行符 - 10
ascii码表

Java字符类型采用Unicode字符集编码。Unicode是世界通用的定长字符集,所有的字符都是16位。
常用的转义字符:" - " ’ - ’ \ - \ \t - 制表符 \n - 换行符

5,数据类型之间转换
自动类型转换:从小类型到大类型之间的转换
强制类型转换:从大类型到小类型之间的转换,语法格式如下:目标类型 变量名 = (目标类型)源类型变量名;
基本数据类型关系
注意:强转有风险,操作需谨慎!
把大的数据类型的数据给小的数据类型, 就会发生数据溢出,导致损失精度

举例:
int x = 20; // int x 是4个字节
byte b = x; //会报错 // byte b是一个字节
解决办法: byte b = (byte)x; //强制类型转换, 告诉编译器,你转把,我知道会发生精度损失.

class Demo3{
public static void main(String[] args){
char c = ‘a’;
byte b = 10;
short s = (short)(c + b);
//byte char short 他们三个再做运算的时候都会提升为int数据类型.
}
}
变量与常量参与运算
byte b = 8 + 8; 常量优化机制, 8+8 的结果先运算出来, 判断是不是在byte的取值范围内,如果在就赋值,如果不在报错
byte b1 = 10;
short b2 = 20;
byte b3 = b1 + b2; //变量相加没有优化机制, b1 + b2 都会提升为int类型, 会把一个int类型赋值给一个byte,损失精度,且报错
小总结:byte,short,char,int 之间的运算,都先自动转换为int型,后再运算;小数,则自动转为double型再计算

6,变量作用域

  • 1)一般变量的作用范围在一个大括号中,超过这个范围报错
  • 2)变量定义在上面,使用在下面
    1. 同一个作用域不能有相同名称的变量
      全局变量
      局部变量
      成员变量
      类变量
      对象变量
举报

相关推荐

0 条评论