变量(variable)
变量的本质
- 变量本质 -> 可操作的存储空间空间
变量名 -> 通过名字操作空间
数据 -> 变化的量
变量的声明
double a; //8字节 空间
long b; //8字节 空间
int c; //4字节 空间
编写TestVariable.java文件
public class TestVariable {
int a=3; //成员变量
ststic int b=4; //静态变量
public static void main (String[] arg) {
//局部变量
int age = 18;
int b; //只是声明了变量b,没有进行初始化
b = 0; //使用之前必须初始化
int x=0, y=0, z=1; //一行可以声明多个变量
System.out.println(age);
System.out.println(b);
System.out.println(z);
}
}
得出运行结果
E:\mycode>javac TestVariable.java
E:\mycode>java TestVariable
18
0
1
变量的分类和作用域
变量有三种类型: 局部变量, 成员变量(实例变量), 静态变量(类变量)
类型 | 声明位置 | 从属于 | 作用域 |
---|---|---|---|
局部变量 | 方法或语句块内部 | 方法/语句块 | 声明位置开始,直到方法或语句块执行完毕局部变量消失 |
成员变量 | 类内部, 方法外部 | 对象 | 对象创建,成员变量也跟着创建; 对象消失,成员变量也跟着消失 |
静态变量 | 类内部, static修饰 | 类 | 类被加载,静态变量就有效; 类被卸载,静态变量就消失 |
局部变量(local variable)
public void test() {
int i;
int j = i+5; // 编译出错,变量i还未被初始化
}
public void test() {
int i;
i=10;
int j = i+5; // 编译正确
}
成员变量(member variable)
数据类型 | 初始值 |
---|---|
int | 0 |
double | 0.0 |
char | "\u0000" |
boolean | false |
public class Test(){
int i;
}
静态变量(Static variable)
使用static定义, 如果不自行初始化,则会自动初始化成该类型的默认值
常量(constant)
用关键词final来定义一个常量,常量一旦被初始化后不能再更改
声明格式:
final type varName = value;
代码演示
public class TestConstant {
public static void main(String[] args) {
final double PI = 3.14;
//PI = 3.1415; // 报错,无法为常量再次分配值
final int MAX_SPEED = 120; //常量命名全用大写字母,单词之间下划线分隔开
double r = 4;
double area = PI*r*r;
double circle = 2*PI*r;
System.out.println("面积是" + area); //面积是50.24
System.out.println("周长是" + circle); //周长是25.12
}
}
一般将1 2 3 'a' 'b' true false "helloworld"等称为字符常量;
使用fina修饰的PI等称为符号常量
总结
1. 所有变量, 方法, 类名 : 见名知义
2. 类成员变量: 首字母小写和驼峰原则: monthSaraly
3. 局部变量: 首字母小写和驼峰原则
4. 常量: 大写字母和下划线: MAX_VALUE
5. 类名: 首字母大写和驼峰原则: Food, GoodFood
6. 方法名: 首字母小写和驼峰原则: runRun()
数据类型
整型
类型 | 占用存储空间 |
---|---|
byte | 1字节 |
short | 2字节 |
int | 4字节 |
long | 8字节 |
整型常量的表现形式
十进制整数,如1,99,0,-40
八进制整数,要求以0开头,如:026
十六进制整数,要求以0x开头,如0x15
二进制数,要求以0b开头,如0b1110111
public class TestInt {
public static void main (String[] args) {
int a = 100; //100 十进制
int b = 015; //13 八进制
int c = 0xff; //255 十六进制
int d = 0b11011101; //221 二进制
byte e = 50;
short f = 300;
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
int salary = 30000; //
//int yearsalary = 3000000000; //超过int范围
long yearsalary = 3000000000L; //末尾加L,把整型常量定义为long类型
System.out.println("你的年薪是"+yearsalary);
}
}
浮点型
类型 | 占用存储空间 |
float | 4字节 |
double | 8字节 |
float被称为单精度类型,尾数精确到7位有效数字
doule被称为双精度类型,精度约是float类型的两倍
浮点型常量的表现形式
十进制数形式, 如3.14, 657.0, 0.315
科学计数法形式,如3.14e0
浮点型存在舍入误差,数字不能精确表示,不要用于比较
浮点常量默认类型double,改成float可在后面加F
public class TestFloatNumber {
public static void main(String[] args) {
double d1 = 3.14;
double d2 = 3.14E2; //科学计数法 314.0
float f1 = 1.65F; //浮点常量的默认类型是double类型,改float需要在后面加F
System.out.println(d2);
//浮点数不精确,尽量不要直接比较
float f2 = 0.1F;
double d3 = 1.0/10;
System.out.println(f2==d3); //false 一个=是赋值,两个==是比较
float f4 = 23456765432L;
float f5 = f4+1;
System.out.println(f4==f5); //true
}
}
字符型
类型 | 所占存储空间 |
char | 4字节 |
之后所学的String类, 本质是char字符组成的数组
转义字符
转义符 | 含义 | Unicode值 |
\b | 退格(backspace) | \u0008 |
\n | 换行 | \u000a |
\r | 回车 | \u000d |
\t | 制表符(tab) | \u0009 |
\" | 双引号 | \u0022 |
\' | 单引号 | \u0027 |
\\ | 反斜杠 | \u005c |
public class TestChar{
public static void main(String[] args) {
char c1 = 'a';
char c2 = '中';
char c3 = '\u0061';
System.out.println(c1); //a
System.out.println(c2); //中
System.out.println(c3); //a
//java中字符串不是基本数据类型,而是一个类
String str = "我爱中国";
System.out.println(str); //我爱中国
//转义字符
System.out.println("a\nb\nc\nd\ne\nf\ng\\");
System.out.println("a\tb\tc\td\te\tf\tg");
}
}
布尔型
类型 | 所占存储空间 |
boolean | 1个字节或4个字节 |
boolean类型有两个数值,true和false, 不可以使用0或非0的整数替代
public class TestBoolean{
public static void main(String[] args) {
boolean b1 = true;
boolean b2 = false;
if(b1){
System.out.println("b1是true!"); //输出
}else{
System.out.println("b1是false!");
}
if(b2=true){ //赋值了 应该用==进行比较
System.out.println("b2是true!"); //输出
}else{
System.out.println("b2是false!");
}
}
}