变量的本质
就是代表一个可操作的存储空间,空间的位置是确定的,但是里面放置什么值是不去确定的, 我们可以通过变量名来访问对应的存储空间,从而操作这个存储空间的值根据所需定义的变量的大小来定义,不同的类型分配的存储空间的大小时不一样的。
变量包含变量名,数据类型,作用域
变量只有申明并且初始化之后才能使用。
变量的类型
1.局部变量:
在方法或者语句块中定义的变量,只能在方法和语句块中使用
2.成员变量(实例变量):
方法外部,类的内部定义的变量,从属于对象,生命周期伴随对象的始终
是对象的成员,会自动的初始化
- int:0
- double:0.0
- char:\u0000
- boolean:false
3.静态变量:
使用static定义的,从属于类,生命周期伴随类的始终,从类的加载到卸载(生命周期最长)
整型变量
常量(constant):
命名全部用大写字母和下划线
- 整型变量:byte(1字节),short(2),int(4),long(8)(每个字节8位)整型数包含正数和负数。
- 进制的表示:0(八进制)0x(十六进制),0b(二进制)
- 整型常量默认是int型的,所以如果在定义long型的变量时,在长数的后面加上L或l表示的是一个long型的常量
public class virant {
int a;//成员变量
static int size;//静态变量
final String STR="name";
//STR="abcd";//常量不可再重新赋值
//常量在定义的时候进行初始化。
public static void main(String[] args) {
{
int age;//局部变量,从属于语句块
}
byte a=30;
//short b=30000000;//超过了short的长度
short b=30000;
int c=3000000;
//long d=30000000000;//常量默认的大小为int型,超过了整型常量的大小
long d=30000000000L;//在后面加上L或者l,将其转换成长整型。
}
}
浮点型变量和常量
- float:4字节 ,尾数精确到7位有效数字,float类型的数值有一个后缀F或者f,没有F/f的浮点数默认为double型,也可以显示的添加D/d来说明是double类型
- double:8字节
public class virant {
public static void main(String[] args) {
float a=3.14f;//不加f会出现错误,因为浮点常量默认的是double类型
double b=6.28;
double c=628E-2;
//浮点数是不精确的,一定不要用于比较
float f=0.1f;
double d=1.0/10;
System.out.println(f==d);//结果为false
float d1=423432423f;
float d2=d1+1;
if(d1==d2)
{
System.out.println("d1==d2");//输出结果为d1==d2;
}
else
{
System.out.println("d2!=d2");
}
}
}
如果需要对浮点类型的数据进行比较的话利用BigDecimal类进行比较
BigDecimal bd=BigDecimal.valueOf(1.0);
bd=bd.subtract(BigDecimal.valueOf(0.1));
bd=bd.subtract(BigDecimal.valueOf(0.1));
bd=bd.subtract(BigDecimal.valueOf(0.1));
bd=bd.subtract(BigDecimal.valueOf(0.1));
bd=bd.subtract(BigDecimal.valueOf(0.1));
System.out.println(bd);//0.5
System.out.println(1.0-0.1-0.1-0.1-0.1-0.1);//0.5000000000000001
BigDecimal bd2=BigDecimal.valueOf(0.1);
BigDecimal bd3=BigDecimal.valueOf(1.0/10);
System.out.println(bd2.equals(bd3));//true
字符型变量和常量
char:表示的是Unicode编码中的字符,可以表示的是所有语言的字符。(包括汉字)
Unicode具有0-65535之间的编码,通常从\u0000-\uFFFF之间的十六进制的值来表示(前缀u表示的是Unicode)
char c="\u0061";//a
转义字符
System.out.println(""+'a'+'b');//在前面加上空字符串,表示的是将两个字符进行链接
//如果不加空字符串的话,字符型将会自动转换为int型的数字进行相加
System.out.println(""+'a'+'\n'+'b');
System.out.println(""+'a'+'\t'+'b');
System.out.println(""+'a'+'\''+'b');
System.out.println(""+'a'+'\"'+'b');
boolean类型的变量和常量
值为true和false。(默认值为false)
love the future 发布了14 篇原创文章 · 获赞 3 · 访问量 852 私信 关注