第三章 变量

1 变量

VarTest01.java

1、关于程序当中的数据?
开发软件是为了解决现实世界中的问题。
而现实世界当中,有很多问题都是使用数据进行描述的。
所以软件执行过程中最主要就是对数据的处理。
软件在处理数据之前需要能够表示数据,在java代码中怎么去表示数据呢?在java中有这么一个概念:字面量。

注意:在java语言中“数据”被称为“字面量”
10
1.23
true
false
'a'
"abc"
以上这些都是数据,在程序中都被叫做“字面量”

“字面量”可以分为很多种类:
整数型字面量:1, 2, 3, 100, -100, -20...
浮点型字面量:1.3, 2.8, 9.18...
布尔型字面量:true, false
字符型字面量:'a', 'b', '中'...
字符串型字面量:"abc", "a", "b", "中国"...
其中字符型和字符串型都是描述了现实世界中的文字:
需要注意的是:
所有的字符型只能使用单引号括起来
所有的字符串型只能使用双引号括起来
字符型一定是单个字符才能称为“字符型”
在语法级别上怎么区分字符型和字符串类型?
主要看是双引号还是单引号
单引号的是字符型
双引号的是字符串型


public class VarTest01{

public static void main(String[] args){
System.out.println(100);
System.out.println(3.14);
System.out.println(true);
System.out.println(false);
System.out.println('a');
System.out.println('中');
System.out.println('国');
System.out.println("国");  // 这不属于字符型,因为使用双引用括起来了,所以它是字符串型
System.out.println("abc");

// 分析一下:如果只有字面量,没有变量机制的话,有什么问题?
// 10是一个整数型数据,在内存中占有一定的空间
// 10 + 20 = 30
// 在内存中找一块空间存储10,再找一块空间存储20,CPU负责“+”运算,算完之后的结果是30,那么这个30与会找一块空间存储起来
// 以下的三个10在内存当中是一块空间,还是三块不同的空间呢?
// 以下虽然都是10,但是这3个10占用三块不同的内存空间。
System.out.println(10);
System.out.println(10);
System.out.println(10);  // 只有“字面量”机制的话,是远远不够的,因为只有字面量内存是无法重复复用的。

// 定义/声明一个变量,起名i
int i = 10;
// 以下这4次访问的都是同一块内存空间。(这样全用变量之后,内存空间就得到了复用)
System.out.println(i);
System.out.println(i);
System.out.println(i);
System.out.println(i);

// 以下程序表示访问的是字符i以及字符串i,以下的这两个i和以上的i变量没有关系
System.out.println('i');
System.out.println("i");
}
}

VarTest02.java

什么是变量?
变量其实就是内存当中存储数据的最基本的单元。
变量就是一个存储数据的盒子

在java语言当中任何数据都是有类型的,其中整数型是:int

当然,在java中除了数据类型int之外,还有其它的类型,例如带小数的:double等...

数据类型有什么用呢?
记住:不同的数据类型,在内存中分配的空间大小不同。
也就是说,Java虚拟机到底给这个数据分配多大的空间,主要还是看这个变量的数据类型,根据不同的类型,分配不同的大小的空间。

对于int这种整数类型,JVM会自动给int分配4个字节大小的空间。

1个字节=8个比特位
1个比特位就是一个1或0,注意:比特位是二进制位。
1个int占用32个二进制位。

int i = 1;  实际上在内存中是这样表示的:
00000000 00000000 00000000 00000001
int i = 2;
00000000 00000000 00000000 00000010

对于一个变量来说,包括三个要素:
变量的数据类型
变量的名字
变量中保存的值
类型+名字+
类型决定空间的大小。
起个名字是为了以后方便访问。 (以后在程序中访问这个数据是通过名称来访问的)
值是变量保存的数据。

变量名属于标识符吗?
变量名命名规范中是怎么说的?
首字母小写,后面每个单词首字母大写,遵循驼峰命名方式,见名知意

变量怎么声明/定义,语法格式是什么?
数据类型 变量名;
例如:
int year;

