一、介绍
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变(immutable)的。在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象(如在Java和Visual Basic中);但另外一些语言可能使用其它概念(如C的对象)来指称这种抽象,而不严格地定义“变量”的准确外延。
二、内容
1、变量
1.1、变量概念
在程序的运行过程中可以改变的量叫变量,变量是用来存储数值的内存区域。
1.2、作用
变量用来记录数值。使用变量进行代数计算,则该变量中数值可以随着程序的逻辑计算而改变。当计算全部结束后,再将数值拿出展示给用户。
1.3、变量的使用格式
日常变量的使用分为四个部分
变量定义格式:数据类型 变量名 = 变量值;
如:int a = 100;
变量类型
每一个变量均必须指定其变量类型。Java是强类型语言,在Java中不同的数据类型在内存中的存储方式是不尽相同的。所以必须在存储内容之前指定数据类型。
变量名
即使用标识符为变量起一个名字,之后在计算时,使用该名字即可参与计算。这个名字就代表了存储数值的空间。
“=”号
这里的“=”号是运算符的一种,即=代表赋值运算,并非数学意义上的相等。
变量值
即真正变量存储的数值,需要与变量的数据类型一致。
/*
变量:存储数值的一块内存区域
变量的定义格式:
数据类型变量名 = 数据值;
*/
public class Demo01Variable{
public static void main(String[] args){
//定义一个存储整数的变量
int myVar = 10;
//打印变量的值
System.out.println(myVar);//10
//改变变量的值
myVar = 20;
//打印变量的值
System.out.println(myVar);//20
}
}
1.4、日常变量使用的注意事项
(1)可以同时定义多个变量
(2)变量定义后可以不赋值,使用时再赋值。不赋值不能使用。
(3)变量使用时有作用域的限制。
/*
变量使用的注意事项:
可以同时定义多个变量
变量定义后可以不赋值,使用时再赋值。不赋值不能使用。
变量使用时有作用域的限制
*/
public class Demo02Variable{
public static void main(String[] args){
//可以同时定义多个变量
int a=5,b=10;
/*
int a = 5;
int b = 10;
*/
System.out.println(a);//5
System.out.println(b);//10
//变量定义后可以不赋值,使用时再赋值。不赋值不能使用。
int c;
//System.out.println(c);//错误: 可能尚未初始化变量c
//System.out.println(c=20);
c = 20;
System.out.println(c);
}
}
2、数据类型
Java是一种强类型语言,对不同数据结构进行了严格的区分,对每一种数据类型都做了明确定义,也同时规定了每一种数据类型的变量在内存中占用空间的大小。
2.1、字节
字节是计算机当中存储数据的基本单位,每种数据类型都会占用一定的空间。
比特位
比特位(bit)是计算机当中最小的存储单位,由于机器码只识别1与0,所以每一位的1与0均为一个比特位
字节组成规则
在计算机当中如果使用bit来计算数据过于冗余复杂,所以以8个比特位组成一个新的单位——字节,作为数据存储的基本单位
常见的数据存储单位之间的换算
1B(字节) = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
2.2、数据类型分类
数据类型分为基本类型与引用类型,引用类型包括:数组、类、接口,在面向对象后期会全部介绍完毕。这里着重介绍基本数据类型。
整数型(精确)
int 占用4个字节 (整数的默认值)
byte 占用1个字节
short 占用2个字节
long 占用8个字节
long类型在赋值时,需要在值后加入字母l(L)区分其是一个长整型
如 int i = 100; short s = 66; long l = 100L;
浮点型(小数型,非精确,为近似值)
double 占用8个字节 (小数的默认值)
float 占用4个字节
float类型在赋值时,需要在值后加入字母f(F)区分其是一个浮点型
如 double d = 100.0; double d2 = 10.1; float f = 100.0F;
字符型
char 占用2个字节,必须使用’’包裹,且不能为空。
如 char c = ‘a’; char c2 = ‘中’; char c3 = ‘ (空格)’; char c4 = ‘$’
char c1='\\'; char c5='\'';
布尔型
布尔值是我们比较陌生的类型,它代表一些条件成立与不成立的判断。只有两个值true与false。
boolean 占用1个字节
如:boolean b = true; boolean b2 = false;
/*
数据类型:
整数:(精确)
byte:占用1个字节
short:占用2个字节
int:占用4个字节(默认)
long:占用8个字节,使用时必须在末尾加上一个小写字母l或者大写字母L
小数:(不精确,近似值)
float:占用4个字节,使用时必须在末尾加上一个小写字母f或者大写字母F
double:占用8个字节(默认)
布尔:
boolean:(true,false)占用1个字节
字符:
char:占用2个字节
注意事项:
字符不能为空
字符实际存储的是一个数值
想把具有特殊含义',转换成普通的字符,用转义字符\'
想把普通字符t,变成一个具有特殊含义的字符,用转义字符\t
*/
public class Demo03Variable{
public static void main(String[] args){
//整数
byte b = 100;
System.out.println(b);
short s = 10000;
System.out.println(s);
int i = 1600000000;
System.out.println(i);
long l = 6000000000L;
System.out.println(l);
//小数
double d = 3.14;
System.out.println(d);
float f = 2.6f;
System.out.println(f);
//小数是一个不精确的数
System.out.println(f-2);//0.5999999
//布尔
boolean b1 = true;
System.out.println(b1);
boolean b2 = false;
System.out.println(b2);
//字符
char c = 'a';
System.out.println(c);
//转义字符
char c1 = '\'';
System.out.println(c1);
char c2 = '\t';
System.out.println(c2+"Hello");
System.out.println('\\');
//字符实际存储的是一个数值
System.out.println(c+1);
}
}
2.3、数据类型转换
数字类型可以有数据类型上的转换,即将一种类型的值赋值给另外一种类型的变量。但要依据数据范围,符合一定规则:
各种数据类型按照数据范围从小到大:
byte -> short -> int -> long -> float -> double
2.3.1、自动类型转换
范围小的数据类型值(如int),可以自动转换为范围大的数据类型值(如double)
范围大的数据类型 变量 = 范围小的数据类型值;
如:
double d = 1000;
或
int i = 100;
double d2 = i;
2.3.2、强制类型转换
范围大的数据类型值(如double),不可以自动转换为范围小的数据类型值(如int),但是可以强制转换
范围小的数据类型 变量 = (范围小的数据类型) 范围大的数据类型值;
如:
int i = (int)6.718; //i的值为6
或
double d = 3.14;
int i2 = (int)d; //i2的值为3
/*
数字类型转换:就是数值转换,包括整数,小数,字符
自动类型转换:小-->大
byte < short(char)< int < long < float < double
格式:范围大的数据类型 变量名 = 范围小的数据类型的值;
强制类型转换:大-->小
格式:范围小的数据类型 变量名 = (范围小的数据类型)范围大的数据类型的值;
*/
public class Demo04Variable{
public static void main(String[] args){
//自动类型转换 int --> double
int i = 100;
double d = i;
System.out.println(i);
System.out.println(d);
//强制类型转换
double d2 = 3.14;
//int i2 = d2;//错误: 可能损失精度
int i2 = (int)d2;
System.out.println(i2);
System.out.println(d2);
}
}