前言

java 和 js 中,数据类型的个人总结,了解堆内存和栈内存,引用数据类型和基本数据类型的关系

一、Java

1.1 概述

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

  • 内置数据类型
  • 引用数据类型

    1.2 内置数据类型

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

    1.3 引用数据类型

    特殊的引用数据类型:String类型,比其他的引用类型多了一个公共池的概念
    创建:两种方式
    1. String a = "hello";
    2. String b = new String("hello");
    String 创建的字符串存储在公共池中,而 new 创建的字符串对象在堆上:
    1. String s1 = "Runoob"; // String 直接创建
    2. String s2 = "Runoob"; // String 直接创建
    3. String s3 = s1; // 相同引用
    4. String s4 = new String("Runoob"); // String 对象创建
    5. String s5 = new String("Runoob"); // String 对象创建
    java、js 数据类型 - 图2

    二、JS

    JS语言提供了六种基本类型
    值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。
    引用数据类型:对象(Object)、数组(Array)、函数(Function)。

    注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。

小洁

1、java 有八种数据类型,js 只有六种
2、String 类型在 java 中不是基本数据类型,在 js 中是的。
基本数据类型的值是按值访问的。
引用类型的值是按引用访问的。
== 在基本数据类型中比较的是值,在引用数据类型中比较的是引用

==euqals
  1. ==比较两个对象在内存里是不是同一个对象,就是说在内存里的存储位置一致。 两个String对象存储的值是一样的,但有可能在内存里存储在不同的地方。
  2. == 比较的是引用而equals方法比较的是内容。
    public boolean equals(Object obj)这个方法是由Object对象提供的,可以由子类进行重写。默认的实现只有当对象和自身进行比较时才会返回true,这个时候和==是等价的。String, BitSet, Date,和File都对equals方法进行了重写,对两个String对象而言,相等意味着它们包含同样的字符序列。对于基本类型的包装类说,值相等意味着对应的基本类型的值一样。
    1. public class Test2 {
    2. public static void main(String[] args) {
    3. String a = "hello";
    4. String c = "hello";
    5. String b = new String("hello");
    6. String d = a;
    7. d = "h";
    8. System.out.println(a == b); //false
    9. System.out.println(a.equals(b)); //true
    10. System.out.println(a == c); //true
    11. System.out.println(a.equals(c)); //true
    12. System.out.println(a == d); //true
    13. System.out.println(a.equals(d)); //true
    14. System.out.println("a = " + a); //hello
    15. System.out.println("b = " + b); //hello
    16. System.out.println("c = " + c); //hello
    17. System.out.println("d = " + d); //h
    18. }
    19. }