Java第二章 变量
1.变量是什么?
变量是一个可以变化的量 指内存中的一块被命名、被特定的数据类型约束的区域,此区域 中可以保存数据类型范围内的数据。
2. 变量的命名规则:必须遵守
1) 组成由52字母(大小写加起来), 数字0~9, _和$($最好不要使用)
2) 数字不可以开头
3) 不能直接使用关键字和保留字, 但是可以包含关键字和保留字
4) 长度最大65535字符
5) 区分大小写, a和A是不同的
6) 不可以包含空格.
3. 变量的声明 : 数据类型 变量名;
变量必须先声明,后使用
基本数据类型
数据类型 字节大小 范围值
整数
byte 一个字节 -128~127
short 两个字节 -32768~32767
int 四个字节 -20多亿~20多亿
long 八个字节 -900多亿~900多亿
浮点数
float 四个字节 -10^38~10^38
double 八个字节 -10^308~10^308
字符型
char 两个字节
布尔型
boolean 1/8个字节 只有ture和false
引用数据类型:内存空间中保存的是其他数据的地址
常量:不可以变化的量,有2种字面量和被final修饰的量
变量:可以变化的量
整数字面默认使用的是int数据类型
浮点数字面量默认的额理性是double类型
数据范围大小
byte<short<int <long<float <double
/*左 = 右
如果右面的值的范围小于等于左面的变量的类型
如果右面的值的范围大于左面的变量的类型, 必须强制类型转换.
*/
任意非long整数作运算, 结果总是int型
混合运算中, 结果的数据类型取决于其中范围最大的那个.
// 能用变量的时候, 绝不用常量
/* String是字符串 -> 像羊肉串, 是引用类型
String s1 = null; // 空, 表示没有对象
String s2 = "abc";
String s3 = ""; // 空串, 表示有对象, 但是没有内容.
字符串 可以和 任意数据用+号连接, 结果是产生一个新的字符串, 内容是连接后的结果.
*/
4.数据类型的作用 :
1) 决定空间大小
2) 决定数据是什么
3) 决定数据能做什么.
5.变量使用注意事项
1.先声明,后使用
2.必须要有数据类型和变量名
3.变量有其作用范围,作用范围有它的声明语句所在的一对{}决定
4.变量有其数据范围,由数据类型决定
5.变量必须初始化才能使用
6.同一范围内变量不允许重复声明
命名规范 : 不是强制
1) 包名. 所有字母都小写com.atguigu.javase.test;
2) 类名 : 所有单词的首字母全部大写. MyClassName
3) 变量名和方法 : 和类名唯一区别就看第一个字母, 首字母小写, 后面的单词的首字母也 是大写. myClassName
4) 常量名全部大写, 单词间用连接. MY_CONST_NAME. 这是唯一允许使用的地方.
手动PS(进制的转换)
首先是十进制 比如:数字172346就等于
1 * 10^5 +
7 * 10^4 +
2 * 10^3 +
3 * 10^2 +
4 * 10^1 +
6 * 10^0
权值=10的n次方,这样的数称为十进制,逢10进1,那十六进制为逢16进1,权值计算以16为底的n次方 那二进制 逢2进1 权值计算以2为底n次方
比如16进制一个数:0x3215(0x表示为16进制)
3 * 16^3+ 为 12288
2 * 16^2+ 为 512
1 * 16^1+ 为 16
5 * 16^0 + 为 5
= 12821(为十进制数)
再比如二进制一个数:0101 1010
0 * 2^7 + 0 * 128
1 * 2^6 + 64
0 * 2^5 + 32 * 0
1 * 2^4 + 16
1 * 2^3 + 8
0 * 2^2 + 4 * 0
1 * 2^1 + 2
0 * 2^0 1 * 0
= 64 + 16 + 8 + 2
= 90(为十进制数)
十六进制数 0x5a
5 * 16
10 * 1
= 90
0x5A,0101 1010, 90 . 各种进制本质是一回事, 3者是同一个东西的不同表现.
十进制 二进制 十六进制
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F
2个16进制数 正好对应 8个比特, 所以2个十六进制就是一个字节
计算机底层所有数据都是二进制的补码的形式存储.
表示符号的符号位总是在最高位, 如果符号位为0表示这个是一个正数
如果符号位为1表示这个是一个负数.
补码 :
1) 正数的补码就是自身
2) 负数的补码就是它的相反数全部取反再加1
故所以我们可以算出byte型数据的最大值以及最小值
byte型数据最大值
0111 1111 => 0x7F => 16*7+15 => 127
1111 1111 这是负数, 负几?
-1 => 1111 1110
取反 => 0000 0001 这是1
所以1111 1111是-1
1000 0000 这是负数, 负几?
-1 => 0111 1111
取反 => 1000 0000 => 0x80 => 16*8 => 128
1000 0000就是-128
short型最大值
0111 1111 1111 1111
0x7FFF -> 716^3 + 1516^2 + 15*16^1 + 15 = > 32767
Short型最小值
1000 0000 0000 0000
0x8000 => -32768
Int型最大值
0111 1111 1111 1111 1111 1111 1111 1111
0x7FFFFFFF
Int型最小值
1000 0000 0000 0000 0000 0000 0000 0000
0x80000000
Long型最大值
0111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111
0x7FFFFFFFFFFFFFFF
Long最小
1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0x8000000000000000
Char型最大值
1111 1111 1111 1111
0xFFFF
2580

被折叠的 条评论
为什么被折叠?



