数据类型&变量&表达式总结

发布时间 2023-12-28 20:44:33作者: ZWJAS

总结

数据类型转换

  1. 概念:数据从一种数据类型转换为另外一种类型

  2. 为什么需要数据类型转换?

    • 节约内存空间

    • 业务需要

  3. java中的数据类型转换分类

    • 向上转型:从小范围的数据转换为大范围的数据类型,自动发生

      byte b = 10; // 局部变量
      short s = b; // 发生数据类型转换,向上转型 1、将b的值10由byte类型转换short类型 2、再将转换后short类型的10赋值变量s
      int n = s;
      long l = n;
      

    float f = l;
    double d = f;

 
 - 向下转型:从大范围的数据类型转换为小范围的数据类型,强制执行

    *          向下转型会降低精度
    *          也会发生数据溢出
 
   ```java
   double d = 3.14;
   int a = (int)d; // 发生向下转换,把d的数据3.14由double转换为int
   System.out.println(a);
 ```java
  int num = -120;
  byte b = (byte)num; // 发生数据溢出
  System.out.println(b);
 ```

将一个变量的值赋值另一个变量

等号左边只能一个变量名,等号的右边可以是常量,也可以是变量

int ggAge; // 声明一个哥哥的年龄变量
ggAge = 20; // 将20这个常量赋值变量ggAge
int mmAge; // 声明一个妹妹的年龄变量
mmAge = ggAge; // 将ggAge变量里面值赋值,mmAge变量

变量的使用

  • 直接使用变量名,其实就是使用变量里面数据

     int age;
    // 为age赋值
    age = 18;
    // 使用变量age,打印
    System.out.println(age); // 使用age变量,其实是使用age里面值(18)
    
  • 拼接字符串:+
    +:两边只要字符串(常量、变量),那么+就是拼接符
    3 + "5":+就是拼接符,拼接后的结果是String,35

    • "3" + 5:35
      3 + 5:8

    • String a = "5";

    • 3 + a:35

int age = 18;
// 使用字符串的拼接
System.out.println("年龄:" + age);

变量其他知识点

 int age = 18; // 声明和赋值可以连写
String color = "红色"; // 第一次赋值也叫初始化
 // 声明同种类型的多个变量
int a = 10, b = 20, c = 30, d;
int f;
System.out.println(f); // 报错,变量没有赋值,所有变量必须要赋值以后才可以使用

数据类型

  • 基本数据类型:整型,默认值0,浮点型,默认值 0.0,字符类型,默认值 ' ':空字符,布尔类型,默认值 false
  • 引用类型:默认值 null,String的默认null

变量的分类

  1. 局部变量:在方法里面声明变量就是局部变量
    使用范围(作用域):方法{}范围内,在哪个方法中声明,就只能在这个方法中使 用
    局部变量是没有默认值的
    局部变量存在栈内存中

  2. 成员变量:在方法外面声明的变量
    使用范围:在这个类所有的方法里面都可以用
    成员变量都有默认值,跟数据类型有关
    成员变量保存堆内存中

  3. 程序使用变量的顺序是:就近原则

    ​ 先局部,后成员。

public class VariableDemo6 {
    static int age = 20; // 成员变量
    public static void main(String[] args) {
        int age = 18; // 这个age就是局部变量
        // 程序使用变量的顺序是:就近原则
        System.out.println(age);
    }

}

表达式

  • 概念:java中的一个算术式

    eg:1 + 2

  • 表达式的运算规律

    • 在一个表达式中数据类型范围小于int,会发生向上转型,转到int
    • 在一个表达式中如果高于int数据类型,小范围会向上转型为大范围
    • 高于int类型的范围如果类型一样,也不会发生类型转换
byte a = 1;
byte b = 2;
// byte sum = a + b;  报错:a,b会向上转型为int,所以结果是int类型,用byte来接受会报错
---------------------------------------
int sum = a + b;//正确应该要用int类型来接收
short s = 1;
// s = s + 1; 报错:s会向上转型为int,所以结果是int类型,用short来接受会报错
---------------------------------------
int a = 1;
long l = 2L;
long sum = a + l; // l是高于int的范围,所以a会发生数据类型向上转型
---------------------------------------
byte a = 2;
//char b = a; 报错:char类型范围为0~xxx,byte类型范围为-128~127,char类型范围并未完全包括byte类型范围,所以不会自动向上转型,用short来接受会报错