数据类型及运算符
1.数据类型
1.1 数据的基本类
数据的基本类型包括四个大类,八个小类,为: 整型,浮点型,字符型,布尔型.
其中整型又可分为byte,short,int,long四个小类,其中整数默认值为int,如果超出范围,则须设为long类型,字面量后须增加L作为long类型. byte的范围为-128到127之间
浮点型可分为float(单精度)和double(双精度)浮点型,需要注意float(单精度)浮点型字面量后须加F,否则报错.小数默认值为double.
1.2 引用数据类型
数据的引用类型为String.
2.类型转换
2.1 不同类型范围
byte < short|char < int < long < float <double
2.2 自动类型转换
范围小的自动转为范围大的
byte a = 12; int b = a; //这里就发生了自动类型转换(把byte类型转换int类型)
2.3 表达式的自动类型转换
在表达式中,小范围类型的变量,会自动转换成表达式中较大范围的类型,再参与运算
在表达式中,byte、short、char 小于int的直接转换成int类型参与运算
byte b1 = 10;
int i1 = 20;
long l1 = 300L;
long x = b1 + i1 + l1;
byte b2 = 5;
byte b3 = 6;
int z = b2 + b3; // 在表达式中,byte、short、char 小于int的直接转换成int类型参与运算
// 操作系统主流的是32位系统, 一次操作32位最快
2.4 强制类型转换
数据类型 变量名 = (数据类型)值;
double d1 = 99.5;
int i3 = (int) d1;
注意: 1.数据超出范围会丢失 2.小数转换整数会丢失小数位
3.运算符
3.1 算术运算符
包括+,-,*,/,%,++和--. 其中: 1) 用+符号做连接符的情况如果是数字能运算就运算,果字符串不能运算就拼接在一起.2) 整数相除结果是整数.没有小数, 如果要得到小数,就需要有小数参与运算.
自增自减运算符: 单独使用:++/--放在变量前后没有区别 混合使用:++或者--放在变量或者前面运算规则稍有不同 ++在后:先做其他运算,再做自增 ++在前:先自增,再做其他运算
3.2 赋值运算符
包括=,+=,-=,*=,/=,%=,其中注意=为赋值运算符,其作用为赋值,如表示相等,需要写==.
byte y = 10;
byte z = 30;
y += z; // 等价于: y = (byte)(y + z)
3.3 比较运算符
包括>,<,>=,<=,==,!=. !表示非,其余意思和数学比较运算一致
3.4 逻辑运算符
&: 两边都为true结果才为true (要求高)
|: 有一个为true结果就是true (要求低)
!: 非(取反)
^: 异或, 相同为false, 不相同为true
&&: 短路与 效果和&是一样的, 两个为true结果才是true, 左边为false右边不执行, 提高效率
||: 短路或 效果和|是一样的, 有一个true结果就为true, 左边为true右边不执行, 提高效率
短路或和短路与较为常用.
3.5 三元运算符
类型 标示符 = 条件 ? 输出1:输出2
例如:
// 找两个数的较大值
int a = 10;
int b = 20;
int max = a > b ? a : b;
System.out.println("较大值 = " + max);
注意: 运算符的优先级问题, && 和 || 一起出现在表达式中, &&的优先级高于||
4.键盘输入
4.1 步骤
1) 引入api: import java.util.Scanner
2) 创建对象 (创建键盘扫描器):Scanner sc = new Scanner(System.in)
3) 得到用户输入的int整数:int age = sc.nextInt()
4) 得到用户输入的字符串:String name = sc.next()
5.Random随机数
5.1 步骤
1) 引入api: import java.util.Random
2) 创建对象 (创建键盘扫描器):Random r = new Random()
3) 得到用户输入的int整数:int a = r.nextint(number)===>范围从(0-number-1)
4) 获取任意范围的随机数: [x,y]=> r.nextInt(y-x+1)+x