第二章:类型转换
1).我们经常在程序中使用各种类型来存储数据。
对于“基本数据类型”的四类八种,除boolean以外,其它七种,相互之间都可以互相转换。
2).有两种转换方式:
A).自动转换:数据类型大小一样的,或者将小类型赋给大类型时。
int a = 10;
int b = a;
或者:
int a = 10;
long b = a;
byte a = 10;//自动转换,因为高位全是0,舍掉的都是0,所以给转
float b = 0.1;//编译错误,因为高位有1,所以不给自动转。
B).强制转换:将大类型的数据存储到小类型中。
long a = 10;
int b = (int)a;
【注意】:
1).小数类型可以强转为整数
double x = 3.79;
int a = (int)x;//舍掉小数部分,只保留整数部分。
System.out.println(a);//3
注意:
byte,short,int,long转char类型,都需要“强转”:因为char不能存储负数
1).三个步骤:
A).导包:在定义类的上方:
import java.util.Scanner;
B).创建对象:在main()方法中
Scanner sc = new Scanner(System.in);
C).接收数据:在创建对象之后
A).接收字符串:
sc.next();//缺点:不能接收带空格的字符串。优点:可以和nextInt()以及nextDouble()一起使用【常用】
sc.nextLine();//优点:可以接收带空格的字符串。缺点:不能和nextInt()以及nextDouble()等其它方法一起使用
B).接收一个整数
sc.nextInt();
C).接收一个小数:
sc.nextDouble();
2).注意:
1).从控制台不能接收一个“字符”:
我们程序中可以存储数据,接下来,程序就需要对数据进行“处理”:
1).对数据进行算术运算
2).对数据进行判断
1).算术运算符:+、-、*、/、%(取余,取除法的余数 )
2).示例:
1).混合运算的问题:
2).“短整型(byte,short,char)”在运算时,会自动提升为int类型,所以:结果必须是int类型。
byte a = 10;
byte b = 20;
int c = a + b;//JVM在执行 a+b时,会将a和b自动提升为int类型,所以结果必须是:int类型。
--------------------------------------------------------------------------------
short t1 = 10;
short t2 = 20;
int t3 = t1 + t2;//结果必须得是:int类型
--------------------------------------------------------------------------------
char c1 = ‘a’;//在内存中变量c1存储的是:‘a’字符对应的编码值(97)
char c2 = ‘b’;//‘b’字符对应的编码值(98)
int c3 = c1 + c2;//97 + 98,结果必须是一个int值。
3).不同类型数据进行混合运算时,不足int的会提升为int,如果有高于int类型的,结果将是这个表达式中的最大类型的。
byte a = 10;
int b = 20;
double c = 30;
double d = a + b + c;
-------------------------------------------------
long a = 10; //8个字节
float b = 0.1F; //4个字节(比long大,因为小数的存储机制不同,如果存储整数,可以存储很大的整数)
float c = a + b;
数据类型的大小,从小到大:
byte-->short、char-->int-->long-->float-->double
4).对于String类型可以使用+符号:做“字符串拼接”
String s = “我爱”;
String s2 = s + “你”;
System.out.println(s2);//”我爱你”
------------------------------------------------------------------
任何类型都可以和“字符串”做“拼接”:
System.out.println(3 + “abc”);//”3abc”
System.out.println(2 + 3 + “abc” + 4);//”5abc4”
System.out.println(5 + 5 + “5 + 5 =“ + 5 + 5);
//1->10 + “5 + 5 = “ + 5 + 5
//2->”105 + 5 = “ + 5 + 5
//3->”105 + 5 = 5” + 5
//4->”105 + 5 = 55”
1).赋值运算符:=、+=、-=、*=、/=、%=
注意:+=、-=、*=、/=、%=都隐式的带“强制转换”
2).作用:更改变量的值:
int a = 10;//赋值语句,执行顺序:从右向左
a += 20;//相当于:a = a + 20;
System.out.println(a);//30
4).注意:
如果一个表达式中做“多件事情”,++和--在变量的前面或者后面将会影响最终结果:
1).自增自减运算符:++,--
2).作用:更改变量的值,加1或者减1
++和--放在变量的前面或者后面都可以:
4).注意:
如果一个表达式中做“多件事情”,++和--在变量的前面或者后面将会影响最终结果: