五、进制
目录
5.1 概述
- 进制:即进位计数制,是人为定义的带进位的计数方法。
- 对于任何一种进制—X进制,就表示每一位上的数运算时都是逢X进一位。
5.2 进制分类
二进制
-
逢二进一,可以使用字面值,但同十进制区分时,前面也可以0b或0B开头
0,1
127 ~ 0111,1111
八进制
-
逢八进一,通常以0开头
-
也可使用一个八进制位表示3个二进制
0~7
127 ~ 0177
十进制
- 逢十进一
- 生活中使用最为广泛的进制
十六进制
-
逢十六进一,以0x或0X开头
-
使用一个十六进制位表示四个二进制
0~0xF
127 ~ 0X7F 或 0x7F
5.3 二进制和十进制转换
235
200 + 30 + 5
2*100 + 3*10 + 5*1
2*10^2 + 3*10^1 + 5*10^0
0000 1010 ==> 10
1*2^3 + 1*2^1 = 2 + 8 = 10
- 二进制–>十进制
0000 0000 ~ 1111 1111
128 64 32 16 8 4 2 1
0000 1110 == 14
0000 0111 == 7
0010 0010 == 34
0011 0011 == 51
- 十进制 --> 二进制
0000 0000 ~ 1111 1111
128 64 32 16 8 4 2 1
66 == 0100 0010
55 == 0011 0111
46 == 0010 1110
88 == 0101 1000
六、变量
6.1 概述
变量是在内存中开辟的一片空间,用来存储对应类型的数据
6.2 创建变量
- 变量三要素
- 数据类型
- 变量名
- 数据
同一个作用域中,变量的名字不能重复
先声明后赋值
int a;
a = 100;
声明的同时赋值
int b = 200;
一次创建多个变量
int a,b,c;
int x = 100, y = 200;
6.3 变量使用
- 通过变量名访问变量中的数据
class Demo06{
public static void main(String[] args) {
/*
先声明,后赋值
数据类型 变量名;
变量名 = 数据;
*/
// 开辟int类型的变量num,把100存入num
int num;
num = 100;
System.out.println(num); //输出100
// 再次把200存入num,覆盖之前的内容
num = 200;
System.out.println(num); //输出200
// 声明变量的同时赋值
int number = 300;
System.out.println(number); //输出300
// 声明int类型变量xyz,没有赋值
int x,y,z;
x = 111;
// 方法中的变量使用之前必须先赋值,否则报错
System.out.println(x); //输出111
// 一次声明多个变量并赋值,使用逗号隔开
int a=10,b=20,c=30;
System.out.println(a); //输出10
int m=30,n;
// 通过变量的名字获取变量中的数据
System.out.println(m); //输出30
}
}
七、数据类型【掌握】
7.1 概述
Java是一门强类型语言,Java给所有的数据预设了数据类型
7.2 分类
基本类型
-
数值型
-
整型(byte、short、int、long)
-
浮点型(float、double)
-
-
字符型(char)
-
布尔型(boolean)
引用类型
除了基本类型,剩下全是引用类型
- 类
- 数组
- 集合
- 枚举
- …
7.3 整数类型
- 整数默认的类型是int
类型 | 名称 | 大小 | 范围 |
---|---|---|---|
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 |
class Demo07 {
public static void main(String[] args) {
/*
整数
byte 1字节 -128~127
short 2字节 -32768~32767
int 4字节 -2147483648~2147483647
long 8字节 不详
*/
byte b = 100;
System.out.println("byte b = " + b);
// b = 200; // 超出范围报错
System.out.println("byte b = " + b);
short s = 10000;
System.out.println("short s = " + s);
// s = 100000;
System.out.println("short s = " + s);
int i = 1000000000;
System.out.println("int i = " + i);
long l = 112233445566L; // 若想用整数给long变量赋值,数字后需要L后缀
System.out.println("long l = " + l);
}
}
7.4 小数类型
- 默认的是double类型
- 如果声明float类型变量需要使用f标记默认的是double类型
类型 | 名称 | 大小 | 范围 |
---|---|---|---|
float | 单精度浮点型 | 4字节 | 略 |
double | 双精度浮点型 | 8字节 | 略 |
class Demo08{
public static void main(String[] args) {
// 小数默认的类型是double,如果使用float定义变量,需要加上f或者F后缀
float f = 3.141592653589793F;
System.out.println("float f = " + f);
// 小数默认的类型是double
double d = 3.141592653589793;
System.out.println("double d = " + d);
}
}
7.5 布尔型
- 表示判断的结果
- true(真)、false(假)
- 布尔类型占据空间为1字节
class Demo09{
public static void main(String[] args) {
/*
boolean 布尔型 表示成立或者不成立、是或者非
*/
// 创建布尔类型变量,赋值true
boolean b01 = true;
System.out.println("boolean b01 = " + b01);
boolean b02 = false;
System.out.println("boolean b02 = " + b02);
// boolean b03 = "true"; true和false是关键字,可以直接使用
System.out.println("boolean b01 = " + b01);
}
}
7.6 字符型
- 表示单个字符
- 必须是一个字符,不多也不少
类型 | 名字 | 大小 | 范围 |
---|---|---|---|
char | 字符型 | 2字节 | 0~65535 |
class Demo10{
public static void main(String[] args) {
/*
1、直接使用单个字符赋值
2、使用十进制整数赋值,参考Unicode表
0~65535
3、使用十六进制赋值,参考Unicode表
\u0000 ~ \uFFFF
*/
char c01 = 'a';
System.out.println("char c01 = " + c01);
char c02 = 65;
System.out.println("char c02 = " + c02);
System.out.println(c01 + 1);
System.out.println('张' + 1 - 1);
char c03 = 24352; // 使用十进制整数赋值,参考Unicode表
System.out.println("char c02 = " + c03); //输出char c02 = 张
char c04 = '\u5F20'; // 使用十六进制赋值,参考Unicode表
System.out.println("char c04 = " + c04); //输出char c02 = 张
char c05 = 'z';
System.out.println("char c05 = " + c05); //输出char c05 = z
}
}
7.7 转义字符
转义字符是一种特殊的字符常量。它以反斜线 \ 开头,后跟一个或多个字符。转义字符具有特定的含义
- 反斜杠 ‘’ 不可与 ‘/’ 替换
转义字符 | 含义 | 转义字符 | 含义 |
---|---|---|---|
\b | 退格 | ’ | 单引号 |
\f | 换页 | " | 双引号 |
\n | 换行 | \0 | 空字符 |
\r | 回车 | \000 | 1到3位八进制数代表的字符 |
\t | 跳格,制表 | \u~ | unicode转义字符,后跟四位16进制数 |
7.8 类型转换
自动转换
-
目标兼容
-
小的类型放入大的类型,自动转换,天生安全
byte b = 3;
int n = b;
强制转换
- 目标兼容
- 大的类型放入小的类型,需要强制转换,有风险
int n = 3;
byte b = (byte)n;
转换规则
取值范围小的变量转化为取值变量大的,数据保存完整
取值范围大的变量转化为取值变量小的,数据精度可能丢失
class Demo11{
public static void main(String[] args){
byte a,x;
byte a,x;
int b = 471; //1,1101,0111
int y = 289; //1,0010,0001
a = (byte)b;
x = (byte)y;
System.out.println("a = " + a); // -41
System.out.println("b = " + b); // 471
System.out.println("x = " + x); // 33
System.out.println("y = " + y); // 289
}
}