数据类型转换
1、Java基本数据类型大小
byte: 八位整数 -128——127,可用来节省内存的使用。
short: 16位整数 -32768——32,767,也比较省内存。
int: 32位整数 -2,147,483,648——2,147,483,647,一般来说整数都够用了
long: 64位整数 -9,223,372,036,854,775,808—— 9,223,372,036,854,775,807,一般不需要用
float: 32位浮点,如果浮点需要节省内存用这个。
Double: 64位浮点,一般非整数浮点可用这个。
2、自动类型转换(隐式):
特点:代码不许要进行特殊处理,自动完成
规则:数据范围从小到大
double num1 =2.5F;
//左边是double类型,右边是float类型,左右不一样,float→double,符合从小到大规则,也发生了自动类型转换
3、强制类型转换
特点:代码需要进行特殊的格式处理
格式:范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的数据
int number2 = (int)3.99; // double→int
注意事项:
- 强制类型转换一般不推荐使用,因为有可能发生精度损失,数据溢出
- byte/short/char这三种类型都可以发生数学运算,例如加法“+”
- byte/short/char这三种类型在运算的时候,都会被首先提升成int类型,然后再计算
- boolean类型不能发生数据类型转换
char zifu1= 'A';//这是个字符型变量,里面是大写字母A
System.out.println(zifu1+1);//66,也就是大写字母A被当作65进行处理
//计算机等底层会用一个数字(二进制)来代表字符A,就是65,
//一旦char类型进行了数学运算,那么字符就会按照一定规则译成一个数字
数字和字符的对照关系表(编码表)
ASCII码表:美国信息交换标准代码
Unicode码表:万国码,也是数字和符号等对照关系。开头0-127部分和ASCII完全一样,但是从128开始,包含有更多等字符
常用值:
48 - ‘0’
65 - ‘A’
97 - ‘a’
数据运算
运算符:进行特定操作等符号,例如:+
表达式:用运算符连起来等式子叫做表达式,例如 20+5、a+b
取模(取余数):%
四则运算当中等加号+有常见三种用法:
- 对于数值来说,那就是加法
- 对于chae类型来说,在计算之前,char会被提升为int,然后再计算,char类型字符和int类型数字之间对照关系表:ASCII、Unicode
- 对于字符串String(首字母大写,并不是关键字)来说,加号代表字符串连接操作。任何数据类型和字符串进行连接时,结果都会变成字符串
数据类型 变量名称 = 数据值
String str1 ="JAVA";
System.out.println(str1 +20);//JAVA20
System.out.println(str1 +20+30);//JAVA2030
System.out.println(str1 +(20 + 30));//JAVA50(括号优先)
自增运算符(++) 自减运算符(--)
基本含义:让一个变量涨一个数字1,或者让一个变量降一个数字1
使用格式:写在变量名称之前,或写在变量名称之后,例如:++num,也可以num++
使用方式:
- 单独使用:不和其他任何操作混合,自己独立成一个步骤
- 混合使用:和其他操作混合,例如和赋值混合,或者与打印操作混合等
使用区别:
- 在单独使用的时候,前++和后++没用任何区别,也就是++num,num++是完全一样的
- 在混合使用等时候,有重大区别:
A.如果是【前++】,那么变量【立刻马上+1】,然后拿着结果进行使用。【先加后用】
B.如果是【后++】,那么首先使用变量本来等数值,【然后再让变量+1】。【先用后加】
注意事项:只有变量才能使用自增、自减运算符。常量不可发生改变,所以不能用
int num1 = 10;
++ num;
System.out.println(num1);//单独使用
int num2 = 20;
System.out.println(++num2);//与打印操作混合,输出为21
int num3 = 30;
System.out.println(num3++);//与打印操作混合,输出为30
System.out.println(num3);//与打印操作混合,输出为31
三元运算符
三元运算符:需要三个数据才可以进行操作
格式:数据类型 变量名称 = 条件判断?表达式A:表达式B
流程:
首先判断条件是否成立:
如果成立为true,那么将表达式A的值赋值给左侧等变量
如果成立为false,那么将表达式B的值赋值给左侧等变量
二者选其一
注意事项:
- 必须同时保证表达式A和表达式B都符合左侧数据类型等要求
- 三元运算符等结果必须被使用
int a = 20;
int b = 30;
int max = a>b ? a:b;//判断a>b是否成立,
//如果成立将a的值赋值给max,如果不成立将b的值赋值给max,二者选其一