zoukankan      html  css  js  c++  java
  • java基本数据类型和引用数据类型

    基本数据类型

    基本数据类型是CPU可以直接进行运算的类型。Java定义了以下几种基本数据类型:

    • 整数类型:byte,short,int,long

    • 浮点数类型:float,double

    • 字符类型:char

    • 布尔类型:boolean

    引用类型

    除了上述基本类型的变量,剩下的都是引用类型。例如,引用类型最常用的就是String字符串:

    String s = "hello"

    引用类型的变量类似于C语言的指针,它内部存储一个“地址”,指向某个对象在内存的位置。

    Java的字符串除了是一个引用类型外,还有个重要特点,就是字符串不可变。考察以下代码:

    public class Main {
      public static void main(String[] args) {
        String s = "hello";
        System.out.println(s); // 显示 hello
        s = "world";
        System.out.println(s); // 显示 world
      }
    }

    观察执行结果,难道字符串s变了吗?其实变的不是字符串,而是变量s的“指向”。

    执行String s = "hello";时,JVM虚拟机先创建字符串"hello",然后,把字符串变量s指向它:

          s
          │
          ▼
    ┌───┬───────────┬───┐
    │   │  "hello"  │   │
    └───┴───────────┴───┘
    

    紧接着,执行s = "world";时,JVM虚拟机先创建字符串"world",然后,把字符串变量s指向它:

          s ──────────────┐
                          │
                          ▼
    ┌───┬───────────┬───┬───────────┬───┐
    │   │  "hello"  │   │  "world"  │   │
    └───┴───────────┴───┴───────────┴───┘
    

    原来的字符串"hello"还在,只是我们无法通过变量s访问它而已。因此,字符串的不可变是指字符串内容不可变。

  • 相关阅读:
    要求两个条件都为假时,执行某些操作
    Celery + RabbitMq 示意图
    关于消息队列的好文章
    django related_name, on_delete
    Celery 图,[转]
    django model 中 meta子类详解
    django 自定义app
    python __dict__
    Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)【转】
    scala private
  • 原文地址:https://www.cnblogs.com/JercanYu/p/14723060.html
Copyright © 2011-2022 走看看