Java零基础(第三课)---》变量

 

知识框架

编辑

🏀1.字面量(数据)

❤️关于程序当中的数据
      ⭐️软件在处理数据之前需要能够表示数据,在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:

/*
    变量根据出现的位置进行划分:
        在方法体当中声明的变量:局部变量。
        类体内声明,在方法体之外的变量:成员变量。
    注意:局部变量只在方法体当中有效,方法体执行结束该变量的内存就释放了。
*/
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:就近原则(成员变量和局部变量)

/*
变量的有效范围:出了大括号(当前作用域)就销毁了
java中有一个很重要的原则:
            就近原则:哪个离我近,就访问哪个。
           (不仅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);
        
    }
}

编辑


#java#
全部评论
量变的知识点
点赞 回复 分享
发布于 2022-08-29 13:39 河南

相关推荐

05-12 16:04
已编辑
江西财经大学 Java
点赞 评论 收藏
分享
05-26 09:07
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
06-20 14:27
中山大学 C++
rt,day3就开始接需求
星际探神:你就想 你是水货他们都没面出来 他们也水 管他呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务