数据类型
Java语言数据类型的分类
-
基本数据类型
-
引用数据类型(面向对象的时候再深入学习)
基本数据类型的四类八种
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
整数 | byte | 1 | 负的2的7次方 ~ 2的7次方-1(-128~127) |
short | 2 | 负的2的15次方 ~ 2的15次方-1(-32768~32767) | |
int | 4 | 负的2的31次方 ~ 2的31次方-1 | |
long | 8 | 负的2的63次方 ~ 2的63次方-1 | |
浮点数 | float | 4 | 1.401298e-45 ~ 3.402823e+38 |
double | 8 | 4.9000000e-324 ~ 1.797693e+308 | |
字符 | char | 2 | 0-65535 |
布尔 | boolean | 1 | true,false |
说明
e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方。
在java中整数默认是int类型,浮点数默认是double类型。
需要记忆以下几点
byte类型的取值范围:
-128 ~ 127
int类型的大概取值范围:
-21亿多 ~ 21亿多
整数类型和小数类型的取值范围大小关系:
double > float > long > int > short > byte
最为常用的数据类型选择:
-
在定义变量的时候,要根据实际的情况来选择不同类型的变量。
比如:人的年龄,可以选择byte类型。
比如:地球的年龄,可以选择long类型。
-
如果整数类型中,不太确定范围,那么默认使用int类型。
-
如果小数类型中,不太确定范围,那么默认使用double类型。
-
如果要定义字符类型的变量,那么使用char
-
如果要定义布尔类型的变量,那么使用boolean
定义8种基本数据类型变量
public class VariableDemo3{ public static void main(String[] args){ //1.定义byte类型的变量 //数据类型 变量名 = 数据值; byte a = 10; System.out.println(a); //2.定义short类型的变量 short b = 20; System.out.println(b); //3.定义int类型的变量 int c = 30; System.out.println(c); //4.定义long类型的变量 long d = 123456789123456789L; System.out.println(d); //5.定义float类型的变量 float e = 10.1F; System.out.println(e); //6.定义double类型的变量 double f = 20.3; System.out.println(f); //7.定义char类型的变量 char g = 'a'; System.out.println(g); //8.定义boolean类型的变量 boolean h = true; System.out.println(h); } }
注意点
取值范围从小到大的关系:
byte short int long float double
-
如果要定义 一个整数类型的变量,不知道选择哪种数据类型了,默认使用int。
-
如果要定义 一个小数类型的变量,不知道选择哪种数据类型了,默认使用double。
-
如果要定义一个long类型的变量,那么在数据值的后面需要加上L后缀。(大小写都可以,建议大写。)
-
如果要定义一个float类型的变量,那么在数据值的后面需要加上F后缀。(大小写都可以)
-
运算符和表达式
运算符:
就是对常量或者变量进行操作的符号。
比如: + - * /
表达式:
用运算符把常量或者变量连接起来的,符合Java语法的式子就是表达式。
比如:a + b 这个整体就是表达式。
而其中+是算术运算符的一种,所以这个表达式也称之为算术表达式。
算术运算符
分类:
+ - * / %
运算特点:
+ - * :跟小学数学中一模一样没有任何区别.
/: 1.整数相除结果只能得到整除,如果结果想要是小数,必须要有小数参数。 2.小数直接参与运算,得到的结果有可能是不精确的。 案例: System.out.println( 10 / 3);//3 System.out.println(10.0 / 3);//3.3333333333333335
%:取模、取余。 他做的也是除法运算,只不过获取的是余数而已。 案例: System.out.println(10 % 2);//0 System.out.println(10 % 3);//1 应用场景: //可以利用取模来判断一个数是奇数还是偶数 System.out.println(15 % 2);//1 奇数
练习:数值拆分
需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台
代码示例:
//1.键盘录入一个三位数 //导包 --- 创建对象 --- 接收数据 Scanner sc = new Scanner(System.in); System.out.println("请输入一个三位数"); int number = sc.nextInt();//123 //2.获取这个三位数的个位、十位、百位并打印出来 //公式: //针对于任意的一个数而言 //个位: 数字 % 10 int ones = number % 10; //十位: 数字 / 10 % 10 int tens = number / 10 % 10; //百位: 数字 / 100 % 10 int hundreds = number / 100 % 10; //输出结果 System.out.println(ones); System.out.println(tens); System.out.println(hundreds);
公式:
获取任意一个数上每一位数。
个位:数字 % 10
十位:数字 / 10 % 10
百位:数字 / 100 % 10
千位:数字 / 1000 % 10
。。。以此类推。。。
3.隐式转换
概念:
也叫自动类型提升。
就是把一个取值范围小的数据或者变量,赋值给另一个取值范围大的变量。此时不需要我们额外写代码单独实现,是程序自动帮我们完成的。
简单记忆:
就是小的给大的,可以直接给。
两种提升规则:
-
取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算。
-
byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算。