【Java学习】基本数据类型及其转换
一、8种基本数据类型
类型 | 数据类型 |
所占字节数 |
默认值 | 最小值 | 最大值 |
整型 | byte | 1 byte | 0 | - 2^7 | 2^7 |
short | 2 byte | 0 | - 2^15 | 2^15 - 1 | |
int | 4 byte | 0 | - 2^31 | 2^31 - 1 | |
long | 8 byte | 0 | - 2^63 | 2^63 - 1 | |
浮点型 | float | 4 byte | 0.0 | 1.4E-45 | 3.4028235E38 |
double | 8 byte | 0.0 | 4.9E-324 | 1.7976931348623157E308 | |
字符型 | char | 2 byte | '\u0000'(空) | 0 | 2^16 -1 |
逻辑型 | Boolean | 1/8 byte | false | \ | \ |
【注】超出范围赋值时会发生错误。
1.整型
int最常用,直接给出一个整数都是默认为int类型。但两种情况必须指出:
- 直接赋值给short或byte时,系统自动把该值当成对应类型处理(如果系统把该值当成int,显然一个int值不能赋值给这二者);
直接赋值给long类型时,系统默认该值为int,在赋值时再转化为long类型。因此,一个整型值的的范围超出int类型时必须在数值后面加上l或L,显式指出其类型为long。
[code]long a = 9999999999999; System.out.println(99999999999999); //以上两者会有超范围报错,正确写法如下(不用小写l防止与数字1混淆): long a = 9999999999999L; System.out.println(99999999999999L);
Java支持用二进制、八进制、十六进制整数,分别用0b(或0B)、0、0x(或0X)开头。
【注】二进制的short和byte为无符号二进制数,如byte的范围为-0b100000000到0b01111111,int和long为二进制补码形式。
[code]byte binary0 = 0b01111111; //binary0=127; byte binary1 = 0b10000001; //报错:cannot convert from int to byte byte binary2 = -0b0000001; //正确; int binary3 = 0b11111111111111111111111111111111; //binary3 = -1;
2.浮点型
- 默认类型为double类型,需要系统把一个浮点数当做float类型,要在该值的后面加上f(F)。
- 科学计数法表示的是浮点数,如1900为整型,但19e2为浮点型。
浮点数提供三个特殊值,正无穷(POSITIVE_INFINITY)、负无穷(NEGATIVE_INFINITY)和非数(NaN),表示溢出和出错,因此支持浮点数运算的除数为0(整数运算不行)。所有的正无穷相等,所有的负无穷相等,非数不与任何数(包括非数)相等。
[code]public class Test { public static void main(String[] args) { double a = 2.0/0; double b = -1.0/0.0; System.out.println(a + b); if(-a == b) System.out.println(-a + "=" + b); } } /*运行结果: NaN -Infinity=-Infinity */
3.字符型
Java字符型使用Unicode字符集,一共可以表示65536个字符(包括常见的汉字),其中前256个字符与ASIC字符相同。可以有多种方式表示字符:
a)在字符外加一个单引号,如'a', '平'。
b)在转移字符外加单引号,转义字符有:
- 特殊字符。只能用转义字符表示:
转义字符 | 说明 | 转义字符 | 说明 |
\b | 退格符 | \n | 换行符 |
\r | 回车符 | \t | 制表符 |
\' | 单引号 | \" | 双引号 |
\\ | 反斜杠 |
- 八进制转义字符: \ + 1到3位八进制数字。
- Unicode表示:\u + 4位十六进制数字。
c)用进制数字表示,char字符在计算机中是以无符号整型型储存的,整数0~65535和字符一 一对应。
[code]public class Test { public static void main(String[] args) { char a = 97; //a = 'a'; char b = '\142'; //b = 'b'; char c = '\u0063'; //c = 'c'; char 平 = '平'; //java允许用中文作为变量名 System.out.println(a); System.out.println(b); System.out.println(c); System.out.println(平); } }
【注】char类型在计算机的储存为无符号整型,能用char类型变量进行整数直接的比较和运算。
4.布尔型
boolean型的值为false和true,和C/C++不同,不能用0和非0表示,整型和boolean型也不能互相转换。
5.附:为了改善数字多位的时候眼花,Java支持在数字中用下划线分隔如:a=100_000,即a = 100000。
二、数据类型转换
Java是一种强类型语言,强类型体现在
- 所有变量不许先声明,后使用。
- 指定类型的变量只能接受该类型的赋值。
- 相同类型直接才能进行运算和比较。
1. 自动转换
由编译器自动完成的数据类型转化,按储存范围由小到大转换即:byte→short(char)→int→long→float→double,转换过程经常不会有精度损失。
[code]int a = 1; double b = 2.0; double c = a + b; //这里编译器先将 a 转化为double型,再执行a + b;
【注】所有的基本类型都可以自动转化为String类型。 注意:
[code]System.out.println(3+4+"string"); //输出:7String System.out.println(3 +(4 +"String")); //输出:34string
2. 强制转换
转换方向与自动转换相反,需要程序员指定转化类型,转换过程经常有精度损失,语法格式为:(目标类型)变量;
[code]int a = 4; double b = 2.3; int c = a/(int)b; //把b转换为int类型,即b = 2, 再进行运算,所以c = 2
阅读更多
- 黑马程序员-JAVA学习笔记-基本数据类型及其转换
- Java学习6——基本数据类型及其转换
- Java学习------基本数据类型转换
- Java基本学习(一)——Java中的数据类型、类型转换
- JAVA基础学习之String、StringBuffer、StringBuilder、基本数据类型的使用、整形进制转换、集合Collection、Vector、ArrayList、LinkedList、HashSet、TreeSet等(3)
- 【JAVA学习】java基本数据类型与字符串之间的转换(基本数据类型、对象封装类、自动装箱、自动拆箱)
- Java中的变量与常量、基本数据类型及其类型转换
- Core Java 学习笔记——2.基本数据类型&类型转换
- 学习java(一:从Java设计思想看基本数据类型与类型转换)
- Java学习系列(二)Java注释、标识符、基本数据类型及其转换易错点详解
- Java基础学习总结(122)——Java八种基本数据类型的包装类及其装箱拆箱详解
- Java基本数据类型及其转换
- Java 基本数据类型的包装类及其数据类型转换
- Java学习系列(二)Java注释、标识符、基本数据类型及其转换易错点详解
- Java语言基本数据类型、转换及其封装
- Java基本数据类型及其转换
- 黑马程序员——Java基本数据类型及其相互转换
- JAVA基本数据类型及其转换
- java中基本数据类型介绍及其之间的转换