一、变量
1.简介
java中变量根据作用范围的不同大致可以分为全局变量和局部变量。
全局变量 | 局部变量 |
---|---|
作用在一个类中 | 作用于在一个语句块或者方法中 |
例如:
public class Test03 {
// 这是一个全局变量,作用于Test03类
public static int age = 3;
public static void main(String[] args) {
//可以在方法体或者语句块中使用全局变量
System.out.println(age);
// 这是一个局部变量,作用于main函数体
int age1 = 33;
System.out.println(age1);
}
//局部变量不可以在作用范围外使用
}
2.创建变量
1).创建变量
声明变量:数据类型 变量名;
声明和初始化变量:数据类型 变量名 = 变量的初始值;
声明变量和变量赋值可以同时进行,也可以分开进行。
例如:
public class Test04 {
public static void main(String[] args) {
// 声明变量
//数据类型 变量名;
int number;
//声明和初始化变量:
//数据类型 变量名 = 变量的初始值;
int number1 = 11;
}
}
2).局部变量需要没有默认值,所以需要初始化后再使用。
例如:
public class Test05 {
public static void main(String[] args) {
// 如果只声明不初始化,就会报错
int number;
System.out.println(number);
//Exception:The local variable number may not have been initialized
// 局部变量号可能还没有初始化
}
}
3).全局变量则与之不同,存在默认值。即没有变量的初始值使用也不会报错。
例如:
public class Test05 {
public static int number;
public static double number1;
public static boolean bool;
public static void main(String[] args) {
System.out.println(number);//打印0
System.out.println(number1);//打印0.0
System.out.println(bool);//打印false
}
}
4).变量的使用是通过变量名来访问这块存储区域。并且被赋值的变量可以被重新赋值。
3.变量的命名规则
a.命名规则
1.变量名只能是由:字母、数字、下划线_、$组成;
2.变量名不可以以数字开头;
3.不能使用系统关键字或者保留关键字作为变量名。
b.命名规范
从语法层面来说,不是一定要遵守的,但是为了编码的规范上我们必须要遵循:
1).为了提高代码的可读性,一般采用驼峰命名法;
2).一般不使用汉语拼音进行命名。
需要注意的是:变量要先声明后使用;在同一作用域下不能重名。
二、常量
常量是指在程序运行中其值不能改变的量。
常见的常量有:
字面值常量 | 常量描述 |
---|---|
字符串常量 | 用双括号引起来的内容 |
整数常量 | 所有整数 |
小数常量 | 所有小数 |
字符常量 | 用单引号括起来的内容,只能是单个数字、字母或符号 |
布尔常量 | true 或者 false |
空常量 | null |
三、基本数据类型转换
1.自动类型转换
Java内部支持自动将数值进行类型提升——可以把一个类型取值范围较小的数值直接赋值给另外一个取值范围较大的数据类型变量时会自动进行类型转换。但是需要注意的是:boolean类型数据不可以与其他数据类型相互转换。
比如,可以将byte变量赋值给short变量,可以将short变量赋值给int变量,可以将int变量赋值给long变量。但是要实现自动类型的转换,需要满足:
1).两种类型兼容(比如:int——>long)
2).目标类型取值范围必须大于原类型范围
例如:
public class Test06 {
public static void main(String[] args) {
byte number1 = 11;
// 自动类型转换:只可以大范围往小范围转换
//byte--->int
int number2 = number1;
System.out.println(number1);
System.out.println(number2);
short number3 = 99;
// 自动类型转换:short--->int
int number4 = number3;
System.out.println(number4);
// 自动类型转换:char--->int,
char a = 'a';
int a1 = a;
//会输出与之对应ASCII码
System.out.println(a1);//输出97
}
}
2.强制类型转换
Java内部不支持将一个数值赋值给范围更小的数值范围类型,可以使用强制类型转换。但是:这样可能会导致溢出或者数据丢失甚至发生错误。boolean类型数据不参与强制转换。
例如:
public class Test06 {
public static void main(String[] args) {
int number5= 99;
byte number6 = (byte)number5;
System.out.println(number6);//输出99
int number7 = 999;
byte number8 = (byte)number7;
System.out.println(number8);//输出-25,发生错误
}
}