数据类型
在java中 的数据类型分为两类数据类型
- 基本数据类型(8种)
- 整数:byte short int long
- 小数: float double
- 布尔: boolean
- 字符: char
- 引用数据类型
- 字符串: String
整数
类型 | 占用内存 | 范围 |
---|---|---|
byte(字节) | 8位(bit) | 2^8=256,-128~127 1111 1111~0111 1111 |
short(短整型) | 16bit | 2^16 = 65536 **~0111 1111 1111 1111 |
int(整型) | 32bit | 超出20亿 **~0111 1111 1111 1111 1111 1111 1111 1111 |
long(长整型) | 64bit | 2^64 *~ |
注意:
- 如果一个整数没有加上任何的标识的时候,那么默认是int类型的数据。
- 如果需要把该数据表示成一个long类型的数据,那么需要加数据后面加上L表示,L是不区分大小写的,但是建议使用大写。
疑惑:
存储整数可以使用四种数据类型,那么具体怎么选择使用呢?
选用数据类型的原则: 在能满足需求的情况下,能小就小。节省内存空间。
小数(浮点数)
小数的数据类型:
类型 | 占用内存 |
---|---|
float(单精度浮点型) | 32bit |
double(双精度浮点型) | 64bit |
注意:
如果一个小数没有加上任何标识的时候,那么该小数默认是double类型的数据,如果需要表示成float类型,那么需要在小数的后面加上f表示。f不区分大小写的。float数据类型不精确的问题:因小树部分转换为二进制时采用乘二取余法,所以小树部分不精确!
布尔类型
布尔类型只有两个值:true或者false。
boolean:1字节或者4个字节
如果使用boolean声明一个基本类型的变量时,那么该变量占4个字节, 如果使用boolean声明一个数组类型 的时候,那么每个数组的元素占 一个字节。
字符类型:
char 2字节(16bit)
字符串的数据类型是:String 引用数据类型,不属于基本数据类型。
常量(字面量)
变量
变量:变量就是在程序运行过程中其值可以发生变化的量,变量就是一个存储数据的容器。
容器具备什么特点:
- 容量(大小)。
- 存储一定格式的数据。
- 名字.
声明(定义)一个变量的格式:
数据类型 变量名字 = 数据值;变量名的命名规范
首单词小写,其他单词首字母大写,其他小写。java表示一个变量的容量多大是使用了数据类型描述的。
注意:
- 变量是必须先声明再使用。
- 在一个作用域中不能声明同名 的变量。
数据类型转换
数据类型转换:
- 小数据类型——–>大数据类型 自动类型转换
- 大数据类型———>小数据类型 强制类型转换
强制类型转换的格式:
小数据类型 变量名 = (小数据类型)大数据类型;数据类型转换要注意的细节:
- 凡是byte、short 、 char数据类型数据在运算的时候都会自动转换成int类型的数据再运算。(包括赋值运算!)
- 两个不同数据类型的数据在运算的时候,结果取决于大的数据类型。
- char类型的一个字符可以看做无符号的short类型的数!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17class Demo{
public static void main(String[] args){
/*
System.out.println(12); //整数常量
System.out.println(3.14); //小数常量
System.out.println(false); //布尔常量
System.out.println('1'); //字符常量
System.out.println("hello world"); //字符串常量
如果一个数据没有加上任何的标识之前,默认就是十进制的数据。
*/
System.out.println(10);// 十进制
System.out.println(0b10); //二进制 , 如果一个数据要表示二进制,那么要在该数据的前面加上0b开头。
System.out.println(010); //八进制数据, 八进制的数据需要以0开头
System.out.println(0x10); //十六进制数据, 十六进制的数据需要以0x开头
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23class Demo5
{
public static void main(String[] args)
{
//需求1: 定义一个变量存储一个正常人的年龄。
byte age = 120; //声明了一个byte类型的变量,该变量的名字叫age,把120存储到了age变量中。
//改变变量的值
age = 121;
//需求2: 定义一个变量存储老师口袋钱。
short money = 128;
//需求3: 定义一个变量存储老黎的钱。
int bossMoney = 1000000000;
//需求4: 定义一个变量存储周小川老板
long allMoney = 10000000000000000L;
//存储小数
float f = 3.14f;
double d = 3.1415926537;
boolean b = false;
char c = 'a';
String str = "hello world";
System.out.println(str); //需要获取一个变量存储的数据,只需要使用变量名即可。
}
}1
2
3
4
5
6
7
8
9
10
11
12
13class Demo
{
public static void main(String[] args)
{
//int age = 12; //声明一个变量
int age ,height ; //声明了变量
//给变量赋值
age = 10;
height = 175;
System.out.println(age);
System.out.println(height);
}
}1
2
3
4
5
6
7class Demo1
{
public static void main(String[] args) {
String str = ""; //字符串还是字符呢? ""字符串没有内容是属于一个空字符串。
System.out.println(str);
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35class Demo2
{
public static void main(String[] args) {
/*
byte b= 11; // 一个字节
short s = b; // 把b变量存储的值赋予给s变量。
int i = s; // i是4字节
long l = i; // l 是8个字节。
System.out.println(l);
int i = 128; //4个字节
byte b =(byte) i; // 1个字节
System.out.println(b); // -128
//如果是负数,那么最高位肯定是1, 正数的二进制位的最高位是0。
System.out.println(Integer.toBinaryString(-7)); //sun给我们提供一个功能 Integer.tobinaryString() 查看一个数据的二进制数据形式的。
// 11111001(补码)
凡是byte、short 、 char数据类型数据在运算的时候都会自动转换成int类型的数据再运算。
byte b1 =1;
byte b2 = 2;
byte b3 = (byte)(b1+b2);
System.out.println(b3); //3
System.out.println('a'+1); //98
两个不同数据类型的数据在运算的时候,结果取决于大的数据类型
int i =10;
long l = 20;
i = (int)(i+l);
System.out.println(i);
*/
int i = 10; //
byte b = i; // 一个整数没有加上任何标识的时候,默认是int类型的数据。
//10 是一个常量, 编译器在编译的时候就能够确认常量的值了,byte b = 10,在编译到的时候
//java编译器就会检查到10并没有超出byte的表示范围,所以允许赋值。
//java编译器在编译的时候并不能确认变量所存储的值,变量存储的值是在运行的时候才在内存中分配空间的
System.out.println(b);
}
}