zoukankan      html  css  js  c++  java
  • 我想和你们说说java和C++___C加加

    头痛头痛之一:

    java里面,本质上来说,一个类是一个程序员定义的类型,类是一种引用类型(reference type),这意味着该类类型的变量都可以引用该类的一个实例。从表面上,对象引用变量中似乎存放了一个对象,但事实上,它只是包含了对该对象的引用。严格来讲,对象引用变量和对象是不同的,对象(new Person()),对象引用变量(Person p)。但大多数情况下,这种差异是可以忽略的。因此,可以简单地说p是一个Person对象,而不用冗长地描述说,p是一个包含对Person对象引用的变量。-----java基础篇P278

    所以,Person p;   p.a = 2; 这样是不行的,因为这个时候p还没指向任何内存。是null

    所以需要Person p = new Person();

    相反,C++直接 Person p; 即可调用p.a = 2;

    头痛头痛之二:

    java里面的方法,

        public void fuck(final StringBuilder str) {
            str.append("haha");
        }

    这样的final只是说,不能改变str,也就是str不能指向其他地方,还是可以修改它指向的内容的。比如上面是ok的,会修改的

    但是C++

    void fun(const char * str) 

    就已经表明,str的内容是不可变的,至于指向,本来就是值拷贝,改变了对我影响不到的。只是在函数中临时改变

     再比如

    void fun(char * const str) {
        str[0] = '0';
    }

    指针常量,表明这个指针是一个常量,不可以再改变指向了,但是这个时候还是可以修改它指向的那块内存的值的。

    注意:这个时候那块内存需要存在,如果你的是char * str = "liuweiming",这样它一更改还是会报错的,因为不能更改字符串常量

    字符串常量保存在代码区

    所以很大的区别就是final string str,表明的和const char * str不同

    void fun(char * const str) {    str[0] = '0';}

    头痛头痛之三、

    java中的类,默认类型,也就是什么都不写,也不算private的,只是说明其是包私有而已,同个包的还是能访问。

    C++/C#中的类,默认类型,是private的,就是什么都不写,就不能访问了。

  • 相关阅读:
    react 有多个按钮时点击单个按钮独立控制Loading
    React路由通信
    体育竞技模拟比赛
    json与csv格式相互转换
    替换表格内容及csv转html及CGI
    excel转换成csv格式
    文件读写笔记
    自定义手绘风
    numpy&matplotlib读书笔记
    Python成绩雷达图
  • 原文地址:https://www.cnblogs.com/liuweimingcprogram/p/7815933.html
Copyright © 2011-2022 走看看