在java语言中有一个规定,变量必须先声明,再赋值才能访问
在java语言中怎么给一个变量赋值呢,语法格式是什么?
记住:使用一个运算符,叫做“=”,这个运算符被称为赋值运算符
赋值运算符“=”的特点是:等号右边先执行,执行完之后赋值给左边的变量

变量可以声明的时候赋值吗?
可以


public class VarTest02{
public static void main(String[] args){

/**
* 变量一个程序的入口
* @param args是main方法的参数
*/

// 定义一个int类型的变量,起名为year,该变量用来存储人的年龄
int year;

// 变量声明之后,没有手动赋值,可以直接访问吗?
// 编译报错:错误:可能尚未初始化变量year
// System.out.println(year);

// 给变量赋值
year = 18;
System.out.println(year);

// 变量:可以变化的量。
// 重新赋值
year = 22;
System.out.println(year);

// 体重52kg
int weight = 52;
System.out.println(weight);

}
}

VarTest03.java

public class VarTest03{
public static void main(String[] args){

// 在这里可以访问k变量吗?
// 注意:方法体当中的代码遵循自上而下的顺序依次逐行执行
// 所以以下程序编译报错。
System.out.println(k);  // 错误:找不到符号
// 只有执行到这一行代码,k变量在内存中才会开辟空间。
int k = 10;
}
}

VarTest04.java


/*
重要的结论:在同一个域当中,变量名不能重名
变量可以重新赋值,但在同一个域当中,不能重复声明。
*/

public class VarTest04{
public static void main(String[] args){
// 声明一个整数型的变量起名year,存储值18
int year = 18;
System.out.println(year);

// 给变量重新赋值
year = 22;
System.out.println(year);

// 这个可以吗?不行
// 错误信息:错误:已在方法main(String[])中定义了变量year
/*
int year = 23;
System.out.println(year);
*/
}
}

VarTest05.java


// 编译报错:i变量重复定义了。(和类型没有关系)

public class VarTest05{
public static void main(String[] args){

// 整数型
int i = 100;
System.out.println(i);

// 浮点型(带小数的)
double i = 1.2;
System.out.println(i);

}
}

VarTest06.java


// 一行上可以同时声明多个变量吗?
// 可以

public class VarTest06{
public static void main(String[] args){

// 声明三个变量,都是int类型,起名a, b, c
// 通过测试得出结论是:a, b没有赋值,c赋值100
int a, b, c = 100;

// 变量必须先声明,再赋值,才能访问,a, b两个变量赋值了吗?
// 错误:可能尚未初始化变量a
System.out.println(a);
// 错误:可能尚未初始化变量b
System.out.println(b);
System.out.println(c);

// 给a赋值
a = 200;
// 给b赋值
b = 300;
System.out.println(a);
System.out.println(b);
}
}

VarTest07.java


/*
1、关于变量的一个分类
变量根据出现的位置进制划分:
在方法体当中声明的变量:局部变量。
在方法体之外,类体内声明的变量:成员变量

2、注意:局部变量只在方法体当中有效,方法体执行结束该变量的内存就释放了。
*/

public class VarTest07{

// 这里可以定义变量吗?可以的
int i = 100;

// 主方法
public static void mian(String[] args){
// 局部变量
int k = 100;  // main方法结束k内存空间释放。
}
}

VarTest08.java


/*
变量的作用域
1、什么是作用域?
变量的有效范围。
2、关于变量的作用域,大写可以记住一句话:
出了大括号就不认识了。
3、java中有一个很重要的原则:
就按原则。哪个离我近,就访问哪个。
*/

public class VarTest08{

// 成员变量
int i = 20000;

public static void mian(String[] args){
int i =  100;  // 这个i的有效范围是main方法

// 同一个域当中,这是不允许的。
// int i = 90;

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 viod x(){
// 在这个位置上能访问i吗?
// 错误:找不到符号
// 局部变量
System.out.println(i);  // 这个i的有效范围是x方法
}
}
 

 

posted @   路走  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示