一.常量
1.定义:常量表示不能改变的数值。
2.Java中常量的分类
1. 整数常量: 所有整数。
2. 小数常量: 所有小数。
3. 布尔(boolean)型常量: 只有两个数值, true、 false。
4. 字符常量: 将一个数字字母或者符号用单引号( ' ' )标识, 如: 'a'。
5. 字符串常量: 将一个或者多个字符用双引号("")标识, 如: "hello world"、 "a"、 ""( 空字符串) 。
6. null常量: 只有一个数值就是: null。
3.进制的由来
对于整数,有四种表现形式:
二进制: 0-1, 满2进1。
八进制: 0-7, 满8进1, 用0开头表示, 如: 012。
十进制: 0-9, 满10进1。
十六进制: 0-9, A-F, 满16进1, 用0x开头表示。 如: 0x4A2C。
任何数据在计算机中都是以二进制的形式存在的, 二进制早期由电信号开关演变而来。 一个整数在内
存中一样也是二进制的, 但是使用一大串的1或者0组成的数值进行使用很麻烦。 所以就想把一大串缩短
点, 将二进制中的三位用一位表示。 这三位可以取到的最大值就是7, 超过7就进位了, 这就是八进制。
但是对于过长的二进制变成八进制还是较长, 所以出现的用4个二进制位表示一位的情况, 四个二进制位
最大是15, 这就是十六进制。
规律: 进制越大, 表现形式越短。
P.S.
1Byte = 8bit
1KiB = 1024Byte
1MiB = 1024KiB
1GiB = 1024MiB
4.进制的基本转换
1). 十进制转二进制。
原理: 对十进制数进行除2运算。
示例:求十进制数6的二进制数。
6/2 = 3 余0
3/2 = 1 余1
1/2 = 0 余1
故, 6( 十进制) = 110( 二进制) 。
2). 二进制转十进制。
原理: 二进制乘以2的过程。
示例: 求二进制数110的十进制数。
110 = 0*2( 0) +1*2( 1) +1*2( 2) = 0 + 2 + 4 = 6
附: 括号中的数值代表次方。
示例: 求二进制数00110101的十进制数。
0 0 1 1 0 1 0 1
128 64 32 16 8 4 2 1
------------------------------
= 32 * 1 + 16 * 1 + 4 * 1 + 1 * 1 = 53
示例: 二进制加法, 5 + 4 = 9。
1 0 1
+ 1 0 0
------------
1 0 0 1
3). 十进制转八进制。
原理: 八进制, 其实就是二进制位, 3个二进制位, 1个八进制位。
示例: 求十进制数43的八进制数。
十进制 43
二进制 101011
三位分割 000-101-011
八进制 0 5 3
因此, 43( 十进制) = 101011( 二进制) = 053( 八进制) 。
4). 十进制转十六进制。
原理: 十六进制, 其实就是二进制位, 4个二进制位, 1个十六进制位。
示例: 求十进制数43的十六进制数。
十进制 43
二进制 101011
四位分割 0010-1011
十六进制 2(2) 11(B)
因此, 43( 十进制) = 101011( 二进制) = 0x2B( 十六进制)
5) 负数的进制
原理: 负数的二进制表现形式就是对应的正数二进制取反加1。
示例: 求-6的二进制表现形式, 其实就是对应的正数6的二进制取反加1。
6
0000-0110
取反 1111-1001
加1 +0000-0001
-------------------
1111-1010
P.S.
负数的二进制最高位永远是1。
特点: 变量其实就是将不确定的数据进行存储, 也就是需要在内存中开辟一个空间。
为什么要定义变量?
用来不断的存放同一类型的常量, 并可以重复使用。
定义变量的格式:
数据类型 变量名 = 初始化值;
例如: byte b = 3;
P.S.
1、 格式是固定的, 记住格式, 以不变应万变。
2、 变量的作用范围( 一对{}之间有效) 。
3、 变量只能存放某一类型的数据
理解:
变量就如同数学中的未知数X
2.Java语言的数据类型
内存空间:
byte 1个字节
short 2个字节
int 4个字节
long 8个字节
float 4个字节
double 8个字节
char 2个字节
Java语言的数据类型包括8种基本类型, 3种引用类型。
1、 整数默认类型:int类型,小数默认类型:double类型。
2、 double类型的小数精度比float类型的小数更高。
3.类型转换
类型转换在开发中也很常用, 简单来说就是类型之间相互的转化, 类型转换共分两种, 自动类型转换
和强制类型转换。
定义: 自动类型转换就是不需要我们手动对类型来进行强制转换。
示例:
class VarDemo
{
public static void main(String[] args){
int x = 3;
byte b = 5;
x = x + b;
System.out.println(x);
}
}
说明: int类型的变量占4个字节, 当byte类型的变量与其相加的时候, 首先会将byte类型的变量自动转化为4个字节的int类型, 然后再进行加法操作。
定义: 强制类型转换需要把类型进行手动转换, 否则无法正常使用。
class VarDemo
{
public static void main(String[] args) {
byte b = 3;
b = b + 200;
System. out. println(b);
}
}
运行结果:错误,
代码如下:
class VarDemo
{
public static void main(String[] args) {
byte b = 3;
b = (byte) (b + 200);
System. out. println(b);
}
}
P.S.
1、只有数值类型才能进行加法操作, 非数值类型不行。
2、char类型数据也可以和int类型相加, 但是首先char类型数据会被自动提升为int类型。
如果一个操作数是long型, 计算结果就是long型;
如果一个操作数是float型, 计算结果就是float型;
如果一个操作数是double型, 计算结果就是double型。
class VarDemo
{
public static void main(String[] args){
byte b = 3 + 7;
byte b1 = 3;
byte b2 = 7;
b = b1 + b2;
System.out.println(b)
}
}