前言
java 和 js 中,数据类型的个人总结,了解堆内存和栈内存,引用数据类型和基本数据类型的关系
一、Java
1.1 概述
变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。
内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。
因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。
Java 的两大数据类型:
- 内置数据类型
- 引用数据类型
1.2 内置数据类型
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。byte、int、short、long、double、float、char、Boolean
1.3 引用数据类型
特殊的引用数据类型:String类型,比其他的引用类型多了一个公共池的概念
创建:两种方式
String 创建的字符串存储在公共池中,而 new 创建的字符串对象在堆上:String a = "hello";
String b = new String("hello");
String s1 = "Runoob"; // String 直接创建
String s2 = "Runoob"; // String 直接创建
String s3 = s1; // 相同引用
String s4 = new String("Runoob"); // String 对象创建
String s5 = new String("Runoob"); // String 对象创建
二、JS
JS语言提供了六种基本类型
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。
引用数据类型:对象(Object)、数组(Array)、函数(Function)。注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。
小洁
1、java 有八种数据类型,js 只有六种
2、String 类型在 java 中不是基本数据类型,在 js 中是的。
基本数据类型的值是按值访问的。
引用类型的值是按引用访问的。==
在基本数据类型中比较的是值,在引用数据类型中比较的是引用
==
和 euqals
==
比较两个对象在内存里是不是同一个对象,就是说在内存里的存储位置一致。 两个String对象存储的值是一样的,但有可能在内存里存储在不同的地方。==
比较的是引用而equals方法比较的是内容。public boolean equals(Object obj)
这个方法是由Object对象提供的,可以由子类进行重写。默认的实现只有当对象和自身进行比较时才会返回true,这个时候和==是等价的。String, BitSet, Date,和File都对equals方法进行了重写,对两个String对象而言,值相等意味着它们包含同样的字符序列。对于基本类型的包装类说,值相等意味着对应的基本类型的值一样。public class Test2 {
public static void main(String[] args) {
String a = "hello";
String c = "hello";
String b = new String("hello");
String d = a;
d = "h";
System.out.println(a == b); //false
System.out.println(a.equals(b)); //true
System.out.println(a == c); //true
System.out.println(a.equals(c)); //true
System.out.println(a == d); //true
System.out.println(a.equals(d)); //true
System.out.println("a = " + a); //hello
System.out.println("b = " + b); //hello
System.out.println("c = " + c); //hello
System.out.println("d = " + d); //h
}
}