介绍
鄙人才疏学浅,如有谬论,敬请指教。
计算机储存容量单位讲解
计算机储存容量基本单位就是字节(Byte),而字节下面还有一个比特>(bit),对应关系是一个字节 = 八个比特,比特(bit)是计算机储存最>小单位。
总体换算关系是:
1B(字节) = 8bit(位),
1KB(千字节) = 1024B,
1MB(兆字节 简称“兆”) = 1024KB,
1GB(吉字节 又称“千兆”) = 1024MB,
1TB(万亿字节 太字节) = 1024GB,
1PB(千万亿字节 拍字节) = 1024TB。
以上参考的文章
基本数据类型
1.数值型
- 整数类型:byte[1],short[2],int[4],long[8]。
- 浮点类型(其实可以理解为小数):float[4],double[8]。
2.字符型(char[2])
存放单个字符。
3.布尔型(boolean[1])
存放true和flase。
整数类型
- Java的整形常量默认为int型,声明long型常量需在后面加上 ' L ' 或 ' l '。(建议使用大写)
- Java各整数类型有固定的范围和字段长度,不受操作系统[OS]影响,以此保证java可移植性。(说实话不是特别累理解)
- byte,short,int 默认值是 0 ,long 默认值是 0L 。
byte a ;//byte的大小
System.out.println(Byte.SIZE);
short b ;//short的大小
System.out.println(Short.SIZE);
int c ;//int的大小
System.out.println(Integer.SIZE);
long d ;//long的大小
System.out.println(Long.SIZE);
浮点类型
- Java的浮点型常量默认为double型,声明float型常量需在后面加上 ' f ' 或 ' F '。(建议使用大写)
- 浮点数陷阱
- 通常情况下,使用double,因为double比float更加精确。(但我感觉比较占内存吧)
- float 默认值是 0.0f , double 默认值是 0.0d(我也不知道为啥后面要缀一个d)。
float a;//float的大小
System.out.println( Float.SIZE);
double b;//double的大小
System.out.println(Double.SIZE);
字符类型
- 字符类型可以表示单个字符,多个字符需要用字符串String
- 字符常量是用单引号''(切英文shift + “)括起来的字符。
- Java中char本质上是一个整数,在输出时,是unicode码对应的字符。
- 可以直接给char赋一个整数,会按照对应的Unicode字符输出。
- char类型是可以进行运算,相当于一个整数。
char a = 97 ;//char本质是一个整数
System.out.println(a);
char b = 'b' ;//char的大小
System.out.println(Character.SIZE);
System.out.println(a + b);//两个字符串运算
布尔类型
- boolean类型数据只允许取值true和flase,没有null。
- 布尔类型适合于逻辑运算,一般用于程序流程控制。
- 不可以0或者非0的整数替代false和true。这和C语言不相同。(目前恰好只学了C语言)
if (true){
System.out.println("基尼太美");
}
if (false){
System.out.println("滚啊!小黑子");
}
自动类型转换
当Java程序在进行赋值或运算时,精度小(禁止开车哈)的类型自动转换为精度大的数据类型,这就是自动类型转换:
char --> int --> long --> float --> double
低---------------------------------------------->高
byte --> short -->int --> long --> float --> double
- 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大那种的那种数据类型,然后再计算。
int a = 123;
float b = 4.6F;
double c = 1.23;
System.out.println(a + b);
System.out.println(a + c);
//感兴趣的可以试下b + c 的值是否等于5.83
- (byte , short)和char 之间不会相互自动转换。
- byte,short,char三者可以计算,但在计算时首先转换为int类型
byte a = 12;
short b = 45;
char c = 'c';
short d = a + b + c;//错误
System.out.println(d);
int e = a + b + c;//正确
System.out.println(e);
- 布尔类型不参与转换(个人感觉它也计算不了啊)。
int a = 'a';//char --> int
double b = 125;//int -->double
System.out.println("a=" + a +"\t"+ "b=" + b);
强制类型转换
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符(),但可能造成精度降低或溢出。
- 当进行数据大小从大到小就要使用强制转换。
- 强制符号只针对于最近的操作数有效,往往会使用小括号提升优先级。
// int a = (int)12 * 2.0 + 1.1;
// System.out.println(a);
int b = (int)(12 * 2.0 + 1.1);
System.out.println(b);
- char类型可以保存int的常量值,但不能保存int的变量值,需要强转。
** byte和short类型在进行运算时,当做int类型处理。