目录
知识框架
🏀字面量(数据)
❤️关于程序当中的数据
⭐️软件在处理数据之前需要能够表示数据,在java代码中怎么去表示数据呢?在java中有这样的一个概念:字面量。
⭐️注意:在java语言中“数据”被称为“字面量”。
例如:10、1.23、true、false、’a’、”abc”以上这些都是数据,在程序中都被叫做“字面量”。
❤️字面量可以分为很多种类:
⭐️整数型字面量:1、2、 3、 100、 -100、 -20 ….
⭐️浮点型字面量:1.3、 1.2、 3.14…..
⭐️布尔型字面量:true、false,表示真和假;true表示真,false表示假
⭐️字符型字面量:’a’、’b’、’中’
⭐️字符串型字面量:”abc”、”a”、”b”、”中国”
❤️其中字符型和字符串型都是描述了现实世界中的文字:
⭐️需要注意的是:
所有的字符型只能使用单引号括起来;
所有的字符串型只能使用双引号括起来;
字符型一定是单个字符才能成为“字符型”,但是单个字符也可能是字符串;
字符串型既可以单个字符也可以是多个字符;
⭐️在语法级别上怎么区分字符型和字符串型?
主要看是双引号还是单引号。
单引号的一定是字符型;双引号的一定是字符串型!
❤️分析:如果只有字面量,没有变量机制的话,有什么问题?
⭐️例如:10 是一个整数型数据,在内存中占有一定的空间(CPU 内存 硬盘)要计算10 + 20 = 30,需要在内存中找一块空间存储10,再找一块空间存储20,CPU负责“+”运算,算完之后的结果是30,那么这个30也会在内存当中找一块临时的空间存储起来。
⭐️思考:以下的三个10在内存当中是一块空间,还是三块不同的空间呢?
以下虽然都是10,但是这3个10占用三块不同的内存空间。
System.out.println(10);
System.out.println(10);
System.out.println(10);
⭐️总结:只有“字面量”机制的话,是远远不够的,因为只有字面量内存是无法重复利用的
🏀2.变量
// 定义、声明一个变量,起名i
int i = 1000;
System.out.println(i);
System.out.println(i);
System.out.println(i);
⭐️以上这3次访问都是访问的同一块内存空间。这样使用变量之后,内存空间就得到了复用;这就是定义变量的好处!
🥅变量的概述
❤️什么是变量?
⭐️变量其实就是内存当中存储数据的最基本的单元。
⭐️变量就是一个存储数据的盒子。❤️在java语言当中任何数据都是有数据类型的,其中整数型是:int;浮点型:double等
❤️数据类型有什么用呢?
⭐️注:不同的数据类型,在内存中分配的空间大小不同。
⭐️也就是说,Java虚拟机到底给这个数据分配多大的空间,主要还是看这个变量的数据类型。根据不同的类型,分配不同大小的空间。❤️对于int这种整数类型,JVM会自动给int分配4个字节大小的空间。
⭐️1个字节=8个比特位;1个比特位就是一个1或0。
⭐️注意:比特位是二进制位。所以1个int占有32个二进制位(bit位)
⭐️int i = 1; 实际上在内存中是这样表示的:00000000 00000000 00000000 00000001❤️对于一个变量来说,包括三要素:类型+名字+值;例如:int i = 10
⭐️变量的数据类型;类型决定空间的大小。
⭐️变量的名字; 名字是为了以后方便访问。
⭐️变量中保存的值;值是变量保存的数据。❤️变量名属于标识符
⭐️首字母小写,后面每个单词首字母大写,遵循驼峰命名方式,见名知意。⭐️例如:int i = 10;int nianLing = 20
❤️变量怎么声明/定义,语法格式是什么?
⭐️数据类型 变量名; 例如:int nianLing;
⭐️在java语言中有一个规定,变量必须先声明,再赋值才能访问。
(没有值相当于这个空间没有开辟)
⭐️例如:
public class Var{
public static void main(String[] args){
//1.先声明,在赋值
int nianLing;
nianLing = 20;
System.out.println(nianLing);//20
//还可以继续重新赋值
nianLing = 80;
System.out.println(nianLing);//80
//2.边声明,边赋值
int weight = 70;
System.out.println(weight);//70
}
}
🥅变量的使用、分类和作用域
❤️先理解域的含义
{A域
{B域
{C域
}
}
}
⭐️一个大括号代表一个域。
⭐️在“同一个域”当中,变量名不能重名!并且在当前域定义的变量,出了这个域就销毁了。
❤️例1:
public class VarTest03{
public static void main(String[] args){
// 在这里可以访问k变量吗?
// 注意:方法体当中的代码遵循自上而下的顺序依次逐行执行。
// 所以以下程序编译报错。
System.out.println(k); //错误: 找不到符号
// 只有执行了这一行代码,k变量在内存中才会开辟空间。
int k = 10;
}
}
⭐️对于一个变量我们一定要先声明再赋值,才能够访问;所以一定要注意代码运行的顺序!
⭐️这里主要掌握报错的信息!错误: 找不到符号;这样以后编写代码出现相同的错误就会知道问题所在!
补充:编译所有的.java文件,javac *.java
❤️例2:
// 重要的结论:在同一个域当中,变量名不能重名,不能重复声明。
// 变量可以重新赋值,但在同一个域当中,不能重复声明。
public class VarTest04{
public static void main(String[] args){
// 声明一个整数型的变量起名nianLing,存储值20
int nianLing = 20;
System.out.println(nianLing);
// 给变量重新赋值
nianLing = 30;
System.out.println(nianLing);
// 错误信息:错误: 已在方法 main(String[])中定义了变量 nianLing
int nianLing = 100;
System.out.println(nianLing); //err,是在同一个方法体重定义相同的变量
}
}
在同一个域中,可以对同一个变量进行重新赋值;但是不能重新定义相同的变量名!
❤️例3:
// 编译报错:类型不同,i变量也不能重复。(和类型没有关系。不能同名。)
public class VarTest05{
public static void main(String[] args){
// 整数型
int i = 100;
System.out.println(i);
// 浮点型(带小数的)
// 错误: 已在方法 main(String[])中定义了变量 i
double i = 1.2;
System.out.println(i);//err
}
}
计算时不同的类型,也不能定义相同的变量名!总之要杜绝定义相同的变量名!
❤️例4:
// 一行上可以同时声明多个变量
public class VarTest06{
public static void main(String[] args){
// 声明三个变量,都是int类型,起名a,b,c
// 通过测试得出结论是:a,b没有赋值,c赋值100
int a, b, c = 100;
//1.错误: 可能尚未初始化变量a
System.out.println(a);//未初始化,编译器会报错
//2.错误: 可能尚未初始化变量b
System.out.println(b);//未初始化,编译器会报错
//3.正确
System.out.println(c);
// 给a、b赋值,然后才可以调用
a = 200;
b = 300;
System.out.println(a);//初始化后就可以正常访问了
System.out.println(b);//初始化后就可以正常访问了
}
}
⭐️可以一行声明多个变量,变量与变量之间用逗号隔开,最后以分号结尾
⭐️例如:int a,b,c=10; 表示定义三个整型变量,但是只有c初始化赋值了可以直接调用;a和b要想使用必须先初始化一个值,才能被调用!
❤️例5:
(1)变量根据出现的位置进行划分:
在方法体当中声明的变量:局部变量。
类体内声明,在方法体之外的变量:成员变量。
(2)注意:局部变量只在方法体当中有效,方法体执行结束该变量的内存就释放了。
public class VarTest07{
//1.在类体重声明:成员变量
int i = 100; // 整个类中都有效
// 主方法
public static void main(String[] args){
//2.在方法体重声明:局部变量
int k = 100; // 在方法体中声明,main方法结束k内存空间释放。
}
}
⭐️变量主要分分为两种:成员变量和局部变量
在类体内,方法体之外声明的是:成员变量;成员变量又分为:实例变量和静态变量
在方法体内声明的是:局部变量,并且局部变量只在当前的方法体中有效;
public class Test {
//1类体中声明---成员变量-----默认会赋初始值
//1.1没有static修饰---实例变量
int x;
//1.2有static修饰---静态变量
static int y;
public static void main(String[] args) {
//2.方法体中声明---局部变量-----默认不会赋初始值
//局部变量---直接就能访问
int i = 10;
System.out.println(i);
//实列变量---需要new对象才能能访问
Test t = new Test();
System.out.println(t.x);
//静态变量---可以直接用“类名.”进行访问
System.out.println(Test.y);//因为是本类当中,所以Test还可以省略
}
}
❤️例6:就近原则(成员变量和局部变量)
(1)变量的有效范围:出了大括号(当前作用域)就销毁了
(2)java中有一个很重要的原则:就近原则
public class VarTest08{
//1.定义在类体中:成员变量
static int i = 10000;
public static void main(String[] args){
//2.定义在方法体中:局部变量
//i的有效范围是main方法
int i = 100;
System.out.println(i); //100,就近原则
}
//这个方法怎么定义,后面会学习。
public static void x(){
//3.定义在方法体中:局部变量
//i的有效范围x方法
//所以这个i和main方法中的i不在同一个域当中。不冲突!
int i = 200;
}
//4.在for循环里定义变量,n作用域只在for域
for(int n = 0; n < 10; n++){
}
// for循环执行结束之后,在这里访问n变量可以吗?
System.out.println(n); //错误: 找不到符号,不能继续访问n
//这里声明的n变量只属于for域。for结束后n释放没了。
//5.在for循环外定义变量,作用域实际上在main域
int k = 0;
for(k = 0; k < 10; k++){
}
System.out.println(k);//可以继续访问k
//这里就能正常访问
}
⭐️定义子在类中体的变量(成员变量)和定义在方法体中的变量(局部变量),就算变量名相同,也不会冲突;可以正常编译。
⭐️定义在不同方法体中的相同变量,也不会冲突;可以正常编译。
⭐️对于成员变量和局部变量,根据就近原则,优先访问局部变量。
🥅小试牛刀
❤️输出学生信息包括:学号、姓名、性别、身高
public class Stu{
public static void main(String[] args){
//学号,定义整型用int
int number = 1234;
System.out.println("学号:"+number);//+号,类似于两个字符串进行拼接
//姓名,定义为字符串型String
String name = "张三";
System.out.println("姓名:"+name);
//性别,定义为字符型char
char sex = '男';
System.out.println("性别:"+sex);
//身高,定义为浮点型height
double height = 1.85;
System.out.println("身高:"+height);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/128512.html