理解变量本质是什么,在开发中有什么用?变量三要素是什么?怎么声明变量?怎么给变量赋值?变量是如何分类的?变量的作用域?
变量:变量是内存当中存储数据最基本的单元
什么是变量?
变量其实就是内存当中存储数据的最基本的单元。
变量就是一个存储数据的盒子。
在java语言当中任何数据都是有数据类型的,其中整数型是:int
没有为什么,java中规定的,整数型就是:int
当然,在java中除了数据类型int之外,还有其它的类型,例如带小数的:double等。。。
数据类型有什么用呢?
记住:不同的数据类型,在内存中分配的空间大小不同。
也就是说,Java虚拟机到底给这个数据分配多大的空间,主要还是看这个变量的数据类型。
根据不同的类型,分配不同大小的空间。
对于int这种整数类型,JVM会自动给int分配4个字节大小的空间。
1个字节=8个比特位
1个比特位就是一个1或0. 注意:比特位是二进制位。
int是占用多少个二进制位?1个int占有32个二进制位(bit位)
对于一个变量来说,包括三要素:
变量的数据类型
变量的名字
变量中保存的值
类型+名字+值
类型决定空间的大小。
起个名字是为了以后方便访问。(以后在程序中访问这个数据是通过名称来访问的。)
值是变量保存的数据。
变量怎么声明/定义,语法格式是什么?
数据类型 变量名;
例如:
int nianLing;
在java语言中有一个规定,变量必须先声明,再赋值才能访问。(没有值相当于这个空间没有开辟。)
在java语言中怎么给一个变量赋值呢,语法格式是什么?
记住:使用一个运算符,叫做“=”,这个运算符被称为赋值运算符。
赋值运算符“=”的运算特点是:等号右边先执行,执行完之后赋值给左边的变量。
变量可以声明的时候赋值吗?可以的。
public class VarTest02{
/**
* 这是一个程序的入口
* @param args是main方法的参数
*/
public static void main(String[] args){
// 定义一个int类型的变量,起名nianLing,该变量用来存储人的年龄。
int nianLing;
// 变量声明之后,没有手动赋值,可以直接访问吗?
// 编译报错:错误: 可能尚未初始化变量nianLing
//System.out.println(nianLing);
// 给变量赋值
nianLing = 45;
System.out.println(nianLing); // 这是访问变量。
System.out.println("nianLing"); // 这是访问字符串。
// 变量:可以变化的量。
// 重新赋值
nianLing = 80;
System.out.println(nianLing);
// 再次重新赋值
nianLing = 90;
System.out.println(nianLing);
// 体重80kg
int tiZhong = 80;
System.out.println(tiZhong);
}
}
变量的作用域?
/*
变量的作用域?
1、什么是作用域?
变量的有效范围。
2、关于变量的作用域,大家可以记住一句话:
出了大括号就不认识了。(死记这句话。)
3、java中有一个很重要的原则:
就近原则。(不仅java中是这样,其它编程语言都有这个原则。)
哪个离我近,就访问哪个。
*/
public class VarTest08{
// 成员变量
int i = 10000;
public static void main(String[] args){
// 局部变量
int i = 100; // 这个i的有效范围是main方法。
System.out.println(i); // 这个i是多少?
// 同一个域当中,这是不允许的。
//int i = 90;
// 考核一下:以下编写for循环你看不懂,没关系,后面会将。
for(int n = 0; n < 10; n++){ // 这里声明的n变量只属于for域。for结束后n释放没了。
// 这里没有编写代码。
}
// for循环执行结束之后,在这里访问n变量可以吗?
//System.out.println(n); //错误: 找不到符号
int k; // 属于main域。
for(k = 0; k < 10; k++){
}
// 能否继续访问k呢?
System.out.println(k);
}
// 这个方法怎么定义先不用管,后面会学习。
public static void x(){
// 在这个位置上能访问i吗?
// 错误: 找不到符号
// System.out.println(i); // i是无法访问的。
// 可以定义一个变量起名i吗?
// 这个i的有效范围是x方法。
// 局部变量
int i = 200; // 所以这个i和main方法中的i不在同一个域当中。不冲突。
}
}