变量是存储数据的一块内存区域,我们知道程序是给用户使用的,有些时候用户输入的数据是动态的,我们无法在程序里预知用户输入的具体数据,这种情况下我们就需要定义一个变量,来知道和处理这个变量做什么处理和用途,然后我们就可以通过这个变量做相应操作了。
变量有两种类型,分别为基本类型和引用类型。基本类型又称内置数据类型。下面我们分别介绍各个数据类型。
类型的定义和初始化
java 数据类型的定义 可以分为三个部分,变量的类型,变量的名称,变量的初始化值(这个可以在后面定义),下面我们在编辑器里展示
public static void main(String[] args) { //变量类型 变量名称 等于运算符 初始化值 java语法里每结束一行代码需要以分号结束 int a = 0 ; //打印变量a System.out.println("变量a的值是:"+a); //定义一个未初始化的值 int b; // 条件语句,以后介绍改语法 if(a == 0){ // 对b变量赋值 b = 1; } else{ b = 2; } //打印变量b System.out.println("变量b的值是:"+b); }
运行结果
![d01751dbbc8b50850e9e59394facb2b1.png](https://img-blog.csdnimg.cn/img_convert/d01751dbbc8b50850e9e59394facb2b1.png)
变量显示
基本数据类型
int
int就是数学中的整数,举个例子就像我们买可乐需要花费3元钱整,这个价格没有角和分。所以这个3元钱就是整数。
int的范围是-2,147,483,648(-2^31) - 2,147,483,647(2^31 - 1),默认值为0。我们发现int在内存占32位,运行结果也说明了这点。
当定义大于最大值和最小值的数时,编辑器会提示错误,编译也编译不过去。其他类型也是这样的。
public static void main(String[] args) { int a = 0; int b = 1; int c = -1; System.out.println("变量a的值为:"+a+",变量b的值为:"+b+",变量c的值为:"+c); //Integer是int包装类,Integer类包含一些其他属性,这个以后介绍 System.out.println("整型占用内存位数:"+Integer.SIZE); System.out.println("整型最大值:"+Integer.MAX_VALUE); System.out.println("整型最小值:"+Integer.MIN_VALUE); }
运行结果
![e6b98d215f5ba051e505e1037640d70e.png](https://img-blog.csdnimg.cn/img_convert/e6b98d215f5ba051e505e1037640d70e.png)
short
有的时候我们觉得int表示的数值太大了,我们有点浪费内存了。比如我们表示一个人的年份,最大4位数就可以表示。这时候我们就可以使用short类型来表示。
short的范围是 -32768(-2^15) - 32767(2^15 - 1),默认值为0。我们发现short在内存中占16位,运行结果也说明了这点。
public static void main(String[] args) { short a = 1; short b = -1; System.out.println("变量a的值为:"+a+",变量b的值为:"+b); //Short是short包装类,Short类包含一些其他属性,这个以后介绍 System.out.println("Short占用内存位数:"+Short.SIZE); System.out.println("Short最大值:"+Short.MAX_VALUE); System.out.println("Short最小值:"+Short.MIN_VALUE); }
运行结果
![971fe868b62313ad218e470ce62dd8d3.png](https://img-blog.csdnimg.cn/img_convert/971fe868b62313ad218e470ce62dd8d3.png)
long
当今世界人口72亿6231万,我们的一个业务场景需要显示这个数字时,我们发现使用int就不行了,会报错。这说明int表示不了那么大。这个时候我们就需要使用long型了。
long的范围-9,223,372,036,854,775,808(-2^63) - 9,223,372,036,854,775,807(2^63 -1),默认是0L。long在内存中占64位。这个已经能表示大部分整数场景了。
当我们初始化值大于int最大值时后面需要加上 L;
public static void main(String[] args) { long a = 2147483647; //这个不加L就会提示错误 long b = 2147483648L; System.out.println("变量a的值为:"+a+",变量b的值为:"+b); System.out.println("long占用内存位数:"+Long.SIZE); System.out.println("long最大值:"+Long.MAX_VALUE); System.out.println("long最小值:"+Long.MIN_VALUE); }
运行结果
![7d0fea48cc5676fcc1f3aedd09e01f96.png](https://img-blog.csdnimg.cn/img_convert/7d0fea48cc5676fcc1f3aedd09e01f96.png)
float
上一段中买可乐花费了3元整,但是我们还想买辣条,但是辣条的价格是5.67,这时候我们怎么表示那,这就需要用到了float。
float 数据类型是单精度、32位、符合IEEE 754标准的浮点数。float后面必须加上 f, 不区分大小写;
public static void main(String[] args) { float a = 0.1F; //这个不加F就会提示错误,不区分大小写 float b = -0.1f; System.out.println("变量a的值为:"+a+",变量b的值为:"+b); System.out.println("float占用内存位数:"+Float.SIZE); System.out.println("float最大值:"+Float.MAX_VALUE); System.out.println("float最小值:"+Float.MIN_VALUE); }
运行结果
![d125567db99b7cd4a58fb46f0b7a0ecf.png](https://img-blog.csdnimg.cn/img_convert/d125567db99b7cd4a58fb46f0b7a0ecf.png)
double
当我们计算的数字要求精度比较高时,我们可能需要用到double型。double是双精度、64位、符合IEEE 754标准的浮点数。double后面必须加上 d, 不区分大小写。
public static void main(String[] args) { double a = 0.1d; //这个不加F就会提示错误,不区分大小写 double b = -0.1D; System.out.println("变量a的值为:"+a+",变量b的值为:"+b); System.out.println("double占用内存位数:"+Double.SIZE); System.out.println("float最大值:"+Float.MAX_VALUE); System.out.println("double最大值:"+Double.MAX_VALUE); System.out.println("double最小值:"+Double.MIN_VALUE); }
运行结果
![37893a4c69265d4033c257edcdb179b4.png](https://img-blog.csdnimg.cn/img_convert/37893a4c69265d4033c257edcdb179b4.png)
boolean
当我们只表示一个变量只有对或者错这两种场景时,我们使用boolean型即可,boolean只有true和false两个值。true表示真(对),false表示假(错)。
public static void main(String[] args) { boolean a = true; boolean b = false; if(a){ System.out.println("a的值是真"); }else{ System.out.println("a的值是假"); } if(b){ System.out.println("b的值是真"); }else{ System.out.println("b的值是假"); } }
运行结果
![624d1d9debed17cf32af9f68e7b91ffd.png](https://img-blog.csdnimg.cn/img_convert/624d1d9debed17cf32af9f68e7b91ffd.png)
char
char类型是一个单一的 16 位 Unicode 字符。可以查看ASCII码表,查看常用的字符。
char也可以用数字表示,范围为0 - 65535 。char也可以存储任意字符。
public static void main(String[] args) { char a = 65; //赋予字符时,必须使用单引号表示时字符 //双引号表示字符串 char b = 'A'; System.out.println("变量a的值为:"+a+",变量b的值为:"+b); System.out.println("char占用内存位数:"+Character.SIZE); System.out.println("char最大值:"+Character.MAX_VALUE); System.out.println("char最小值:"+Character.MIN_VALUE); }
运行结果
![071f0b10724a275cad2427d591cb1659.png](https://img-blog.csdnimg.cn/img_convert/071f0b10724a275cad2427d591cb1659.png)
byte
byte是最基础的数据类型,以上的类型都可以用byte或者byte数组表示。byte长度是8位、有符号的,以二进制补码表示的整数。
范围为-128(-2^7) - 127(2^7-1),默认值为0。
public static void main(String[] args) { byte a = -1; byte b = 127; byte[] c = "这是一个字符串".getBytes(); System.out.println("变量a的值为:"+a+",变量b的值为:"+b); System.out.println("数组c的值为:"+c); System.out.println("byte占用内存位数:"+Byte.SIZE); System.out.println("byte最大值:"+Byte.MAX_VALUE); System.out.println("byte最小值:"+Byte.MIN_VALUE); }
运行结果
![9cb1220aa160065d56c53c59ef2d13b9.png](https://img-blog.csdnimg.cn/img_convert/9cb1220aa160065d56c53c59ef2d13b9.png)