C++ Java Go 数据类型及引用类型

C++ Java Go 数据类型及引用类型,第1张

C++ Java Go 数据类型引用类型 引入

在C++、Java、Go中,我们使用的数据大致相同、但 *** 作有不同,本篇就这几种语言数据中的一些使用不同之处做一个总结和介绍

常用数据类型 基本类型

整型、浮点型、布尔型等

派生类型

数组等

自定义结构体

如Book

三种语言使用数据 C++

C属于相对于其他两者更底层的一种语言,也是最开放的一种语言。用过Java就知道,Java中的对象都是采用的引用类型,简单说就是每一个对象变量存的实际是一个地址,这个地址中记录的东西才是真正我们要的内容(属性值、方法)。而在C++中如果声明了一个类的对象,那么这个变量存的就是我们的属性值和方法,如果我们把这个对象通过传参给另一个方法执行,那这个方法收到的对象并不是我们之前的对象,而是重新克隆了一个完全一样的对象来 *** 作

void work(set param){
    cout << "param add ="  << ¶m << endl ;
}
int main() {
    setsave;
    work(save);
    cout << "save add =" << &save<< endl ;
    return 0;
    
}

也正因为C++有指针这个概念,所以只要你不主动用指针,你的任何变量都不是是一个引用类型(指针类型),当然数据这种东西要除外,因为他就是靠连续地址来工作的。

Java

Java为了降低学习者的学习成本,就对指针这个概念进行了弱化,但Java用指针比其他任何语言都要多。其体现在你的所有类都是采用的引用类型,也就是说你声明的对象变量存的是地址,如果你把这个变量通过传参到另一个方法,也就传的是地址,所以另一个方法中 *** 作的也是你之前那一个变量,这里是和C++很大不同的地方。

public class Main {
    public static void work(Sets){
        s.add(2);
    }
    public static void main(String[] args) {
        Set s = new HashSet();
        s.add(1);
        work(s);
        System.out.println(s); // [1, 2]

    }
}


Go

刚刚接触到Go,可能对Go还不是很了解,但Go在这个方面给我的感觉和C++很相似,因为他有了指针这个东西,所以也基本是我们不用指针就不会出现引用类型,比如我们自定义了一个类Book,那么我们声明的Book对象就不是引用类型,函数传参也是克隆的一个完全一样的新对象。但需要注意的是,Go把map这个数据结构整合进了语言本身,使用map不需要依赖于其他的包,这和list等需要依赖其他包不同。但Go的map和切片(就是数组)一样,是一个引用类型,大概是因为底层实现也是数组的原因把。

小结
  • Java作为一个没有指针的语言,除了基本数据类型外全是引用类型,因为你没法自己定义指针来使用,甚至你可以让你的所有变量都是引用类型(使用基本类型的包装类)
  • C++和Go有指针这个概率,所以所有的数据包括对象都可以不是引用类型,如果你想让它是引用类型可以使用new(type)来接收,但有一点不同就是对于map这个数据结构由于Go本身就实现了它,所以它和数组一样,规定了需要一个地址,所以它是引用类型。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4950130.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存