基本数据类型
类型 | 大小 | |
byte(字节型) | 1byte(8bit) | -128~127 , 2^7~2^7-1 |
short(短整型) | 2byte(16bit) | -2^15~2^15-1 |
int(整型)常用 | 4byte(32bit) | -2^31~2^31-1 |
long(长整型) | 8byte(64bit) | -2^63~2^63-1 |
float(单精度的浮点数) | 4byte | -3.4E38~3.4E38 |
double(双精度浮点数) | 8byte | -1.7E308~1.7E308 |
char(字符型) | 2byte | 表示一个字符,表示整数0~65535 |
boolean(布尔类型) | 1byte | true,false |
注:3.4E38 :3.4*10^38 科学计数法,java中,除了基本数据类型,都是引用类型。String不是基本数据类型,是引用数据类型。
整型
整型分为byte、short、int、long 4类,通常情况下,int是最常用的一种整型数据,也是java中整数常量的默认类型。在表示非常大的数字时,则需要用到更大范围的长整型long,并且需要在长整型数据后面加上L或l表示。
整型数据类型的应用代码如下:
byte b=-128;
short s=30000;
int i=2147483647;//-2147483648~2147483647
//在声明long变量的时候,如果赋的值非常大(超出int范围),要在数值后面加l或者L,建议都加
long l=1000;
long l2=100000000000l;
long l3=2147483648l;
long l4=10000l;
浮点型
java浮点型有float和double两种,java浮点型数据有固定的表示范围和字段长度。float类型的数据需要在数字后面加上F或f。
浮点型数据类型的应用代码如下:
double d=0.123;
double d2=123;
System.out.println("d="+d);
System.out.println("d2="+d2);//123.0
//在声明float类型时,在数值后面加f或者F
float f=0.321f;
//double类型在计算时可能会出现精度丢失问题
//在十进制中,我们无法精确表示1/3,就像无法在二进制中精确的去表示0.9
double num1=3.0;
double num2=2.1;
System.out.println(num1-num2);
字符型
字符型数据用来表示通常意义上的“字符”,字符常量使用单引号括起来的单个字符。
字符型数据类型的应用代码如下:
char c='中';
char c2='A';
char c3='8';
char c4=97;//97--ASC码---a
System.out.println(c);
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
//转义字符
char c5='\n';//换行
System.out.print("abc"+c5);
System.out.println("ABC");
//表示'\'
char c6='\\';//就表示'\'
System.out.println(c6);
//多个字符连在一起,字符串String 不是基本数据类型,是一个类,就叫引用类型
String str="helloWorld";
布尔类型
java中定义了专门的布尔类型,用于表示逻辑上的“真”或“假”。用关键字boolean来定义,取值只能为true或false。
布尔类型的引用代码如下:
boolean type=true;
boolean type2=false;
int age=25;
int age2=20;
boolean result=age>age2;
System.out.println(result);//true
类型转换
一、自动转换
小范围的数据类型的值或者变量可以赋给大范围的数据类型的变量。
1.赋值时的转换,小范围数据类型可以赋给大范围数据类型。
int i=100;
double d=i;
//i是int类型 d是double类型 i自动转换成了double类型
float f=3.14f;
double d2=f;
2.不同类型的值在计算时,会自动转换成最大范围的数据类型。
int num1=10;
long num2=100l;
float num3=1.0f;
float result=num1+num2+num3;
System.out.println(result);//111.0
3.byte、short、int、char不会相互转换,但是三者在运算时都会转换成int类型来计算。
byte b=100;
short s=200;
char c=65;//数值-->ASC-->字符
char t='a';//字符-->ASC-->int类型数据
int result2=b+s+c;
int result3=b+s+t;
System.out.println(result2);//365
System.out.println(result3);//397
二、强制转换
小范围-->大范围: 小数据类型 变量名=(小数据类型)大类型变量或值
double d=2.0;
int i=(int)d;//把大范围类型赋给小范围类型 要强制转换
long l=(long)3.14f;
//精度丢失问题
double d1=3.14;
int i1=(int)d;
System.out.println(i);//3
//内存溢出问题
long l1=1000000000000000l;
int j=(int)l1;
System.out.println(j);//-1530494976
补充:String类型
String str="str2=";
String str2="我是一个字符串";
System.out.println(str+str2); //str2=我是一个字符串
int i=100;
int j=200;
//字符串类型+基本数据类型===>字符串类型
System.out.println("123"+i+j);//先和i拼接成 "123100" 再去和j拼接成 "123100200"
//先计算再拼接
System.out.println(i+j+"123");//先计算了i+j的和 为300 再去和“123”拼接成了 "300123"
String result=i+"";//整型转换为字符串类型: 整型+""
System.out.println(result+j);//100200