Java第三章 变量
文章目录
1. 字面量
-
关于程序当中的数据 :
开发软件是为了解决现实世界中的问题, 而现实世界中, 有很多问题都是使用数据进行描述
的, 所以软件执行过程中最主要就是对数据的处理.
软件在处理数据之前需要能够表示数据, 在Java代码中表示数据, 有一个概念叫做字面量,
也就是数据.
10
1.23
true
‘a’
"abc"等 都叫做字面量 -
数据被分为:整数型、浮点型、字符型、布尔型、字符串型等。
整数型(数字):1、2、100、-2, -10
浮点型(数字,带小数):1.0、2.0、3.14
字符型(文字,单个字符):‘a’
字符串型 ( 一个字符串 ) : “abc”
布尔型(真假):true ( 真 )、false ( 假 ), 布尔型只有这两个 -
如何区分字符型和字符串型 :
单引号引起的 : 字符型
双引号引起的 : 字符串型
public class VarTest{
public static void main(String[] args){
System.out.println(100); // 100
System.out.println(1.23); // 1.23
System.out.println(true); // true
System.out.println(false); // false
System.out.println('a'); // a
System.out.println("abc"); // abc
System.out.println("中"); // 中
System.out.println("国"); // 国
//定义/声明 一个变量, 起名i
int i = 10;
System.out.println(i);
// 以下程序访问的是字符i和字符串i, 以下的两个i和i变量没有任何关系.
System.out.println('i');
System.out.println("i");
}
}
2. 变量
变量的引入
-
10 + 20 = 30
在内存中找一块空间存储10, 再找一块空间存储20, CPU负责"+"运算, 算出来的结果30再存放到一块空间中. -
分析一下, 如果只有字面量, 没有变量机制的话, 有什么问题?
// 以下虽然都是10, 但是这三个10占用三块不同的内存空间.
System.out.println(10);
System.out.println(10);
System.out.println(10); // 只有字面量的话, 是远远不够的, 因为字面量内存是无法重复利用的.
int i = 10;
// 以下访问的是同一块内存空间. ( 这样使用变量后, 内存空间就得到了复用 )
System.out.println(i);
System.out.println(i);
变量的理解
-
变量的理解 :
内存当中存储数据的最基本的单元. -
在java语言中任何数据都是有数据类型的
整数型 : int
浮点型 : double
布尔型 : boolean -
数据类型的作用 :
不同的数据类型在内存中分配的空间大小不同.
也就是说JVM到底给这个数据分配多大的空间, 主要还是看这个变量的数据类型. -
对于int, JVM会自动给它分配4个字节 ( byte ) 的空间.
1byte = 8bit ( 比特位 )
1bit就是一个1或0 ( 二进制位 ) -
那么int占用了多少个bit呢?
4 * 8 = 32bit -
变量的三要素 :
变量的数据类型
变量的名字
变量中保存的值int i = 10;
类型 名字 值 -
变量命名规范 :
首字母小写, 后面每个单词首字母大写, 遵循驼峰原则, 见名知意.
变量的声明/定义
-
变量的声明/定义 :
数据类型 + 变量名
int nianLing; -
在java中有一个规定, 变量必须先声明, 再赋值才能访问. ( 没有值相当于这个空间没有开辟 )
-
变量赋值 :
nianLing = 20;
// 赋值运算符 : “=”, 特点 : 等号右边先执行, 执行完后有赋值给左边的变量.
在同一个域中变量不能重复声明
public class VarTest01{
public static void main(String[] args){
// 声明变量, 并赋值
int nianLing = 10;
System.out.println(nianLing);
// 重新赋值
nianLing = 20;
System.out.println(nianLing);
int nianLing = 30;
System.out.println(nianLing);
// 结论 : 在同一个作用域中变量可以重新赋值, 但是不能重复声明
}
}
一行上可以同时声明 多个变量
变量的分类
-
根据出现的位置进行划分 :
局部变量 ( 在方法体中 )
成员变量 ( 在方法体外, 类体内 ) -
注意 :
局部变量只在方法体中有效, 方法体执行结束, 该变量的内存就释放了.
public class VarTest03{
// 成员变量
int i = 10;
public static void main(String[] args){
// 局部变量
int j = 20; // main方法结束后j的内存将释放
}
}
变量的作用域
- 作用域 : 变量的有效范围
- 出了大括号就不认识了
- 不同的方法中的变量可以重名
- 局部变量和成员变量可以重名, 重名时, 哪个离我近就访问哪个 ( 就近原则 ), 但是不建议重名.
public class VarTest04{
// 成员变量
int i = 100;
public static void main(String[] args){
// 局部变量
// int i = 10;
for (int j = 0; j < 10; j++){
}
// System.out.println(j); // 不能访问, 因为j属于for域, 只在for中有效
int k;
for (k = 0; k < 10; k++){
}
System.out.println(k); // 可以访问, 因为k属于main域
}
// 这个方法如何定义不用管, 后面会学
public static void x(){
// System.out.println(i); // i是无法访问的, 因为i出了main方法的大括号就失效了.
int i = 20; // 这个i的有效范围是x方法, 与main方法中的i不冲突.
}
}
变量的复制
数据类型补充
3. 章节练习
通过变量来描述学生的信息,学生信息包括:学号、姓名、性别、身高。其中学号采用整数,姓名采用字符串,性别采用字符型,身高采用浮点型.
具体的学生数据有两份,第一个学生信息是:学号 110,姓名张三,性别男,身高1.85 米。第二个学生信息是:学号 120,姓名李四,性别女,
身高 1.65 米。要求最终将学生的信息输出到控制台。输出结果如下图所示:
4. 习题答案
public class VarTest05{
public static void main(String[] args){
int ID1 = 110;
String name1 = "张三";
char sex1 = '男';
double height1 = 1.75;
System.out.println("学号: " + ID1);
System.out.println("姓名: " + name1);
System.out.println("性别: " + sex1);
System.out.println("体重: " + height1);
System.out.println("-----------");
int ID = 120;
String name = "李四";
char sex = '女';
double height = 1.65;
System.out.println("学号: " + ID);
System.out.println("姓名: " + name);
System.out.println("性别: " + sex);
System.out.println("体重: " + height);
}
}