JAVA数据类型与分支结构
前言
Java语言提供了8种基本数据类型。. 分别是 byte、short、int、long、float、double、boolean、char。. String 是对象,不属于基本数据类型. 8种基本数据按类型分可以分为. 4个 整数型:byte、short、int、long. 2个浮点型:float、double. 1个字符类型:char. 1个布尔型:boolean. 八大基本数据类型.
一、java数据类型都有什么?
1.byte–short–int–long–float–double–boolean–char
2.byte:1字节,用来表示-128 - 127之间的整数。赋值的时候可以直接用整数常量赋值。对其包装类也是如此。即 Byte(byte) a = 20;
3.short :2字节,用来表示-2^15 - 2^15-1之间的整数。赋值的时候可以直接用整数常量,对其包装类也是如此。即 Short(short) b = 20;
4.int:4字节,可以表示的数为-2^31 - 2^31-1。整数的默认类型。封装类也如此 。整数相除的时候,会舍弃小数部分。结果也是整数,例如 5/3 = 1;且整数在运算的时候,要注意内存溢出的问题
5.long:8字节,可以表示的数为 -2^63 – 2^63-1。常用来表示int表示不了的整数类型。例如System.currentTimeMills()方法,返回的是1970.1.1到今天所经历的毫秒数。这个数字就是int所不能表达的,必须用long来表达。如果long类型还不能表达你所要的整数,推荐用bigInteger,可以表示任意的整数
long a = 20;是可以的,但是如要使用他的封装类,那么数字后面必须加L/l 例如 Long a = 20L;
long a = 1000000L;
6.float:4字节,由于浮点数的默认类型是double,因此想使用float的时候就要在浮点数后面加f/F。整数后面可以不用加,因为这是强制转化。在封装类Float中,无论是整数还是浮点数,后面都要加f/F
float a = 3.14159F;
7.double:8字节:常用来表示浮点数。默认的浮点数数据类型(Double中也如此)。且在计算机二进制中,无法正确的表示十分之一。所以会出现舍入误差,如果double类也无法达到你所要表示的浮点数,推荐使用BigDecimal来表示,他可以表示任意的浮点数
8.boolean:1个字节:只有两种值,true/flase
9.char:2字节,只能表示0-2^16-1也就是0- 65535的整数。这个值对于Unicode编码。对于世界上所有的字符符号。对char类型和他的包装类Character的赋值如下
char a = 5254;直接使用(0-65535)常量赋值.
char a = ‘A’; 直接使用字符赋值
char a = ‘\u0041’使用Unicode中16进制的格式
二、数据类型转换
1.自动类型转化:从小类型到大类型之间的转化称为自动类型转化,因为大类型肯定可以表示小类型的数据,不会发生精度丧失。编译器会帮我们自动的进行自动类型转化。类型间的大小关系如下。在多种类型的运算中,结果会自动向较大的类型转化。且在三目运算符中,结果也会向较大的数据类型转化,如:
int a = (5 > 4)? 20 : 6.0; 此时a为20.0.因为在三目运算符中有浮点数,因此,结果会自动向大类型转化
2.强制类型转化:从大类型到小类型之间的转化。需要强制转化符。且可能出现精度丧失或者精度溢出的风险。精度丧失指的是小类型无法准确的描述大类型的数据,尤其时浮点数。很可能小数点后面的几个就不见了。精度丧失不会四舍五入。而是直接抹去后面无法表示的内容。例如 int a = (int) 20.56484615;a = 20;
精度溢出是指大类型的数据超出了小类型的容量,此时编译器不会报错,但是结果就不如你意了。例如 int a = (int)1024^4*20; 此时a = 0;
3.int/short/byte/char之间的赋值,有他们独特的规定。也就说说,short/byte/char类型的赋值。如果赋值为一个整数常量,虽然整数常量默认是int,但是也无须进行强制转化。但是如果赋值为一个变量,无论该变量内部是否为整数,都必须进行强制转化。且他们三者在运算的时候,要先自动转化为int之后,再开始运算,也就是说,运算结果都是int。那么这个时候,就必须对这个结果进行强制类型转化才能赋值给byte,char,short他们了
三、分支结构
1.分支结构是什么?
1.1分支结构:程序在运行中,根据不同的条件执行不同的语句。 三种结构: if结构:满足条件时执行语句,不满足则不执行(1条路) if…else结构:满足条件执行语句,不满足则执行另外的语句,例如:
int a = Integer.parseInt(sc.nextLine());
int b = Integer.parseInt(sc.nextLine());
if(a==b){
System.out.println(a+"=="+b);
}else if(a>b){
System.out.println(a+">"+b);
}else{
System.out.println(a+"<"+b);
}
1.2 switch - case结构
switch (/* 变量|表达式 */) {
case 值1:
// 处理方式1;
break;
case 值2:
// 处理方式2;
break;
default:
// 最终处理方式
break;
switch case使用注意事项
(1). break关键字作用是用于跳出对应的case选项
(2). break省略之后,执行对应的case选择,会继续运行到下一个break或者大括号结尾终止switch - case运行
(3). 在case选项中不允许出现相同的选择,语法错误!!!
(4). 在switch case语句体中,能够执行的代码有且只能是case之后或者default之后的代码,其他代码都不可以执行!!!
(5). default可以省略,按照自己的业务逻辑需要考虑是否省略default选择,default可以处理用户在输入过程中超出case选项的一些特殊情况