【Java基础-第四课】变量

概要

Java是一种强类型的编程语言,变量是程序中非常重要的概念之一。在Java中,变量用于存储和表示数据,是程序中的基本构建块。本篇博客将深入介绍Java变量的相关知识,帮助读者更好地理解和运用这一概念。
在这里插入图片描述

课程目标

通过本课的学习,你将了解到Java中变量的概念,包括变量的定义、声明、数据类型、赋值、分类等。
在这里插入图片描述

定义与声明

变量的定义是: 用来命名一个数据的标识符。
例如:2023 这是一个数字,代表2023年,如果需要用一个标识符表示这个数字,在java中会写成:

int year = 2023;
// int 表示数据类型
// year是变量名(标识符)
// = 是赋值符号
// 2023 表示变量的值
// ; 在java中分号表示一行代码结束

Java变量的命名规则和规范

在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下:

type identifier [ = value][, identifier [= value] ...] ;

格式说明:

type – 数据类型(基本数据类型、引用数据类型)。
identifier – 是变量名,可以使用逗号 , 隔开来声明多个同类型变量。

变量的声明和初始化

以下列出了一些变量的声明实例。注意有些包含了初始化过程。

int a, b, c;         // 声明三个int型整数:a、 b、c
int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值
byte z = 22;         // 声明并初始化 z
String s = "runoob";  // 声明并初始化字符串 s
double pi = 3.14159; // 声明了双精度浮点型变量 pi
char x = 'x';        // 声明变量 x 的值是字符 'x'。

基本数据类型

变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。
内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。
在这里插入图片描述
因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。
Java 的两大数据类型:

  • 基本数据类型
  • 引用数据类型

基本数据类型

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

  • byte:一字节,取值范围-128-127,默认为0;
// 把100赋值给类型为byte的变量a
byte a = 100;
  • short:2字节,默认值是 0;
// 把数字1000赋值给变量s
short s = 1000;
  • int:4字节,默认值是 0 ;
// 把数字100000赋值给变量a
int a = 100000;
  • long:8字节,默认是0L;
// 把数字100000赋值给变量a
long a = 100000L;
  • float:4字节,默认值是0.0f;
float f = 234.5f;
float f = 234.5F;
  • double:8字节,默认0.0d;
// double初始化有两种写法
double d = 0.5;
double d = 0.5d;
  • boolean:一字节,默认false;
boolean one = true
  • char:2字节,默认值’u0000’;
char letter = 'A';

引用数据类型

  • 在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。
  • 对象、数组都是引用数据类型。
  • 所有引用类型的默认值都是null。
  • 一个引用变量可以用来引用任何与之兼容的类型。
// str变量引用常量池中的字符串“Hello world”
String str = "Hello world";

类型转换

不同的数据类型在特定情况下可以相互转换。

自动转换

转换从低级到高级。
在这里插入图片描述
数据类型转换必须满足如下规则:

  1. 不能对boolean类型进行类型转换。

  2. 不能把对象类型转换成不相关类的对象。

  3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。

  4. 转换过程中可能导致溢出或损失精度,例如:

// 因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。
int i =128;   
byte b = (byte)i;
  1. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:
(int)23.7 == 23;        
(int)-45.89f == -45;

必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。

public class ZiDongLeiZhuan{
        public static void main(String[] args){
            char c1='a';//定义一个char类型
            int i1 = c1;//char自动类型转换为int
            System.out.println("char自动类型转换为int后的值等于"+i1);
            char c2 = 'A';//定义一个char类型
            int i2 = c2+1;//char 类型和 int 类型计算
            System.out.println("char类型和int计算后的值等于"+i2);
        }
}

运行结果为:

char自动类型转换为int后的值等于97
char类型和int计算后的值等于66

解析:c1 的值为字符 a ,查 ASCII 码表可知对应的 int 类型值为 97, A 对应值为 65,所以 i2=65+1=66。

强制转换
  1. 条件是转换的数据类型必须是兼容的。

  2. 格式:(type)value type是要强制类型转换后的数据类型 实例:

public class QiangZhiZhuanHuan{
    public static void main(String[] args){
        int i1 = 123;
        byte b = (byte)i1;//强制类型转换为byte
        System.out.println("int强制类型转换为byte后的值等于"+b);
    }
}

运行结果:

int强制类型转换为byte后的值等于123
隐含强制类型转换
  1. 整数的默认类型是 int。

  2. 小数默认是 double 类型浮点型,在定义 float 类型时必须在数字后面跟上 F 或者 f。

赋值和操作

变量的赋值和引用

赋值只得是给变量赋予一个数值或者字符(串);像这样:

// 给变量a赋值
int i = 100;
// 引用变量a并输出到控制台
System.out.println(a);

表示把数字100 赋予变量i;
"="不是等于号而是赋值的意思,在java中“==”表示数学中的等于号;

变量的运算

变量的运算,则是通过一系列的运算符对变量进行运算;像这样:

// 变量赋值
int i = 100;
// 变量加1
// i++ 表示i = i+1;
i++;
// 输出计算后的变量值
System.out.println(a);

变量类型

局部变量

局部变量(Local Variables):定义在方法、构造方法或语句块中的变量,作用域只限于当前方法、构造方法或语句块中。局部变量必须在使用前声明,并且不能被访问修饰符修饰。

成员变量

成员变量(Instance Variables):定义在类中、方法之外的变量,作用域为整个类,可以被类中的任何方法、构造方法和语句块访问。成员变量可以被访问修饰符修饰。

静态变量

静态变量(Class Variables):定义在类中、方法之外的变量,并且使用 static 关键字修饰,作用域为整个类,可以被类中的任何方法、构造方法和语句块访问,静态变量的值在程序运行期间只有一个副本。静态变量可以被访问修饰符修饰。

参数变量

参数变量(Parameters):方法定义时声明的变量,作为调用该方法时传递给方法的值。参数变量的作用域只限于方法内部。

以下实例中定义了一个 RunoobTest 类,其中包含了一个成员变量 instanceVar 和一个静态变量 staticVar。method() 方法中定义了一个参数变量 paramVar 和一个局部变量 localVar。在方法内部,我们将局部变量的值赋给成员变量,将参数变量的值赋给静态变量,然后打印出这些变量的值。
在 main() 方法中,我们创建了一个 RunoobTest 对象,并调用了它的 method() 方法。

public class RunoobTest {
    // 成员变量
    private int instanceVar;
    // 静态变量
    private static int staticVar;
    
    public void method(int paramVar) {
        // 局部变量
        int localVar = 10;
        
        // 使用变量
        instanceVar = localVar;
        staticVar = paramVar;
        
        System.out.println("成员变量: " + instanceVar);
        System.out.println("静态变量: " + staticVar);
        System.out.println("参数变量: " + paramVar);
        System.out.println("局部变量: " + localVar);
    }
    
    public static void main(String[] args) {
        RunoobTest v = new RunoobTest();
        v.method(20);
    }
}

总结:

Java变量是编程中必不可少的概念,通过本篇博客的学习,我们了解了变量的定义和声明、数据类型、赋值和操作、作用域和访问权限,以及常量和变量的区别。掌握这些知识,我们可以更好地运用变量来存储和表示数据,使程序更灵活、可读性更高。同时,我们也要注意变量的合理命名和作用域的控制,以提高代码的可维护性和可扩展性。
希望本篇博客对读者有所帮助,增进对Java变量的理解,同时也能激发更多的学习和探索。编程世界中,变量是我们最常接触的概念之一,不断学习和运用变量,将帮助我们更好地开发出高质量的软件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值