一、常量与变量
不同数据类型表示的值可以分为常量与变量
1、常量:不能修改的值
整数常量
- 十进制 正常表示 eg.4 5 6
- 二进制 0b或者0B开头 eg.0b1001
- 八进制 0开头 0777
- 十六进制 0x开头的 0xfff
小数类型 1.1
布尔类型 true/false
字符类型 char 只能是一个字符,并且也不能为空
‘a’ √ ‘101’ × “a” × ‘’ ×
字符串 “大家好才是真的好” 字符串可以为空
2、变量:可以随着程序的运行而发生改变的量
程序是按线性顺序,自上而下运行的,但是流程控制语句可以改变运行过程中的顺序,但是结果还是要从程序的开始运行到程序的结束。
1.定义变量
2.给变量赋值
3.定义的同时并赋值(建议使用)
使用流程:
- 定义==>数据类型 变量名
- 赋值==>变量名 = 值;
- 使用==>输出,计算,判断。。。
注意:
- 变量没有赋值是不可以使用的
- 变量的作用域问题
- 变量的重复定义问题
变量可以重复定义,但需要变量在同一作用域内,变量在同一作用域内重复定义,程序会直接报错。
一般默认变量不可以重复定义。
二、转义字符
一些本身就赋予特殊意义的字符-->转义字符
- 输出双引号 \”
- 输出回车 \n
- 输出反斜杠 \
- 输出制表符 \t
三、变量的分类
1)全局变量(独立于方法之外的变量,不过没有 static 修饰)
- 全局变量声明在一个类中,但在方法、构造方法和语句块之外;
- 当一个对象被实例化之后,每个实例变量的值就跟着确定;
- 全局变量在对象创建的时候创建,在对象被销毁的时候销毁;
- 全局变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取全局变量信息;
- 全局变量可以声明在使用前或者使用后;
- 访问修饰符可以修饰全局变量;
- 全局变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把全局变量设为私有。通过使用访问修饰符可以使全局变量对子类可见;
- 全局变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
- 全局变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。
2) 局部变量(类的方法中的变量)
- 局部变量声明在方法、构造方法或者语句块中;
- 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
- 访问修饰符不能用于局部变量;
- 局部变量只在声明它的方法、构造方法或者语句块中可见;
- 局部变量是在栈上分配的。
- 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
3) 类变量(独立于方法之外的变量,用 static 修饰)
- 类变量也称为静态变量,在类中以 static 关键字声明,但必须在方法之外。
- 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
- 静态变量除了被声明为常量外很少使用,静态变量是指声明为 public/private,final 和 static 类型的变量。静态变量初始化后不可改变。
- 静态变量储存在静态存储区。经常被声明为常量,很少单独使用 static 声明变量。
- 静态变量在第一次被访问时创建,在程序结束时销毁。
- 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为 public 类型。
- 默认值和实例变量相似。数值型变量默认值是 0,布尔型默认值是 false,引用类型默认值是 null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
- 静态变量可以通过:ClassName.VariableName的方式访问。
- 类变量被声明为 public static final 类型时,类变量名称一般建议使用大写字母。如果静态变量不是 public 和 final 类型,其命名方式与实例变量以及局部变量的命名方式一致。
四、数据类型
1、基本数据类型
四类八种基本数据类型
整型
1、byte 1个字节
1个字节表示256个数
-128(-2^7)~127
2、short 短整型 1short = 2byte = 16bit 2个字节
-32768~32767
3、int 整型 4个字节
4、long 长整型 8个字节
浮点型
- float 单精度浮点数
- double 双精度浮点数
字符型
char 字符
布尔型
boolean 布尔型 true/false
补充点:
- 声明变量的时候必须要指明数据类型,不同的数据类型表示的数据范围是不同
- 对常量来说整数的默认值的类型是int,如果超出了整数int的范围,需要在这个数后边添加l或者L,用长整型来表示,一般规范是大写L
- 对于常量来说小数的默认值类型是doble,如果定义成float类型,需要在末尾加上f
- 字符型只能含有一个字符
- 字符串不是基本类型,是引用类型
2、引用数据类型
字符串,数组,类,接口...
算术运算符
+:
- 正号 +3 结果:3
- 加法 1+2 结果:3
- 字符串拼接 “中”+”央” 结果:中央
-:
只做负号和减号,与以上加法类似
*:
做乘法运算 2*3 结果:6
/:
与除法类似
注意:
5/2 = ? 等于2 /两边的值为int整型时,取整数部分,舍弃余数。
当其中任意一边为浮点型时,按正常的运算规则相除。(涉及数据类型转换)
五、数据类型的转换
基本数据类型与包装类之间的转换
基本数据类型转包装类
public class Test{
public static void main(String args[]){
Integer x =Integer.valueOf(9);
Double c = Double.valueOf(5);
Float a = Float.valueOf("80");
Integer b = Integer.valueOf("444",16); // 使用 16 进制
System.out.println(x);
System.out.println(c);
System.out.println(a);
System.out.println(b);
}
}
包装类转基本数据类型
public class Test{
public static void main(String args[]){
Integer x = 5;
// 返回 byte 原生数据类型
System.out.println( x.byteValue() );
// 返回 double 原生数据类型
System.out.println(x.doubleValue());
// 返回 long 原生数据类型
System.out.println( x.longValue() );
}
}
自动装箱与自动拆箱
1 //自动装箱
2 Integer total = 99;
3
4 //自动拆箱
5 int totalprim = total;
Integer total = 99;
执行上面那句代码的时候,系统为我们执行了:
Integer total = Integer.valueOf(99);int totalprim = total;
执行上面那句代码的时候,系统为我们执行了:
int totalprim = total.intValue();
包装类的作用:便于基本数据类型和String的转换