JavaSE第二章、数据类型

数据类型

1.数据类型总述

(1)基本数据类型

数值型:整数类型(byte[1], short[2], int[4], long[8])

​ 浮点(小数)类型(float[4], double[8])

字符型:单个字符‘a’(char[2])

布尔型:true、false(boolean[1])

(2)引用数据类型

类:class

接口:interface

数组:[ ]

2.整型

注意事项:

1.java的整数类型的范围和字段长度是固定的,不受OS影响,以保证可移植性。

2.Java的整型常量默认为int,声明long型常量后要加‘l'或’L‘。

3.bit是计算机中的最小存储单位。bytle是计算机中基本存储单元。1byte=8bit。

3.浮点类型

单精度float 4个字节 -3.403E38~3.403E38

双精度double 8个字节 -1.798E308~1.798E308

存放形式:浮点数=符号位+指数位+尾数位

尾数部分可能丢失,造成精度损失(所以说,小数都是近似值)。

注意事项:

1.java的浮点类型的范围和字段长度是固定的,不受OS影响。

2.Java的浮点常量默认为double,声明float型常量后要加‘f'或’F‘。

3.两种表示形式:十进制数形式 eg:3.14 314.0f .314

​ 科学计数法形式 eg:3.14e2 [] 3.14E-2 []

4.⚠️当我们对运算结果是小数的进行相等判断时,不能直接比较。应该是以两个数的差的绝对值,在某个精度范围内判断。

double num1=2.7;
double num2=8.1/3;	//2.6999999999999997
if(Math.abs(num1-num2)<0.000001)	//✖️不能用num1==num2
{
	System.out.println("equal");
}

api文档使用:包->类->方法

4.字符类型

public static void main(String[] args)
{
	char c1='a';	//a
	char c2='\t';	//	
    char c3='王';	//王
    char c4=97;		//a
}

注意事项

1.java中,char的本质是一个整数,在输出时,是unicode码所对应的字符。

char c2='a';
System.out.println((int)c2);	//97
char c3 ='b'+1;
System.out.println((int)c3);	//99
System.out.println(c3);		//99->对应的字符->编码表ASCII->c

2.字符型存储进计算机时,需要将字符对应的码值(整数)转换为二进制存储。

5.布尔类型

boolean类型适用于逻辑运算,一般用于程序流程控制:if、while、do-while、for

//一个例子:
boolean isPass=true;
if(isPass==true)
{
    System.out.println("Congratulation!");
}else{
    System.out.println("Keep on going!");
}

⚠️不可以用0或非0的整数代替false或true。

6.基本数据类型转换

(1)自动类型转换低精度向高精度的转换

​ char->int->long->float->double

byte->short->int->long->float->double

注意事项

1.有多种类型的数据混合运算时,系统首先将所有数据转换成容量最大的那种数据类型,然后再进行计算。

2.(byte、short)和char之间不能相互自动转换。

3.byte、short、char之间可以计算,在计算时首先转换为int类型。(不管是他们三个的混合运算还是只出现了其中一种类型的运算。要尤其小心char的计算!)

byte b1=1;
byte b2=2;
short s1=2;
short s2=b1+s1;	//错
byte b3=b1+b2;	//错
int s2=b1+s1;	//对

4.布尔类型不参与自动类型转换

5.自动提升原则:表达式结果的类型自动提升为 操作数中最大的类型

(2)强制类型转换(高精度向低精度

可能造成精度降低或溢出,要格外注意。

int a=(int)1.9;
System.out.println("a="+a); //1,造成精度损失

int b=2000;
byte c=(byte)b;
system.out.println ("b="+b);	//-48,造成数据溢出

注意事项

1.强转符号只针对最近的操作数有效。

2.char类型可以保存int的常量值,但不能保存int的变量值,需要强转。

char c1=100;		//ok
int a=100;			//ok	
char c2=a;			//✖️错
char c3=(char)a;	//ok
System.out.println(c3);	//100对应的字符,d

3.byte和short类型在进行运算时,当作int类型处理。

7.基本数据类型和String类型的转换

基本数据类型转String

语法: 基本类型的值+""

int n1=100;
String s1=n1+"";

String类型转基本数据类型

语法:通过基本类型的包装类调用parseXX方法即可。

String s2="123";
int num1=Integer.parseInt(s2);
double num2=Double.parseDouble(s2);
float num3=Float.parseFloat(s2);
long num4=Long.parseLong(s2);
byte num5=Byte.parseByte(s2);
boolean b=Boolean.parseBoolean("true");
short num6=Short.parseShort(s2);

把字符串转成字符char:指取字符串的第n-1个字符

语法:字符串变量.charAt(n-1)

System.out.println(s2.charAt(0));	//1

注意事项

要确保String类型能够转换成有效的数据。例如:可以将”123“转成一个整数,但不能把”hello“转成一个整数。

posted on 2022-04-01 14:52  Cathy_Wong  阅读(45)  评论(0)    收藏  举报